Paso 3: código
[código]Versión 3.0 por Owen Sobel
Este programa se utiliza para controlar un robot mediante una aplicación que se comunica con Arduino a través de un módulo bluetooth.
Tabla de códigos de error: Código 01; Turnradius es superior a la velocidad; Código 02; Velocidad es superior a 255;
#define //L298n 5 in1 los pasadores de conductor del Motor.
#define in2 6
#define in3 10
#define in4 11
#define LED 13
int comando; Int para almacenar el estado del comando de la aplicación.
int velocidad = 204; 0 - 255.
int Speedsec;
int buttonState = 0;
int lastButtonState = 0;
int Turnradius = 0; Establece el radio de giro, 0 - 255 Nota: el robot funcionará incorrectamente si ésta es mayor que int velocidad.
int brakeTime = 45;
int brkonoff = 1; 1 para el sistema de frenado electrónico, 0 normal.
void setup() {}
pinMode (in1, salida);
pinMode (in2, salida);
pinMode (in3, salida);
pinMode (in4, salida);
pinMode (LED, salida); Configurar el pin del LED.
Serial.Begin(9600); Establece la velocidad en baudios en el módulo de Bluetooth.
}
void loop() {}
Si (Serial.available() > 0) {}
comando = Serial.read();
STOP(); Inicializar con motor detenido.
interruptor (comando) {}
caso 'F':
Forward();
rotura;
caso 'B':
Back();
rotura;
caso 'L':
Left();
rotura;
caso 'R':
Right();
rotura;
caso 'G':
forwardleft();
rotura;
caso 'I':
forwardright();
rotura;
caso 'H':
backleft();
rotura;
caso 'J':
backright();
rotura;
caso '0':
Velocidad = 100;
rotura;
caso '1':
Velocidad = 140;
rotura;
caso '2':
Velocidad = 153;
rotura;
Case '3':
Velocidad = 165;
rotura;
caso '4':
Velocidad = 178;
rotura;
caso '5':
Velocidad = 191;
rotura;
caso '6':
Velocidad = 204;
rotura;
caso '7':
Velocidad = 216;
rotura;
caso '8':
Velocidad = 229;
rotura;
caso '9':
Velocidad = 242;
rotura;
caso 'q':
Velocidad = 255;
rotura;
}
Speedsec = Turnradius;
Si (brkonoff == 1) {}
brakeOn();
} else {}
brakeOff();
}
}
}
{} void forward()
analogWrite (in1, velocidad);
analogWrite (in3, velocidad);
}
{} void back()
analogWrite (in2, velocidad);
analogWrite (in4, velocidad);
}
left() vacío {}
analogWrite (in3, velocidad);
analogWrite (in2, velocidad);
}
right() vacío {}
analogWrite (in4, velocidad);
analogWrite (in1, velocidad);
}
void forwardleft() {}
analogWrite (in1, Speedsec);
analogWrite (in3, velocidad);
}
void forwardright() {}
analogWrite (in1, velocidad);
analogWrite (in3, Speedsec);
}
void backright() {}
analogWrite (in2, velocidad);
analogWrite (in4, Speedsec);
}
void backleft() {}
analogWrite (in2, Speedsec);
analogWrite (in4, velocidad);
}
void Stop() {}
analogWrite (1, 0);
analogWrite (in2, 0);
analogWrite (in3, 0);
analogWrite (in4, 0);
}
void brakeOn() {}
Aquí es el uso futuro: un sistema frenado electrónico.
leer la entrada pulsador de pin:
buttonState = comando;
Comparar la buttonState a su estado anterior
Si (buttonState! = lastButtonState) {}
Si el estado ha cambiado, incrementar el contador
Si (lastButtonState == 'F') {}
Si (buttonState == de ') {}
Back();
Delay(brakeTime);
STOP();
}
}
Si (lastButtonState == 'B') {}
Si (buttonState == de ') {}
Forward();
Delay(brakeTime);
STOP();
}
}
Si (lastButtonState == 'L') {}
Si (buttonState == de ') {}
Right();
Delay(brakeTime);
STOP();
}
}
Si (lastButtonState == 'R') {}
Si (buttonState == de ') {}
Left();
Delay(brakeTime);
STOP();
}
}
}
guardar el estado actual como el último estado,
para la próxima vez a través del lazo
lastButtonState = buttonState;
}
void brakeOff() {}
}
[/ code]