Autor: Macadon Andrei-Cristian
Lista componente
<code>#include <SoftwareSerial.h> SoftwareSerial hc05(0, 1);
int m1pin1 = 8; int m1pin2 = 9; int m2pin1 = 10; int m2pin2 = 11; int avarii = 0; int backwardsLights = 0; char request;
void setup() {
Serial.begin(9600); hc05.begin(9600); // put your setup code here, to run once: pinMode(m1pin1, OUTPUT); pinMode(m1pin2, OUTPUT); pinMode(m2pin1, OUTPUT); pinMode(m2pin2, OUTPUT);
pinMode(4, OUTPUT); pinMode(5, OUTPUT);
}
void loop() {
request = ' ';
if(hc05.available() > 0){
request = hc05.read();
Serial.write(Serial.read());
}
if (request == 'F') {
//Make the motors run forward:
digitalWrite(m1pin1, HIGH);
digitalWrite(m1pin2, LOW);
digitalWrite(m2pin1, HIGH);
digitalWrite(m2pin2, LOW);
backwardsLights = 0;
analogWrite(4, 255); //ENA pin
analogWrite(5, 255); //ENB pin
}
if(backwardsLights == 1){
digitalWrite(6, HIGH);
delay(500);
digitalWrite(6, LOW);
delay(500);
}
if (request == 'B') {
//Make the motors run backwards digitalWrite(m1pin1, LOW); digitalWrite(m1pin2, HIGH); digitalWrite(m2pin1, LOW); digitalWrite(m2pin2, HIGH); // set the flag for the backwardsLights backwardsLights = 1; digitalWrite(6, HIGH); delay(1000); digitalWrite(6, LOW); delay(1000); analogWrite(4, 255); //ENA pin analogWrite(5, 255); //ENB pin }
if (request == 'L') {
//Make only the left motors run digitalWrite(m1pin1, HIGH); digitalWrite(m1pin2, LOW); digitalWrite(m2pin1, LOW); digitalWrite(m2pin2, LOW);
backwardsLights = 0;
analogWrite(4, 255); //ENA pin
analogWrite(5, 255); //ENB pin
}
if (request == 'R') {
//Make only the right motors run digitalWrite(m1pin1, LOW); digitalWrite(m1pin2, LOW);
digitalWrite(m2pin1, HIGH); digitalWrite(m2pin2, LOW);
backwardsLights = 0;
analogWrite(4, 255); //ENA pin analogWrite(5, 255); //ENB pin }
//check the avarii flag to see if the red LED should be flickering or not
if(avarii == 1){
digitalWrite(7, HIGH);
delay(500);
digitalWrite(7, LOW);
delay(500);
}
if (request == 'S') {
// stop all the motors
digitalWrite(m1pin1, LOW);
digitalWrite(m1pin2, LOW);
digitalWrite(m2pin1, LOW); digitalWrite(m2pin2, LOW);
//stop avarii
digitalWrite(7, LOW);
analogWrite(4, 0); //ENA pin
analogWrite(5, 0); //ENB pin
//set the flags accordingly
avarii = 0;
backwardsLights = 0;
}
if(request == 'A'){
// turn on avarii
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
delay(1000);
// if avarii were already turned on, turn them off
if(avarii == 0){
avarii = 1;
} else {
avarii = 0;
}
}
}