elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  Arduino, proteus, motor y dos finales de carrera...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Arduino, proteus, motor y dos finales de carrera...  (Leído 6,382 veces)
jgarridc

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Arduino, proteus, motor y dos finales de carrera...
« en: 7 Abril 2016, 10:30 am »

Hola buenas a tod@s, el tema es que he montado en proteus un arduino con un motor y dos finales de carrera, al meter desde el terminal virtual unos comandos el programa hará una cosa u otra y según como estén los finales de carrera, pues lo mismo. El problema me viene a una vez que el programa ha terminado, si pulso los finales de carrera o envío un comando por el terminal virtual ya no me hace caso.
Lo que pretendo es que esté en un buble infinito y el arduino siga ejecutando el programa, hasta que yo decida pararlo o lo desconecte de la corriente...

Código:
const byte giroMotorDerecha = 8;
const byte giroMotorIzquierda = 12;
const byte sensorDerecha = 11;
const byte sensorIzquierda = 10;
char valor;
bool switchDer, switchIzq, mIzq, mDer;

void setup() {
  pinMode(giroMotorDerecha, OUTPUT);
  pinMode(giroMotorIzquierda, OUTPUT);
  pinMode(sensorDerecha, INPUT);
  pinMode(sensorIzquierda, INPUT);
  Serial.begin(9600); // inicializa comunicación serie
}

void loop() {
 
  switchDer = digitalRead(sensorDerecha);
  switchIzq = digitalRead(sensorIzquierda);
  mIzq = digitalRead(giroMotorIzquierda);
  mDer = digitalRead(giroMotorDerecha);

  // Leo del puerto serie la orden enviada Devuelve 'r', 'd', 'i'
  if (Serial.available() > 0)
     valor = Serial.read();

 
     
          if (switchDer)  // paroMotorDerecha
          digitalWrite(giroMotorDerecha, LOW);
     
          if (switchIzq) // paroMotorIzquierda
          digitalWrite(giroMotorIzquierda, LOW);
       
 
     
if (valor == 'r' && !switchDer && !switchIzq)
     digitalWrite(giroMotorDerecha, HIGH);
             
if (valor == 'd' && switchIzq && !switchDer)
     digitalWrite(giroMotorDerecha, HIGH);
         

if (valor == 'i' && switchDer && !switchIzq)
    digitalWrite(giroMotorIzquierda, HIGH);
             
                 
}


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Arduino, proteus, motor y dos finales de carrera...
« Respuesta #1 en: 7 Abril 2016, 15:16 pm »

lo que está en void loop() debería repetirse eternamente, así funciona... no será que le estás exigiendo demasiada corriente al arduino y se apaga?

puedes pasar la imagen de lo que tienes armado en proteus?


« Última modificación: 7 Abril 2016, 15:20 pm por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
jgarridc

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Arduino, proteus, motor y dos finales de carrera...
« Respuesta #2 en: 7 Abril 2016, 15:18 pm »

Es todo sobre proteus, de momento no he montado nada físico....pero en la simulación pasa como he descrito...

Proteus: https://www.dropbox.com/s/ofmymx0bm0advxt/prueba%20finales%20de%20carrera1.pdsprj?dl=0

Arduino: https://www.dropbox.com/s/uwg3ad5f7i3ultr/prueba%20finales%20de%20carrera.ino?dl=0
« Última modificación: 7 Abril 2016, 15:30 pm por jgarridc » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Arduino, proteus, motor y dos finales de carrera...
« Respuesta #3 en: 7 Abril 2016, 15:39 pm »

puedes pasar la imagen de lo que tienes armado en proteus?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
jgarridc

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Arduino, proteus, motor y dos finales de carrera...
« Respuesta #4 en: 7 Abril 2016, 15:50 pm »

« Última modificación: 7 Abril 2016, 16:50 pm por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Arduino, proteus, motor y dos finales de carrera...
« Respuesta #5 en: 7 Abril 2016, 16:53 pm »

no veo nada que pueda causar el error, puede ser inherente a la simulación
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
jgarridc

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Arduino, proteus, motor y dos finales de carrera...
« Respuesta #6 en: 7 Abril 2016, 17:21 pm »

En cuanto pueda lo monto en la protoboard y lo compruebo físicamente, mucha gracias.
En línea

Minusfour_cierralo_o_baneamefull


Desconectado Desconectado

Mensajes: 571


Ver Perfil
Re: Arduino, proteus, motor y dos finales de carrera...
« Respuesta #7 en: 10 Abril 2016, 01:28 am »

El proteus es un poco castaña, prueba algo sencillo para ver si te funciona el puerto serial.
Enciende un led.

Si el puerto serie no te funciona se quedará como tu dices, llega un momento que no hace nada.


Te faltan los corchetes. El primer if va entre llaves con el resto de if para que puedan ver la variable valor. Pruebalo a ver.

Código:
void loop() {
 
  switchDer = digitalRead(sensorDerecha);
  switchIzq = digitalRead(sensorIzquierda);
  mIzq = digitalRead(giroMotorIzquierda);
  mDer = digitalRead(giroMotorDerecha);

  // Leo del puerto serie la orden enviada Devuelve 'r', 'd', 'i'
  if (Serial.available() > 0){
     valor = Serial.read();

 
     
          if (switchDer)  // paroMotorDerecha{
          digitalWrite(giroMotorDerecha, LOW);
          }
          if (switchIzq) // paroMotorIzquierda{
          digitalWrite(giroMotorIzquierda, LOW);
          }
 
     
         if (valor == 'r' && !switchDer && !switchIzq){
         digitalWrite(giroMotorDerecha, HIGH);
         }       
         if (valor == 'd' && switchIzq && !switchDer){
         digitalWrite(giroMotorDerecha, HIGH);
         }   

         if (valor == 'i' && switchDer && !switchIzq){
         digitalWrite(giroMotorIzquierda, HIGH);
         }         
  }               
}


« Última modificación: 10 Abril 2016, 01:40 am por Bundor » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
tutorial proteus
Electrónica
master_zgz 0 4,422 Último mensaje 22 Diciembre 2004, 17:36 pm
por master_zgz
VDD y VSS en Proteus
Electrónica
doherty 1 8,522 Último mensaje 3 Septiembre 2007, 00:09 am
por Thaorius
Motor y arduino
Electrónica
@synthesize 2 4,502 Último mensaje 1 Junio 2010, 13:28 pm
por Debci
que motor puedo usar (arduino)
Electrónica
priorigi_10 3 3,884 Último mensaje 18 Marzo 2014, 00:06 am
por priorigi_10
mover un servo motor desde python a arduino
Programación General
Walter872 3 3,936 Último mensaje 20 Abril 2019, 14:27 pm
por yuimugi912
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines