Autor
|
Tema: Arduino, proteus, motor y dos finales de carrera... (Leído 6,535 veces)
|
jgarridc
Desconectado
Mensajes: 11
|
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... 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
|
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
Mensajes: 11
|
|
|
« Última modificación: 7 Abril 2016, 15:30 pm por jgarridc »
|
En línea
|
|
|
|
engel lex
|
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
Mensajes: 11
|
|
|
« Última modificación: 7 Abril 2016, 16:50 pm por engel lex »
|
En línea
|
|
|
|
engel lex
|
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
Mensajes: 11
|
En cuanto pueda lo monto en la protoboard y lo compruebo físicamente, mucha gracias.
|
|
|
En línea
|
|
|
|
Minusfour_cierralo_o_baneamefull
Desconectado
Mensajes: 571
|
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. 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
tutorial proteus
Electrónica
|
master_zgz
|
0
|
4,457
|
22 Diciembre 2004, 17:36 pm
por master_zgz
|
|
|
VDD y VSS en Proteus
Electrónica
|
doherty
|
1
|
8,622
|
3 Septiembre 2007, 00:09 am
por Thaorius
|
|
|
Motor y arduino
Electrónica
|
@synthesize
|
2
|
4,539
|
1 Junio 2010, 13:28 pm
por Debci
|
|
|
que motor puedo usar (arduino)
Electrónica
|
priorigi_10
|
3
|
3,920
|
18 Marzo 2014, 00:06 am
por priorigi_10
|
|
|
mover un servo motor desde python a arduino
Programación General
|
Walter872
|
3
|
4,016
|
20 Abril 2019, 14:27 pm
por yuimugi912
|
|