Stap 16: programmeren
Hier is de code die ik gebruikte het moet zichzelf als je door het:
#include < AFMotor.h >
#include < SoftwareSerial.h > //Software seriële poort#include < Servo.h >
Servo myservo;
int mySpeed;
int turretAngle;
char val;
char prevAction;
AF_DCMotor motor_1(1);
AF_DCMotor motor_2(2);
AF_DCMotor motor_3(3);
AF_DCMotor motor_4(4);#define rode A0
#define SET A1
#define RxD A5 / / dit is de pin dat de Bluetooth (BT_TX) aan de Arduino (RxD doorgeven zal)
#define TxD A4SoftwareSerial blueToothSerial(RxD,TxD);
int switchVal;
BOOL uitgevoerd;VOID Setup {}
Serial.begin(9600); Seriële communicatie via USB-kabel aan de computer toestaan (indien nodig)
pinMode (RxD, INPUT); Instellen van de Arduino te ontvangen van INPUT van de bluetooth-schild op digitale Pin 6
pinMode (TxD, uitvoer); Instellen van de Arduino voor het verzenden van gegevens (OUTPUT) aan het schild van de bluetooth op digitale Pin 7
pinMode(13,OUTPUT); Gebruik aan boord LED indien nodig.
pinMode (rood, uitvoer);
pinMode(SET,INPUT_PULLUP);
blueToothSerial.begin(9600);
turretAngle = 90;
switchVal = hoog;
mySpeed = 255;
inschakelen motor
SetSpeed ();
myservo.attach(9);
Release();
}
void loop {}
int sensorVal = digitalRead(SET);
Als (sensorVal == laag)
{
actief =! uitgevoerd;
digitalWrite (rood, uitgevoerd? HIGH:LOW);
vertraging (400);
}
Als (waar)
{
if(blueToothSerial.available())
{
Val = blueToothSerial.read();
Serial.Print(val); Afdrukken van het teken ontvangen naar de seriële Monitor (indien nodig)
prevAction = val;
Als (val 'F' ==) //fwd
{
SetSpeed();
Vooruit();
}
anders als (val == 'L') //left
{
SetSpeed();
Datumwaarde;
}
anders als (val 'R' ==) //right
{
SetSpeed();
Rechts();
}
anders als (val == 'B') //reverse
{
SetSpeed();
Reverse();
}
anders als (val == de ') / / top
{
Release();
}
anders als (val == 'G') / / NW
{
NorthWest();
}
anders als (val == 'I') / / NE
{
NorthEast();
}
anders als (val == 'J') / / SE
{
SouthEast();
}
anders als (val == 'H') / / SW
{
SouthWest();
}
anders als (val == '1') / / speed
{
mySpeed = 255/10;
}
anders als (val == '2') / / speed
{
mySpeed = 255/10 * 2;
}
anders als (val == '3') / / speed
{
mySpeed = 255/10 * 3;
}
anders als (val == '4') / / 1-speed
{
mySpeed = 255/10 * 4;
}
anders als (val == '5') / / 1-speed
{
mySpeed = 255/10 * 5;
}
anders als (val == '6') / / 1-speed
{
mySpeed = 255/10 * 6;
}
anders als (val == '7') / / 1-speed
{
mySpeed = 255/10 * 7;
}
anders als (val == '8') / / 1-speed
{
mySpeed = 255/10 * 8;
}
anders als (val == '9') / / 1-speed
{
mySpeed = 255/10 * 9;
}
anders als (val == 'q') / / 1-speed
{
mySpeed = 255;
}
anders als (val == 'X' || val == 'x')
{
Reverse();
delay(50);
Vooruit();
delay(50);
Release();
}
anders als (val == 'V' || val == 'v')
{
actief =! uitgevoerd;
digitalWrite (rood, uitgevoerd? HIGH:LOW);
}
}
anders
{
Als (val == 'W')
{
TurretLeft();
}
anders als (val == 'U')
{
TurretRight();
}
}
}
anders
{
Release();
}
}
VOID MoveTurret()
{
Als (turretAngle < 30)
turretAngle = 30;
Als (turretAngle > 150)
turretAngle = 150;
myservo.write(turretAngle);
}
VOID TurretLeft()
{
turretAngle += 1;
MoveTurret();
delay(10);
}
VOID TurretRight()
{
turretAngle-=1;
MoveTurret();
delay(10);
}
VOID vooruit()
{
motor_1.run(forward);
motor_2.run(forward);
motor_3.run(forward);
motor_4.run(forward);
}
VOID Reverse()
{
motor_1.run(BACKWARD);
motor_2.run(BACKWARD);
motor_3.run(BACKWARD);
motor_4.run(BACKWARD);
}
VOID datumwaarde
{
motor_1.run(forward);
motor_2.run(BACKWARD);
motor_3.run(BACKWARD);
motor_4.run(forward);
}
VOID rechts()
{
motor_1.run(BACKWARD);
motor_2.run(forward);
motor_3.run(forward);
motor_4.run(BACKWARD);
}
VOID Release()
{
motor_1.run(release);
motor_2.run(release);
motor_3.run(release);
motor_4.run(release);
}
VOID NorthWest()
{
SetSpeedLeft();
}
VOID NorthEast()
{
SetSpeedRight();
Vooruit();
}
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);
}