Autor: Denis Balan
Proiectul are la baza construirea unei masinute care se poate controla prin bluetooth de pe un telefon cu android + afisarea pe un lcd a comenzilor pe care le primeste masina :
Aplicatia instalata pe telefon se conecteaza la modulul bluetooth al masinii si poti controla fiecare miscare scrisa mai sus. Pe acel LCD vor aparea miscarile in timp real. Daca ai apasat sageata in fata o sa apara FORWARD, la fel si pentru celelalte. Miscarile laterale se realizeaza prin fuctionarea unor motorase de pe partea stanga sau dreapta (in functie de directie) mai rapid decat cele de pe partea opusa.
Librarii:
In functia de setup fac Serial.begin(9600) si setez pinii pentru care dau output. In functia de loop primesc input si afisez pe LCD inputul, dupa care setez viteza si directia pentru motoare. Inputul primit de la telefon este prelucrat in functia loop() si comparat cu diferite comenzi in functie de directia de miscare dorita.
void setup() {
Serial.begin(9600); hc05.begin(9600); pinMode(motor1pin1, OUTPUT); pinMode(motor1pin2, OUTPUT); pinMode(motor2pin1, OUTPUT); pinMode(motor2pin2, OUTPUT);
pinMode(motor3pin1, OUTPUT); pinMode(motor3pin2, OUTPUT); pinMode(motor4pin1, OUTPUT); pinMode(motor4pin2, OUTPUT);
pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT);
}
void loop() {
// initiez LCD -ul lcd.init(); lcd.backlight(); lcd.clear();
// verific daca am input si-l preiau if(hc05.available() > 0){ command = hc05.read(); Serial.write(Serial.read()); } else { command = ' '; }
// daca comanda este F atunci afisez pe LCD // si dau comanda la motoare sa se miste // la fel si in celelalte if-uri if (command == 'F') {
lcd.print("FORWARD");
//Controlling spin direction of motors: digitalWrite(motor1pin1, HIGH); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, HIGH); digitalWrite(motor2pin2, LOW); digitalWrite(motor3pin1, HIGH); digitalWrite(motor3pin2, LOW); digitalWrite(motor4pin1, HIGH); digitalWrite(motor4pin2, LOW);
// setez viteza motoarelor analogWrite(10, 255); //ENA pin analogWrite(11, 255); //ENB pin analogWrite(12, 255); //ENA pin analogWrite(13, 255); //ENA pin } if (command == 'B') {
lcd.print("BACKWARD"); //Controlling spin direction of motors: digitalWrite(motor1pin1, LOW); digitalWrite(motor1pin2, HIGH); digitalWrite(motor2pin1, LOW); digitalWrite(motor2pin2, HIGH); digitalWrite(motor3pin1, LOW); digitalWrite(motor3pin2, HIGH); digitalWrite(motor4pin1, LOW); digitalWrite(motor4pin2, HIGH); analogWrite(10, 255); //ENA pin analogWrite(11, 255); //ENB pin analogWrite(12, 255); //ENA pin analogWrite(13, 255); //ENA pin } if (command == 'L') {
lcd.print("LEFT"); //Controlling spin direction of motors: digitalWrite(motor1pin1, HIGH); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, LOW); digitalWrite(motor2pin2, LOW); digitalWrite(motor4pin1, HIGH); digitalWrite(motor4pin2, LOW); digitalWrite(motor3pin1, LOW); digitalWrite(motor3pin2, LOW);
analogWrite(10, 255); //ENA pin analogWrite(11, 255); //ENB pin analogWrite(12, 255); //ENA pin analogWrite(13, 255); //ENA pin } if (command == 'R') {
lcd.print("RIGHT"); //Controlling spin direction of motors: digitalWrite(motor1pin1, LOW); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, HIGH); digitalWrite(motor2pin2, LOW); digitalWrite(motor4pin1, LOW); digitalWrite(motor4pin2, LOW); digitalWrite(motor3pin1, HIGH); digitalWrite(motor3pin2, LOW);
analogWrite(10, 255); //ENA pin analogWrite(11, 255); //ENB pin analogWrite(12, 255); //ENA pin analogWrite(13, 255); //ENA pin } if (command == 'S') {
lcd.print("STOP"); //Controlling spin direction of motors: digitalWrite(motor1pin1, LOW); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, LOW); digitalWrite(motor2pin2, LOW); digitalWrite(motor4pin1, LOW); digitalWrite(motor4pin2, LOW); digitalWrite(motor3pin1, LOW); digitalWrite(motor3pin2, LOW);
analogWrite(10, 0); //ENA pin analogWrite(11, 0); //ENB pin analogWrite(12, 0); //ENA pin analogWrite(13, 0); //ENA pin }
}
Nu am ales un proiect greu, dar din care am avut ce invata. Am invatat sa folosesc driverele L298n v1 in paralel + datorita videoclipurilor vazute pe YT despre mai multe proiecte asemanatoare am inteles cum functioneaza fiecare piesa si am observat ca nu aveam nevoie de 2 drivere, puteam si cu unul singur.