Paso 16: programación
Aquí está el código utiliza debería ser explicativo si vas a través de él:
#include < AFMotor.h >
#include < SoftwareSerial.h > Puerto de serie de //Software#include < Servo.h >
Servo myservo;
mySpeed int;
int turretAngle;
char val;
char prevAction;
Motor_1(1) de AF_DCMotor;
Motor_2(2) de AF_DCMotor;
Motor_3(3) de AF_DCMotor;
Motor_4(4) de AF_DCMotor;#define rojo A0
#define sistema A1
#define RxD A5 / / este es el pin que transmitirá el Bluetooth (BT_TX) para Arduino (RxD)
#define TxD A4SoftwareSerial blueToothSerial(RxD,TxD);
int switchVal;
bool funcionando;void setup() {}
Serial.Begin(9600); Permitir la comunicación Serial vía cable USB al ordenador (si procede)
pinMode (RxD, entrada); Configurar el Arduino para recibir la señal de la pantalla bluetooth Digital 6 Pin
pinMode (TxD, salida); Configurar el Arduino para enviar los datos (salida) a la pantalla bluetooth en Digital Pin 7
pinMode(13,OUTPUT); Utiliza LED a bordo si es necesario.
pinMode (rojo, salida);
pinMode(SET,INPUT_PULLUP);
blueToothSerial.begin(9600);
turretAngle = 90;
switchVal = alto;
mySpeed = 255;
encender motor
SetSpeed ();
myservo.Attach(9);
Operaciones;
}
void loop() {}
int sensorVal = digitalRead(SET);
Si (sensorVal == LOW)
{
correr =! funcionamiento;
¿digitalWrite (rojo, corriendo? HIGH:LOW);
retardo (400);
}
Si (true)
{
if(blueToothSerial.Available())
{
Val = blueToothSerial.read();
Serial.Print(Val); Imprimir el carácter recibido en el Serial Monitor (si es necesario)
prevAction = val;
Si (val == 'F') //fwd
{
SetSpeed();
Forward();
}
else if (val == 'L') //left
{
SetSpeed();
Left();
}
else if (val == 'R') //right
{
SetSpeed();
Right();
}
else if (val == 'B') //reverse
{
SetSpeed();
REVERSE();
}
else if (val == de ') / / top
{
Operaciones;
}
else if (val == 'G') / / NW
{
NorthWest();
}
else if (val == 'I') / / NE
{
NorthEast();
}
else if (val == 'J') / / SE
{
SouthEast();
}
else if (val == 'H') / / SW
{
SouthWest();
}
else if (val == '1') / / velocidad
{
mySpeed = 255/10;
}
else if (val == '2') / / velocidad
{
mySpeed = 255/10 * 2;
}
else if (val == '3') / / velocidad
{
mySpeed = 255/10 * 3;
}
else if (val == '4') / / velocidad 1
{
mySpeed = 255/10 * 4;
}
else if (val == '5') / / velocidad 1
{
mySpeed = 255/10 * 5;
}
else if (val == '6') / / velocidad 1
{
mySpeed = 255/10 * 6;
}
else if (val == '7') / / velocidad 1
{
mySpeed = 255/10 * 7;
}
else if (val == '8') / / velocidad 1
{
mySpeed = 255/10 * 8;
}
else if (val == '9') / / velocidad 1
{
mySpeed = 255/10 * 9;
}
else if (val == 'q') / / velocidad 1
{
mySpeed = 255;
}
else if (val == 'X' || val == 'x')
{
REVERSE();
Delay(50);
Forward();
Delay(50);
Operaciones;
}
else if (val == 'V' || val == 'v')
{
correr =! funcionamiento;
¿digitalWrite (rojo, corriendo? HIGH:LOW);
}
}
otra cosa
{
Si (val == 'W')
{
TurretLeft();
}
else if (val == 'U')
{
TurretRight();
}
}
}
otra cosa
{
Operaciones;
}
}
void MoveTurret()
{
Si (turretAngle < 30)
turretAngle = 30;
Si (turretAngle > 150)
turretAngle = 150;
myservo.Write(turretAngle);
}
void TurretLeft()
{
turretAngle += 1;
MoveTurret();
Delay(10);
}
void TurretRight()
{
turretAngle-=1;
MoveTurret();
Delay(10);
}
Forward() vacío
{
motor_1.Run(Forward);
motor_2.Run(Forward);
motor_3.Run(Forward);
motor_4.Run(Forward);
}
Reverse() anulada
{
motor_1.Run(backward);
motor_2.Run(backward);
motor_3.Run(backward);
motor_4.Run(backward);
}
Left() vacío
{
motor_1.Run(Forward);
motor_2.Run(backward);
motor_3.Run(backward);
motor_4.Run(Forward);
}
Right() vacío
{
motor_1.Run(backward);
motor_2.Run(Forward);
motor_3.Run(Forward);
motor_4.Run(backward);
}
anular operaciones
{
motor_1.Run(release);
motor_2.Run(release);
motor_3.Run(release);
motor_4.Run(release);
}
void NorthWest()
{
SetSpeedLeft();
}
void NorthEast()
{
SetSpeedRight();
Forward();
}
void SouthEast()
{
SetSpeedRight();
REVERSE();
}
void SouthWest()
{
SetSpeedLeft();
REVERSE();
}
void SetSpeed()
{
motor_1.SETSPEED(mySpeed);
motor_2.SETSPEED(mySpeed);
motor_3.SETSPEED(mySpeed);
motor_4.SETSPEED(mySpeed);
}
void SetSpeedRight()
{
motor_1.SETSPEED(mySpeed/2);
motor_2.SETSPEED(mySpeed);
motor_3.SETSPEED(mySpeed);
motor_4.SETSPEED(mySpeed/2);
}
void SetSpeedLeft()
{
motor_1.SETSPEED(mySpeed);
motor_2.SETSPEED(mySpeed/2);
motor_3.SETSPEED(mySpeed/2);
motor_4.SETSPEED(mySpeed);
}