119 lines
1.8 KiB
C++
119 lines
1.8 KiB
C++
#define m1a 9
|
|
#define m1b 2
|
|
#define m2a 10
|
|
#define m2b 3
|
|
#define m3 11
|
|
#define fc1 18 //4
|
|
#define fc2 19 //5
|
|
#define f_iz 0
|
|
#define f_der 1
|
|
#define f_cen 2
|
|
#define t_cen 3
|
|
|
|
boolean flag_der = false;
|
|
boolean flag_izq = false;
|
|
|
|
void setup() {
|
|
|
|
Serial.begin(57600);
|
|
pinMode(m1a, OUTPUT);
|
|
pinMode(m2a, OUTPUT);
|
|
pinMode(m1b, OUTPUT);
|
|
pinMode(m2b, OUTPUT);
|
|
pinMode(m3, OUTPUT);
|
|
pinMode(fc1, INPUT);
|
|
pinMode(fc2, INPUT);
|
|
digitalWrite(m1a, LOW);
|
|
digitalWrite(m2a, LOW);
|
|
digitalWrite(fc1, HIGH);
|
|
digitalWrite(fc2, HIGH);
|
|
digitalWrite(m1b, LOW);
|
|
digitalWrite(m2b, LOW);
|
|
|
|
stop_motores();
|
|
|
|
}
|
|
|
|
void loop() {
|
|
|
|
if (Serial.available())
|
|
{
|
|
char valor = Serial.read();
|
|
if (valor == 'w') avanza();
|
|
else if (valor == 's') retrocede();
|
|
else if ( (valor == 'a') && (!flag_der) ) izquierda();
|
|
else if ( (valor == 'd') && (!flag_izq) ) derecha();
|
|
else if (valor == 'p') stop_motores();
|
|
|
|
}
|
|
|
|
Serial.print("fc1 ");
|
|
Serial.print(digitalRead(fc1));
|
|
Serial.print("fc2 ");
|
|
Serial.println(digitalRead(fc2));
|
|
|
|
|
|
if( !digitalRead(fc2) && !flag_der )
|
|
{
|
|
flag_der = true;
|
|
motor1(0,0);
|
|
}
|
|
else if (digitalRead(fc2))
|
|
flag_der = false;
|
|
|
|
if( !digitalRead(fc1) && !flag_izq )
|
|
{
|
|
flag_izq = true;
|
|
motor1(0,0);
|
|
}
|
|
else if (!digitalRead(fc1))
|
|
flag_izq = false;
|
|
|
|
|
|
}
|
|
|
|
void cabeza(int c)
|
|
{
|
|
digitalWrite(m3, c);
|
|
}
|
|
|
|
|
|
void stop_motores()
|
|
{
|
|
motor2(0,0);
|
|
motor1(0,0);
|
|
cabeza(0);
|
|
}
|
|
|
|
void retrocede ()
|
|
{
|
|
motor2(1,0);
|
|
}
|
|
|
|
void avanza ()
|
|
{
|
|
motor2(0,1);
|
|
}
|
|
|
|
void derecha()
|
|
{
|
|
motor1(1,0);
|
|
}
|
|
|
|
void izquierda()
|
|
{
|
|
motor1(0,1);
|
|
}
|
|
|
|
void motor1 (boolean sent, boolean sent1) {
|
|
digitalWrite(m1a, sent);
|
|
digitalWrite(m1b, sent1);
|
|
}
|
|
|
|
void motor2 (boolean sent, boolean sent1) {
|
|
digitalWrite(m2a, sent);
|
|
digitalWrite(m2b, sent1);
|
|
}
|
|
|
|
|