Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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]] 
 + 
 + 
 + 
  
  
pm/prj2021/avaduva/android_car.1622552406.txt.gz · Last modified: 2021/06/01 16:00 by ion_denis.balan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0