This is an old revision of the document!
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 primes input si afisez pe LCD inputul, dupa care setez viteza si directia pentru motoare.
int motor1pin1 = 2; int motor1pin2 = 3; int motor2pin1 = 4; int motor2pin2 = 5;
int motor3pin1 = 6; int motor3pin2 = 7; int motor4pin1 = 8; int motor4pin2 = 9;
char command; #define trig_pin A4 #define echo_pin A5
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 }
}