Kod:
//Version 2.1 By Owen Sobel
#define in1 5 //L298n Motor Driver pins.
#define in2 6
#define in3 10
#define in4 11
#define LED 13
int command; //Int to store app command state.
int Speed = 204; // 0 - 255.
int Speedsec;
int Turnradius = 0; //Set the radius of a turn, 0 - 255 Note:the robot will malfunction if this is higher than int Speed, if it is, pin13 will be HIGH. Useful for debugging.
int button; // Store how many times a button has been pressed.
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(LED, OUTPUT); //Set the LED pin.
Serial.begin(9600); //Set the baud rate to your Bluetooth module.
}
void loop() {
if (Turnradius > Speed) {
Serial.write("Error : Code 01 ");
digitalWrite(LED, HIGH);
delay(1000);
}
else {
digitalWrite(LED, LOW);
}
if (Speed > 255) {
Serial.write("Error : Code 02 ");
digitalWrite(LED, HIGH);
delay(1000);
}
else {
digitalWrite(LED, LOW);
}
Button();
if (Serial.available() > 0) {
command = Serial.read();
Stop(); //Initialize with motors stoped.
switch (command) {
case 'F':
forward();
button = button + 1;
break;
case 'B':
back();
button = button + 1;
break;
case 'L':
left();
button = button + 1;
break;
case 'R':
right();
button = button + 1;
break;
case 'G':
forwardleft();
button = button + 1;
break;
case 'I':
forwardright();
button = button + 1;
break;
case 'H':
backleft();
button = button + 1;
break;
case 'J':
backright();
button = button + 1;
break;
case '0':
Speed = 100;
break;
case '1':
Speed = 140;
break;
case '2':
Speed = 153;
break;
case '3':
Speed = 165;
break;
case '4':
Speed = 178;
break;
case '5':
Speed = 191;
break;
case '6':
Speed = 204;
break;
case '7':
Speed = 216;
break;
case '8':
Speed = 229;
break;
case '9':
Speed = 242;
break;
case 'q':
Speed = 255;
break;
case 'X':
Auto();
break;
case 'x':
Manual();
break;
}
Speedsec = Turnradius;
}
}
void Button () {
Serial.print("button = ");
Serial.print(button);
Serial.println(" ");
delay(300);
}
void forward() {
analogWrite(in1, Speed);
analogWrite(in3, Speed);
}
void back() {
analogWrite(in2, Speed);
analogWrite(in4, Speed);
}
void left() {
analogWrite(in3, Speed);
analogWrite(in2, Speed);
}
void right() {
analogWrite(in4, Speed);
analogWrite(in1, Speed);
}
void forwardleft() {
analogWrite(in1, Speedsec);
analogWrite(in3, Speed);
}
void forwardright() {
analogWrite(in1, Speed);
analogWrite(in3, Speedsec);
}
void backright() {
analogWrite(in2, Speed);
analogWrite(in4, Speedsec);
}
void backleft() {
analogWrite(in2, Speedsec);
analogWrite(in4, Speed);
}
void Stop() {
analogWrite(in1, 0);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, 0);
}