Buenos días:
- He comenzado no hace mucho, en esto del mundo Arduino y he realizado, con ayuda de tutoriales y leer en foros mi primer proyecto "serio". Un simple coche manejado con Joystick.
Lo que pretendo con mi pregunta, es, que me guieis, en la continuación del programa.
Quiero que una led encendida, sea una condición para que yo, pueda manejar el coche con el joystick.
Y al pulsar paro, se pare y no pueda manejar el joystick.
He leído por otros foros y demás, que este tipo de condiciones, se pueden hacer, con un Arduino DUE. No estoy del todo seguro de que solo con este se pueda hacer.
Yo dispongo de UNO y Mega.
He realizado el siguiente programa y creo que si se puede hacer algo, es en la programación del void loop.
Adjunto mi programa
int MarchaCa = 2;// marcha de carretilla
int Paro =3;//paro de carretilla
int LEDOpera =8;//objetivo para que funcione esta led encendida
int enA = 9; //definir las variables de los motores
int in1 =7;
int in2 = 6;
int enB = 10;
int in3 = 5;
int in4 = 4;
int motorASpeed =0;//variables motor
int motorBSpeed =0;
int joyVert = A0;//joystick vertical
int joyHori = A1;//joystick horizontal
//
int joyposVert = 0;//lectura del joystick vertical
int joyposHori = 0;//lectura del joystik en horizontal
void setup (){
inMode (MarchaCa,INPUT);
pinMode (LEDOpera,OUTPUT);
digitalWrite (LEDOpera,LOW);
pinMode (enA,OUTPUT);//definimos como salidas las variables de
pinMode (in1,OUTPUT);
pinMode (in2,OUTPUT);
pinMode (enB,OUTPUT);//los motores A y B
pinMode (in3,OUTPUT);
pinMode (in4,OUTPUT);
digitalWrite (enA,LOW);//para el motorA al principio
digitalWrite (in1,HIGH);
digitalWrite (in2,LOW);
digitalWrite (enB,LOW);//para el motorB al principio
digitalWrite (in3,HIGH);
digitalWrite (in4,LOW);
}
void loop(){
{
{
if (digitalRead (MarchaCa)==LOW);// marcha del programa
{
delay (1000);//espera antes de enceder led
digitalWrite (LEDOpera,HIGH);//encedido de la led
}
if (digitalRead (Paro)==LOW);//paro de la led
(digitalWrite (LEDOpera,LOW));
}
joyposVert = analogRead (joyVert);//estado del joystick
joyposHori = analogRead (joyHori);//estado del joystick
//AQUI ME ESTA FALTANDO ALGO QUE DE PRIORIDAD AL LED QUE NO SE REALIZAR. UN POCO MAS ARRIBA, PERDON
if (joyposVert < 550)//en reposo en joyposVer
{
digitalWrite (in1,LOW);
digitalWrite (in2,LOW);
digitalWrite (in3,LOW);
digitalWrite (in4,LOW);
}
if (joyposVert <= 55)//giro izquierda
{
digitalWrite (in1,LOW);
digitalWrite (in2,LOW);
digitalWrite (in3,LOW);
digitalWrite (in4,HIGH);
}
if (joyposVert >= 550)//giro derecha
{
digitalWrite (in1,LOW);
digitalWrite (in2,HIGH);
digitalWrite (in3,LOW);
digitalWrite (in4,LOW);
}
if (joyposHori < 50)//a delante
{
digitalWrite (in1,LOW);
digitalWrite (in2,HIGH);
digitalWrite (in3,LOW);
digitalWrite (in4,HIGH);
}
if (joyposHori >= 560)//atrás
{
digitalWrite (in1,HIGH);
digitalWrite (in2,LOW);
digitalWrite (in3,HIGH);
digitalWrite (in4,LOW);
}
}}