Hola, ante todo me presento. Me llamo Isidro, tengo 16 años y soy de Cádiz. Hace unos meses me compré una placa Arduino Duemilanove. He hecho varios proyectos simples, como que se encienda un led cuando no haya luz, una alarma láser, etc.
Mi duda la planteo ahora, quiero manejar 4 motores DC, de 3V cada uno. Ya me he montado mi circuito con 2 L293D. Los motores los quiero controlar manualmente, me explico: quiero que al pulsar una tecla, por ejemplo 'A', el motor 1 se mueva en una dirección, y que al soltar la tecla 'A' se detenga. Consigo controlar los motores con el monitor serial, pero no me gusta tener que estar pulsando un rato la 'A', luego darle a 'ENTER' y si quiero que se pare darle a otra tecla.
He creado este código, funcionar me funciona, pero no como yo quiero :
int enable11Pin = 2;
int enable12Pin = 3;
int enable21Pin = 4;
int enable22Pin = 5;
int motor11Pin = 6;
int motor12Pin = 7;
int motor21Pin = 8;
int motor22Pin = 9;
int motor31Pin = 10;
int motor32Pin = 11;
int motor41Pin = 12;
int motor42Pin = 13;
void setup() {
pinMode(enable11Pin, OUTPUT);
pinMode(enable12Pin, OUTPUT);
pinMode(enable21Pin, OUTPUT);
pinMode(enable22Pin, OUTPUT);
pinMode(motor11Pin, OUTPUT);
pinMode(motor12Pin, OUTPUT);
pinMode(motor21Pin, OUTPUT);
pinMode(motor22Pin, OUTPUT);
pinMode(motor31Pin, OUTPUT);
pinMode(motor32Pin, OUTPUT);
pinMode(motor41Pin, OUTPUT);
pinMode(motor42Pin, OUTPUT);
Serial.begin(9600);
Serial.println("Arduino Motor Control");
Serial.println("Pulsa 'A' o 'D' para el motor 1");
Serial.println("Pulsa 'W' o 'S' para el motor 2");
Serial.println("Pulsa 'Z' o 'X' para el motor 3");
Serial.println("Pulsa 'Q' o 'E' para el motor 4");
Serial.println();
}
void loop() {
digitalWrite(enable11Pin, OUTPUT);
digitalWrite(enable12Pin, OUTPUT);
digitalWrite(enable21Pin, OUTPUT);
digitalWrite(enable22Pin, OUTPUT);
//las letras las pongo en codigo ASCII
if(Serial.read() == 97) {digitalWrite(motor11Pin, HIGH);
digitalWrite(motor12Pin, LOW);}
if(Serial.read() == 100) {digitalWrite(motor11Pin, LOW);
digitalWrite(motor12Pin, HIGH);}
if(Serial.read() == 99) {digitalWrite(motor11Pin, LOW);
digitalWrite(motor12Pin, LOW);}
if(Serial.read() == 119) {digitalWrite(motor21Pin, HIGH);
digitalWrite(motor22Pin, LOW);}
if(Serial.read() == 115) {digitalWrite(motor21Pin, LOW);
digitalWrite(motor22Pin, HIGH);}
if(Serial.read() == 118) {digitalWrite(motor21Pin, LOW);
digitalWrite(motor22Pin, LOW);}
if(Serial.read() == 122) {digitalWrite(motor31Pin, HIGH);
digitalWrite(motor32Pin, LOW);}
if(Serial.read() == 120) {digitalWrite(motor31Pin, LOW);
digitalWrite(motor32Pin, HIGH);}
if(Serial.read() == 98) {digitalWrite(motor31Pin, LOW);
digitalWrite(motor32Pin, LOW);}
if(Serial.read() == 113) {digitalWrite(motor41Pin, HIGH);
digitalWrite(motor42Pin, LOW);}
if(Serial.read() == 101) {digitalWrite(motor41Pin, LOW);
digitalWrite(motor42Pin, HIGH);}
if(Serial.read() == 110) {digitalWrite(motor41Pin, LOW);
digitalWrite(motor42Pin, LOW);}
}
Gracias