This shows you the differences between two versions of the page.
|
pm:prj2021:avaduva:bluetoothwheelchair [2021/06/02 10:16] andrei.diaconu2311 |
pm:prj2021:avaduva:bluetoothwheelchair [2021/06/02 10:35] (current) andrei.diaconu2311 |
||
|---|---|---|---|
| Line 27: | Line 27: | ||
| -Folosesc functia de setup pentru a seta pinii de output | -Folosesc functia de setup pentru a seta pinii de output | ||
| -Folosesc o functie de loop in care preiau comenzile din bluetooth si verific ce comanda am, calculez distanta masurata de senzorul ultrasonic, aprind si sting becul si activez buzzer-ul la apasarea unui buton din telefon. | -Folosesc o functie de loop in care preiau comenzile din bluetooth si verific ce comanda am, calculez distanta masurata de senzorul ultrasonic, aprind si sting becul si activez buzzer-ul la apasarea unui buton din telefon. | ||
| + | ==== Rezultate Obtinute ==== | ||
| + | {{:pm:prj2021:avaduva:poza1.jpeg?200|}} | ||
| + | {{:pm:prj2021:avaduva:poza2.jpeg?200|}} | ||
| + | {{:pm:prj2021:avaduva:poza3.jpeg?200|}} | ||
| + | {{:pm:prj2021:avaduva:poza6.jpeg?200|}} | ||
| + | ==== DEMO ==== | ||
| + | https://www.youtube.com/watch?v=5PakJnpXK68&ab_channel=AndreiDiaconu | ||
| + | ==== COD ==== | ||
| + | #include <SoftwareSerial.h> | ||
| + | SoftwareSerial hc05(0, 1); | ||
| + | int motorLeft1 = 2; | ||
| + | int motorLeft2 = 3; | ||
| + | int motorRight1 = 4; | ||
| + | int motorRight2 = 5; | ||
| + | |||
| + | int trigPin = 9; // Trig Pin | ||
| + | int echoPin = 8; // Echo Pin | ||
| + | int distance; | ||
| + | long duration; | ||
| + | int light = 6; | ||
| + | int led = 0; | ||
| + | int buzzer = 7; | ||
| + | char cmd; | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | hc05.begin(9600); | ||
| + | pinMode(motorLeft1, OUTPUT); | ||
| + | pinMode(motorLeft2, OUTPUT); | ||
| + | pinMode(motorRight1, OUTPUT); | ||
| + | pinMode(motorRight2, OUTPUT); | ||
| + | pinMode(trigPin, OUTPUT); | ||
| + | pinMode(echoPin, INPUT); | ||
| + | pinMode(10, OUTPUT); | ||
| + | pinMode(11, OUTPUT); | ||
| + | pinMode(light, OUTPUT); | ||
| + | pinMode(buzzer, OUTPUT); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | if (led == 0) { | ||
| + | digitalWrite(light, HIGH); | ||
| + | led = 1; | ||
| + | delay(1000); | ||
| + | } | ||
| + | else if (led == 1) { | ||
| + | digitalWrite(light, LOW); | ||
| + | led = 0; | ||
| + | delay(1000); | ||
| + | } | ||
| + | if(hc05.available() > 0){ | ||
| + | cmd = hc05.read(); | ||
| + | Serial.write(Serial.read()); | ||
| + | } | ||
| + | else { | ||
| + | cmd = 'x'; | ||
| + | } | ||
| + | if(cmd == 'Y'){ | ||
| + | tone(buzzer, 1000); | ||
| + | delay(1000); | ||
| + | noTone(buzzer); | ||
| + | } | ||
| + | digitalWrite(trigPin, LOW); | ||
| + | delayMicroseconds(2); | ||
| + | // Sets the trigPin on HIGH state for 10 micro seconds | ||
| + | digitalWrite(trigPin, HIGH); | ||
| + | delayMicroseconds(10); | ||
| + | digitalWrite(trigPin, LOW); | ||
| + | // Reads the echoPin, returns the sound wave travel time in microseconds | ||
| + | duration = pulseIn(echoPin, HIGH); | ||
| + | // Calculating the distance | ||
| + | distance = duration * 0.034 / 2; | ||
| + | // Prints the distance on the Serial Monitor | ||
| + | Serial.print("Distance: "); | ||
| + | Serial.println(distance); | ||
| + | if (distance <= 20 ) { | ||
| + | if (cmd == 'B') { | ||
| + | digitalWrite(motorLeft1, HIGH); | ||
| + | digitalWrite(motorLeft2, LOW); | ||
| + | digitalWrite(motorRight1, LOW); | ||
| + | digitalWrite(motorRight2, HIGH); | ||
| + | analogWrite(10, 200); //ENA pin | ||
| + | analogWrite(11, 200); //ENB pin | ||
| + | } | ||
| + | if (cmd == 'S') { | ||
| + | digitalWrite(motorLeft1, LOW); | ||
| + | digitalWrite(motorLeft2, LOW); | ||
| + | digitalWrite(motorRight1, LOW); | ||
| + | digitalWrite(motorRight2, LOW); | ||
| + | analogWrite(10, 0); //ENA pin | ||
| + | analogWrite(11, 0); //ENB pin | ||
| + | } | ||
| + | } | ||
| + | else{ | ||
| + | if (cmd == 'F') { | ||
| + | digitalWrite(motorLeft1, LOW); | ||
| + | digitalWrite(motorLeft2, HIGH); | ||
| + | digitalWrite(motorRight1, HIGH); | ||
| + | digitalWrite(motorRight2, LOW); | ||
| + | analogWrite(10, 200); //ENA pin | ||
| + | analogWrite(11, 200); //ENB pin | ||
| + | } | ||
| + | if (cmd == 'B') { | ||
| + | digitalWrite(motorLeft1, HIGH); | ||
| + | digitalWrite(motorLeft2, LOW); | ||
| + | digitalWrite(motorRight1, LOW); | ||
| + | digitalWrite(motorRight2, HIGH); | ||
| + | analogWrite(10, 200); //ENA pin | ||
| + | analogWrite(11, 200); //ENB pin | ||
| + | } | ||
| + | |||
| + | if (cmd == 'L') { | ||
| + | digitalWrite(motorLeft1, LOW); | ||
| + | digitalWrite(motorLeft2, HIGH); | ||
| + | digitalWrite(motorRight1, LOW); | ||
| + | digitalWrite(motorRight2, LOW); | ||
| + | analogWrite(10, 200); //ENA pin | ||
| + | analogWrite(11, 200); //ENB pin | ||
| + | } | ||
| + | if (cmd == 'R') { | ||
| + | |||
| + | digitalWrite(motorLeft1, LOW); | ||
| + | digitalWrite(motorLeft2, LOW); | ||
| + | digitalWrite(motorRight1, HIGH); | ||
| + | digitalWrite(motorRight2, LOW); | ||
| + | analogWrite(10, 200); //ENA pin | ||
| + | analogWrite(11, 200); //ENB pin | ||
| + | } | ||
| + | |||
| + | if (cmd == 'S') { | ||
| + | digitalWrite(motorLeft1, LOW); | ||
| + | digitalWrite(motorLeft2, LOW); | ||
| + | digitalWrite(motorRight1, LOW); | ||
| + | digitalWrite(motorRight2, LOW); | ||
| + | analogWrite(10, 0); //ENA pin | ||
| + | analogWrite(11, 0); //ENB pin | ||
| + | } | ||
| + | } | ||
| + | } | ||