Autor Tema: comparar dos entradas que tiene conectado dos pulsadores y motor en salida b  (Leído 2425 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
hola tengo un proyecto navideño que estoy aciendo no se como hacer que cuando compare el estado de dos pulsadores conectados  al puerto a0 y a1 del pic 16f84a  
lo que necesito es que siel motor jira hasta accionar el pulsador de a0 se de buelba al sentido contrario hasta que accione el pulsador conectado en a1 y sedebuelba en unciclo infinito  ya que solo debe jirar en 180grados los pulsadores estan conectados al principio y al final de este recorrido en fin es muñeco que jira sin dar buelta completa  sino media buelta
ejemplo como mober lacabeza de lado a lado sin boltear
les agrdesco ejemplo de como hacer este jugute navideño nosoy  nada esperto con pic

#include <16F84.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#use delay(clock=4000000)
void main()
{
while(1)
{
if(input(PIN_A0)==0&&input(PIN_A1)==1)
{
output_high(pin_b0);
output_low(pin_b1);
}
else
{
output_high(pin_b1);
output_low(pin_b0);
}
}
}

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: comparar dos entradas que tiene conectado dos pulsadores y motor en salida b
« Respuesta #1 en: 25 de Noviembre de 2011, 12:29:15 »
Hola underwol2:
              Y cual es tu duda o problema? Pudiste compilar el código? Ya hiciste pruebas con el circuito?
Seteaste los tris para configurar los puertos como entradas y salidas?

   set_tris_a(0xff);           //todo el puerto A como entradas
   set_tris_b(0x00);          //todo el puerto B como salidas

                Saludos.
                  Jukinch
 
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: comparar dos entradas que tiene conectado dos pulsadores y motor en salida b
« Respuesta #2 en: 25 de Noviembre de 2011, 13:58:14 »
no ecolocado las otras partes del codigo para que no que de tan largo lla que boy a contolar 3 moteres con y gual funcion  mi duda o lo que quiero solucionar es que cuando se acciona el pulsador el motor  se de buelbe y solo mientras haiga accionado el pulsador des pues de eso regresa a jirar para el mismo lado que toco el pulsador en pocas palabras se mantiene pegado accionado solo un pulsador de un lado
una solucion seria ponerle un delay para que sedemore corriendo en una sola direccion  hasta que accione el otro pulsador
pero como es un muñeco que jira de un lado al otro lo unico que lo hace de bolber son lo fines de carrera ( pulsadores) me gustaria que el programa jire hacia algun lado y cuando se accione el fin de carrera borre delay o alguntiempo extra que se le haya colocado hasta llegar a  ese fin de carrera para que se de buelba asta el otro fin de carrera que esta al atro extremo y aga lomismo  infinitamente 
miduda es que si le pongo un delay solo se guiria corriendo en una direccion hasta que termine de decremnetar el tiempo que sele asigno
y el punto es que cundo accione el fin decarrera se debuelba de una y hasta que accione el otro fin de carrera y aga lo mismo
 

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: comparar dos entradas que tiene conectado dos pulsadores y motor en salida b
« Respuesta #3 en: 25 de Noviembre de 2011, 15:51:44 »
¿Algo como esto?

Si boton_izquierda
    Cambiar giro hacia la derecha
O si boton_derecha
    Cambiar giro hacia la izquierda
O si ningún botón
    No hacer nada (la dirección queda como está)

Cuando se pulsa uno de los botones, estableces la salida, y no la vuelves a modificar hasta que se pulse el otro botón.
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: comparar dos entradas que tiene conectado dos pulsadores y motor en salida b
« Respuesta #4 en: 25 de Noviembre de 2011, 16:03:54 »
Cuando encendés el circuito ya arranca moviendo el motor para un costado? O abría que activar el movimiento.
Otro tema a tener en cuenta es el rebote de los pulsadores. Habría que poner un delay de 20ms una vez que sea pulsado. Para que no se generen falsas pulsaciones.
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: comparar dos entradas que tiene conectado dos pulsadores y motor en salida b
« Respuesta #5 en: 26 de Noviembre de 2011, 01:12:52 »
muchas gracias un amigo que entendia mas de codigo c me alludo con el programa lo  estoy analizando lo soluciono arrancando los motores  de una ves utilizando ! diferencia entre  los dos pulsos que controlan el jiro derecha izquierda  des pues con unos if controlo lo de los pulsadores  con unas variables  cargadas con byte ,hasta el momento simulado funciona estoy estudiando el codigo para agregarle otras funciones que requiere el muñeco de nieve  esus jiros ya que no e controlado la cabeza ya que no tiene fin de carrera y no loquiero ver jirando la cabeza como manitico en lugar de se yamativo asustaria

gracias atodos porsu colaboracion   

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: comparar dos entradas que tiene conectado dos pulsadores y motor en salida b
« Respuesta #6 en: 03 de Diciembre de 2011, 00:09:46 »
tengo el codigo no lo habia   probado porque  no tenia echo el circuito
 esta presentando un problema que simulado en proteus funciona bien al grabarlo al  pic 16f873a solo ejecuta hacia un lado y no sedebuelbe al pulsar el fin de carrera

 el puerto a como entrada y el puerto b de salida  tambien loprobe y sigue igual el puente  h esta en buenas condiciones  probado manual mente y responde vien las direcciones de los motores

#include <16F873a.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading

#use delay(clock=4000000)
 
 byte s, r,c;
 
 void motor_1(s)
 {
   output_bit(pin_b0, s);
   output_bit(pin_b1, !s);
 }
 
 void motor_2(r)
 {
   output_bit(pin_b2, r);
   output_bit(pin_b3, !r);
 }
 
  void motor_3(c)
 {
   output_bit(pin_b4, c);
   output_bit(pin_b5, !c);
 }
 void main()
 {
 while (true)
 {
   if (input(pin_a0)==1)
    {
     s = 1;
      }
   if (input(pin_a1)==1)
    {
      s = 0;
       }
   if (input(pin_a2)==1)
    {
     r = 1;
      }
   if (input(pin_a3)==1)
    {
      r = 0;
       }
      
        if (input(pin_a4)==1)
    {
     c = 1;
      }
   if (input(pin_a5)==1)
    {
      c = 0;
       }
      motor_1(s);
      motor_2(r);
      motor_3(c);
      
 }

}
« Última modificación: 03 de Diciembre de 2011, 01:58:51 por underwol2 »

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: comparar dos entradas que tiene conectado dos pulsadores y motor en salida b
« Respuesta #7 en: 03 de Diciembre de 2011, 14:58:53 »
hola lla en contre el problem aes pic viejo que estaba usando lo tenia de hacer pruebas estaba dañado
en salle el codigo con un 16f877a y funciono vien

gracias las personas que se interesaron sobre todo al amigo  juan manuel que me alludo con el codigo