This shows you the differences between two versions of the page.
pm:prj2021:avaduva:android_car [2021/06/01 16:00] ion_denis.balan [Poze] |
pm:prj2021:avaduva:android_car [2021/06/02 10:28] (current) ion_denis.balan [Software Design] |
||
---|---|---|---|
Line 32: | Line 32: | ||
- #include <SoftwareSerial.h> --> Pentru bluetooth | - #include <SoftwareSerial.h> --> Pentru bluetooth | ||
In functia de setup fac Serial.begin(9600) si setez pinii pentru care dau output. | 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. | + | 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. | ||
==== Poze ==== | ==== Poze ==== | ||
- | {{:pm:prj2021:avaduva:denis2.jpg?300|}} | + | {{:pm:prj2021:avaduva:denis2.jpg?200|}} |
- | {{:pm:prj2021:avaduva:denis3.jpg?300|}} | + | {{:pm:prj2021:avaduva:denis3.jpg?200|}} |
- | {{:pm:prj2021:avaduva:denis1.jpg?600|}} | + | {{:pm:prj2021:avaduva:denis1.jpg?450|}} |
+ | ==== Jurnal ==== | ||
+ | - 11.05.2021 --> comandare sasiu + suport beterii + driver | ||
+ | - 19.05.2021 --> comandare modul bluetooth (am uitat de el) | ||
+ | - 20 - 1 .06.2021 --> asamblare + verificare cod | ||
+ | ==== Demo ==== | ||
+ | https://www.youtube.com/watch?v=GM5x62Ts5JQ&t=1s&ab_channel=DenisBalan | ||
+ | ==== Cod ==== | ||
+ | - #include <LiquidCrystal_I2C.h> | ||
+ | - #include <SoftwareSerial.h> | ||
+ | - SoftwareSerial hc05(0, 1); | ||
+ | - LiquidCrystal_I2C lcd(0x27,20,4); | ||
+ | === Declarare variabile === | ||
+ | - 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 | ||
+ | |||
+ | == Setup() == | ||
+ | |||
+ | 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); | ||
+ | |||
+ | } | ||
+ | |||
+ | == Loop() == | ||
+ | |||
+ | 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 | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ===== Concluzii: ===== | ||
+ | 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. | ||
+ | |||
===== Bibliografie/Resurse: ===== | ===== Bibliografie/Resurse: ===== | ||
- | http://ocw.cs.pub.ro/courses/pm/prj2021/avaduva/android_car | + | - https://www.youtube.com/watch?v=dyjo_ggEtVU&t=1228s |
+ | - https://www.youtube.com/watch?v=tujih1afqiE&ab_channel=DroneBotWorkshopDroneBotWorkshopVerificat | ||
+ | - https://create.arduino.cc/projecthub/ryanchan/how-to-use-the-l298n-motor-driver-b124c5 | ||
+ | - https://www.youtube.com/watch?v=xVC0X_PE_XE | ||
+ | |||
+ | ===== Download: ===== | ||
+ | [[https://ocw.cs.pub.ro/courses/pm/prj2021/avaduva/android_car?do=export_pdf|Pagina wiki]] | ||
+ | |||
+ | |||
+ | |||