TODOPIC
Misceláneas - Interés General => Compra / Venta => Mensaje iniciado por: linkfer18 en 01 de Abril de 2011, 00:15:15
-
hola qien me puede ayudar a hacer un programa es mi exam pero me lo dejaron de hy en un dia pa otro y ps como q no le agrro el pex es un microchip PICF18445O
lo q by a usar es un dipswich de 8 pines un dipswich de 2 y un push boton 2 motores
1..al primer botonaso me tiene q registrar con del dip de 2 el sentido ya sea derecha izq
2..al seguno botonaso me tiene q registrar el numero de vueltas q va dar es de 1 al 7
3..el tercero ps ya echa andar me podrias ayudar te lo pagaria neta q ya me desespere kise agarra de base uno q ya tenia pero me salen errores en el mplab es q la neta tengo prog pero no me qda te dejo mi correo se mi puedes acesorar o decir como es alf_fer_8@hotmail.com
-
Creo que todos sabemos que no te lo dejaron de un día para otro XD, en fin, todos hemos pasado alguna vez por eso.
Solo te pido que por favor escribas correctamente, para que la comunicación sea más clara.
Como que hay unos puntos que no se entienden muy bien, ¿tienes que controlar 2 motores?, si as así, ¿Cada uno tiene que ir en un sentido diferente?, ¿De qué tipo de motores hablas?, ¿de corriente directa?, ¿a pasos?, ¿ya tienes los drivers para controlarlos?.
Por lo que entendí necesitas algo así como una máquina de estados, que dependiendo tus entradas, sean los pasos a seguir.
Suponiendo que ya tienes los drivers de los motores, y que estos solo necesitan 2 pines para su control, que serían paso y dirección, puedes hacerlo asi:
#define IZQUIERDA 01000000 // Primera posición en el dip de 2
#define DERECHA 10000000 // Segunda posicion en el dip
#define BOTON PIN_C0 // El pin donde está tu botón
#define SENTIDO PIN_C1 // Pin de control para el sentido
#define ON_OFF PIN_C2 // Pin para encender-apagar el motor
int1 boton_flag=0; // Bandera para saber si se presionó el botón
int8 boton_level=0; // Variable para saber cuantas pulsaciones lleva
int8 sentido_dip; // Variable para capturar el valor del Dipswitch de posicion
int8 dip_no_vueltas; // Variable para capturar el estado del dip de 8
int8 no_vueltas; // Variable para decirle a los motores el no. de vueltas
// Con esta parte no te puedo ayudar mucho, ya que solo tu sabes de que forma funcionan tus motores
// y sabes con cuantos pulsos dan una revolución completa, asi que por ejemplo, si tu motor es a pasos
// y da una revolución con 200 pulsos, solo multiplicas el valor de esta variable por 200 y tendras
// tus revoluciones que quieras.
void main()
{
while(TRUE) //Ciclo infinito
{
if(BOTON==1&&flag_boton==0) // Testea el estado del boton y ve que la bandera este desactivada
{
delay_ms(50); // Retardo antirebotes
if(BOTON==1) // Confirma que fue una pulsación firme
{
flag_boton=1; // Pone en alto la bandera para hacer la acción una sola vez al presionar el boton
switch(boton_level)
{
case 0: // Primera pulsacion - determinar el sentido de giro
sentido_dip=(input_C()&11000000); // Suponiendo que el Dipswitch de dos posiciones lo tienes
// conectado a los pines C7 y C6, haces una operacion
// booleana "AND" con el puerto C completo para dejar en
// la variable solamente esos dos pines.
if(sentido_dip==IZQUIERDA) output_high(SENTIDO); // Si el dip está en 01, se activa la salida
// SENTIDO, con lo cuál hiria a la izquierda
if(sentido_dip==DERECHA) output_low(SENTIDO); // Si el dip está en 10, se desactiva la salida
// SENTIDO, con lo cuál hiria a la derecha
break;
case 1: // Segunda pulsación - numero de vueltas
no_vueltas=input_B(); // Se guarda el valor del Dipswitch de 8, suponiendo que está conectado
// al puerto B, en la variable no_vueltas
switch(dip_no_vueltas) // Supongo que el Dip lo vas a tomar como que solo uno de los ocho deberá
// estar activado y será el numero de vueltas no?
{
case(00000001) // 1 vuelta
no_vueltas=1;
break;
. .
. // Aqui van las otras 5 posibles combinaciones
.
case(01000000) // 7 vueltas
no_vueltas=7;
break;
}
case 2: // Tercera pulsacion - hechar a andar el motor
output_high(ON_OFF); // Se prende el motor
// Aquí faltaría el código para que sepas cuantos pulsos es una revolución,
// Despues de terminar los pulsos, apagas el motor o simplemente dejas
output_low(ON_OFF); // de dar pulsos
boton_level=0; // Reseteas el contador de pulsos para otro ciclo
}
}
}
if(BOTON==0&&flag_boton==1) flag_boton==0; // Testea que ya se haya terminado de presionar el boton para volver a
// resetear la bandera
}
}
Esta es la forma más facil, la otra sería usando Timers e interrupciones.
Como te podrás dar cuenta va a estar muy difícil que alguien te lo haga completo, ya que solo el que tiene el Hardware, sabe los toques finales que hacen falta, pero básicamente de esta forma lo podrías hacer, espero haberte ayudado un poco.
-
mira neta q me lo dejo hya el profe se aloko yo ya tenia uno q hacia eso de girar izquieda derecha pero en una sola salida y lo q quiero es como sacarla en diferentes salidas una izq y una derecha y los motores son a pasos y aparte el dip de 8 es para darle cuantas vueltas va dar el mor me dio un rango de 1 a 8 ps ya deperdida q me sqe lo de los motores en diferentes salidas
include<P18F4550.inc>
config FOSC=XTPLL_XT
config PLLDIV=1
config CPUDIV=OSC1_PLL2
config PWRT=ON
config BOR=OFF
config WDT=OFF
config MCLRE=ON
config LVP=OFF
config CP0=OFF
config CP1=OFF
config CP2=OFF
config CP3=OFF
config CPD=OFF
CBLOCK 00H
PDel0
PDel1
contador
conteo
ENDC
org 00H
goto inicio
PDelay movlw .154 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop1 movlw .243 ; 1 set number of repetitions (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 goto PDelL3 ; 2 cycles delay
PDelL3
decfsz PDel1, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 cycles delay
PDelL5 clrwdt ; 1 cycle delay
return ; 2+2 Done
inicio
movlw 0FH
movwf ADCON1
clrf TRISB
movlw 01H
movwf TRISA
movlw 01H
movwf TRISB
clrf PORTB
guru
clrf contador
pp
btfsc PORTA,0
goto pelos
goto vueltaA
pelos
btfsc PORTC,0
goto pp
goto vueltaB
vueltaA
rcall PDelay
movlw b'00001100'
movwf PORTB
rcall PDelay
movlw b'00000110'
movwf PORTB
rcall PDelay
movlw b'00000011'
movwf PORTB
rcall PDelay
movlw b'00001001'
movwf PORTB
incf contador
movlw .25
movwf conteo
movf contador,W
CPFSEQ conteo
goto vueltaA
clrf PORTB
goto guru
vueltaB
rcall PDelay
movlw b'00001001'
movwf PORTB
rcall PDelay
movlw b'00000011'
movwf PORTB
rcall PDelay
movlw b'00000110'
movwf PORTB
rcall PDelay
movlw b'00001100'
movwf PORTB
incf contador
movlw .25
movwf conteo
movf contador,W
CPFSEQ conteo
goto vueltaB
clrf PORTB
goto guru
END
-
Y cuanto pensas pagar al q te haga la tarea?? (lo digo porq este es el foro de compra/venta).
-
Me lleva!, por eso POR FAVOR les pido de la manera más atenta que pongan que lenguaje están ocupando, ya que me tarde como media hora en hacer un codigo para este tipo en C, para que resulte que el está programando en ensamblador :5]!!!!!! Por cierto, ¡¡¡¡DE NADA!!!!
-
Y cuanto pensas pagar al q te haga la tarea?? (lo digo porq este es el foro de compra/venta).
uu tenia q salir el payaso pa eso son los foros no de ando pidiendo ayuda si te ofendes pa q te molestas la neta y ps esty pidiendo ayuda si superia ps ya lo hubiera echo prel al neta no
-
Me lleva!, por eso POR FAVOR les pido de la manera más atenta que pongan que lenguaje están ocupando, ya que me tarde como media hora en hacer un codigo para este tipo en C, para que resulte que el está programando en ensamblador :5]!!!!!! Por cierto, ¡¡¡¡DE NADA!!!!
no te enojes compa no fue mi intencion neta q ando bn sacado de pex se agradece toda la ayuda de corazon ps yo creo q ya valio pero ni modo y chido por ayudarme neta q no fui mi intencion ofenderlos
-
no te enojes compa no fue mi intencion neta q ando bn sacado de pex se agradece toda la ayuda de corazon ps yo creo q ya valio pero ni modo y chido por ayudarme neta q no fui mi intencion ofenderlos
Ok, no te preocupes, fueron mis 5 minutos, pues que lástima que ya no tengas mas tiempo, y en el futuro trata de explicar mejor tu idea y el lenguaje que usas. Suerte!
-
no te enojes compa no fue mi intencion neta q ando bn sacado de pex se agradece toda la ayuda de corazon ps yo creo q ya valio pero ni modo y chido por ayudarme neta q no fui mi intencion ofenderlos
Ok, no te preocupes, fueron mis 5 minutos, pues que lástima que ya no tengas mas tiempo, y en el futuro trata de explicar mejor tu idea y el lenguaje que usas. Suerte!
ps tengo hasta mañana pa entregarlo pero la neta ando bn perdido ya con q prendiera los motores ya pa q diaga q hice algo
-
no te enojes compa no fue mi intencion neta q ando bn sacado de pex se agradece toda la ayuda de corazon ps yo creo q ya valio pero ni modo y chido por ayudarme neta q no fui mi intencion ofenderlos
Ok, no te preocupes, fueron mis 5 minutos, pues que lástima que ya no tengas mas tiempo, y en el futuro trata de explicar mejor tu idea y el lenguaje que usas. Suerte!
ps tengo hasta mañana pa entregarlo pero la neta ando bn perdido ya con q prendiera los motores ya pa q diaga q hice algo
no me podras ayudar solo a modificandole de 1 salida a 2 salidas q me imprima motr izquierdo y motor derecho ya lo demas ps haber q me dice
-
no me podras ayudar solo a modificandole de 1 salida a 2 salidas q me imprima motr izquierdo y motor derecho ya lo demas ps haber q me dice
Lo siento pero se muy poco de ensamblador - :(
-
Y cuanto pensas pagar al q te haga la tarea?? (lo digo porq este es el foro de compra/venta).
uu tenia q salir el payaso pa eso son los foros no de ando pidiendo ayuda si te ofendes pa q te molestas la neta y ps esty pidiendo ayuda si superia ps ya lo hubiera echo prel al neta no
Asi cualquiera te ayuda, espera que ya vienen los superheroes.
-
Y cuanto pensas pagar al q te haga la tarea?? (lo digo porq este es el foro de compra/venta).
uu tenia q salir el payaso pa eso son los foros no de ando pidiendo ayuda si te ofendes pa q te molestas la neta y ps esty pidiendo ayuda si superia ps ya lo hubiera echo prel al neta no
Si pensas q los foros son para que te hagan tus tareas estas equivocado.
Fijate si ESTUDIANDO podes hacer vos mismo tus tareas.
Y aprende a escribir en español.
-
Y a ser respetuoso
-
la pregunta de Gera es válida.
linkfer18 estás posteando en el foro de compra/venta. en este subforo no se regala nada!!
:shock:
-
él no posteó en este subforo, le movieron el post porque no correspondía dónde lo había hecho...
...que tonto me siento poniendo yo los acentos y las "h" :? estoy de acuerdo con fontanarrosa con que no es tan grave si una palabra va con "v" o con "b" si se entiende igual, el problema es cuando no se entiende nada de nada.
Algo sí se entendió, que anda bien perdido, ni al pic le acertó.