This shows you the differences between two versions of the page.
pm:prj2024:vstoica:valentin.ionescu02 [2024/05/22 11:54] valentin.ionescu02 [Software Design] |
pm:prj2024:vstoica:valentin.ionescu02 [2024/05/26 21:10] (current) valentin.ionescu02 [Download] |
||
---|---|---|---|
Line 31: | Line 31: | ||
* Rezistenta de 400 Ohmi | * Rezistenta de 400 Ohmi | ||
* Acumulatoare | * Acumulatoare | ||
+ | Pieste pentru lama de taiat iarba: | ||
+ | * Baterie 9v | ||
+ | * Motor DC | ||
+ | * Elice de plastic | ||
+ | * Fire | ||
+ | |||
</note> | </note> | ||
* ATmega328P: Este responsabil pentru interpretarea comenzilor Bluetooth primite de la modulul HC-05 și pentru controlul funcțiilor mașinii și a LED-urilor. | * ATmega328P: Este responsabil pentru interpretarea comenzilor Bluetooth primite de la modulul HC-05 și pentru controlul funcțiilor mașinii și a LED-urilor. | ||
Line 49: | Line 55: | ||
=== Schema electrica === | === Schema electrica === | ||
{{:pm:prj2024:vstoica:circuit_schema_el.png?800|}} | {{:pm:prj2024:vstoica:circuit_schema_el.png?800|}} | ||
+ | |||
+ | === Schema electrica elice === | ||
+ | {{:pm:prj2024:vstoica:elice.png?500|}} | ||
+ | |||
=== Componentele conectate === | === Componentele conectate === | ||
Line 93: | Line 103: | ||
* **Mediu de dezvoltare:** Arduino IDE | * **Mediu de dezvoltare:** Arduino IDE | ||
- | * **biblioteci folosite:** Wire.h si LiquidCrystal_I2C.h(pentru controlul motoarelor, comunicație I2C și afișarea pe LCD.) | + | * **biblioteci folosite:** Wire.h si LiquidCrystal_I2C.h (pentru controlul motoarelor, comunicație I2C și afișarea pe LCD.) |
- | * **Surse şi funcţii implementate**: | + | * **Pentru viteza motoarelor** am folosit o variabila globala. |
- | <note tip> | + | * Am definit pinii pentru controlul motoarelor(**in1,2,3,4**), pentru viteza(**ena,enb (PWM)**) si pentru led uri |
- | void setup() { | + | |
+ | **Funcția setup** este utilizată pentru a inițializa hardware-ul și setările necesare. | ||
+ | <note tip> | ||
+ | void setup() { | ||
Serial.begin(9600); | Serial.begin(9600); | ||
- | pinMode(in1, OUTPUT); | + | DDRD |= (1 << in1) | (1 << in2) | (1 << in3) | (1 << in4); |
- | pinMode(in2, OUTPUT); | + | DDRB |= (1 << ena) | (1 << enb) | (1 << led); |
- | pinMode(in3, OUTPUT); | + | PORTB |= (1 << led); |
- | pinMode(in4, OUTPUT); | + | |
- | pinMode(ena, OUTPUT); | + | |
- | pinMode(enb, OUTPUT); | + | |
- | pinMode(led,OUTPUT); | + | |
analogWrite(ena, 0); | analogWrite(ena, 0); | ||
analogWrite(enb, 0); | analogWrite(enb, 0); | ||
+ | |||
lcd.init(); | lcd.init(); | ||
lcd.backlight(); | lcd.backlight(); | ||
lcd.setCursor(1, 0); | lcd.setCursor(1, 0); | ||
lcd.print("SPEED IS 0"); | lcd.print("SPEED IS 0"); | ||
- | } | + | } |
+ | |||
</note> | </note> | ||
+ | * Inițializare comunicarea serială (Serial.begin(9600)) | ||
+ | * **in1, in2, in3, in4**: pini digitali setați ca ieșiri,pentru a controla direcția motoarelor. | ||
+ | * **ena, enb**: pini de ieșire care controlează viteza motoarelor folosind PWM. | ||
+ | * **led**: pin de ieșire pentru LEDuri,pentru semnalizarea diferitelor stări. | ||
+ | * **analogWrite**: setează viteza inițială a motoarelor la 0, oprind motoarele la pornirea sistemului. | ||
+ | |||
+ | **Funcția loop** este responsabilă pentru citirea comenzilor de la interfața serială și pentru controlarea comportamentului vehiculului pe baza acestor comenzi.Se verifica daca există date disponibile pe interfața serială. | ||
+ | Daca da, se citeste o valoare care reprezinta ce functie trebuie apelata.Se seteaza viteza motoarelor si se afiseaza | ||
+ | pe lcd valoare ei. | ||
<note tip > | <note tip > | ||
void loop() { | void loop() { | ||
Line 147: | Line 167: | ||
else if (value == 'M' || value == 'N') | else if (value == 'M' || value == 'N') | ||
{ | { | ||
- | digitalWrite(led, LOW); | + | PORTB &= ~(1 << led); |
} | } | ||
else if (value == 'm' || value == 'n') | else if (value == 'm' || value == 'n') | ||
{ | { | ||
- | digitalWrite(led,HIGH ); | + | PORTB |= (1 << led); |
- | } | + | } |
+ | | ||
} | } | ||
+ | } | ||
</note> | </note> | ||
+ | Funcțiile **“Forward()“,“BACK()“ ,“LEFT()“, “RIGHT()“ și “STOP()“** sunt responsabile de controlul mișcării masinii. | ||
<note tip> | <note tip> | ||
void Forward() { | void Forward() { | ||
- | digitalWrite(in1, HIGH); | + | PORTD |= (1 << in1) | (1 << in3); |
- | digitalWrite(in2, LOW); | + | PORTD &= ~((1 << in2) | (1 << in4)); |
- | digitalWrite(in3, HIGH); | + | |
- | digitalWrite(in4, LOW); | + | |
} | } | ||
void Back() { | void Back() { | ||
- | digitalWrite(in1, LOW); | + | PORTD |= (1 << in2) | (1 << in4); |
- | digitalWrite(in2, HIGH); | + | PORTD &= ~((1 << in1) | (1 << in3)); |
- | digitalWrite(in3, LOW); | + | |
- | digitalWrite(in4, HIGH); | + | |
} | } | ||
void Left() { | void Left() { | ||
- | digitalWrite(in1, HIGH); | + | PORTD |= (1 << in1) | (1 << in4); |
- | digitalWrite(in2, LOW); | + | PORTD &= ~((1 << in2) | (1 << in3)); |
- | digitalWrite(in3, LOW); | + | |
- | digitalWrite(in4, HIGH); | + | |
} | } | ||
void Right() { | void Right() { | ||
- | digitalWrite(in1, LOW); | + | PORTD |= (1 << in2) | (1 << in3); |
- | digitalWrite(in2, HIGH); | + | PORTD &= ~((1 << in1) | (1 << in4)); |
- | digitalWrite(in3, HIGH); | + | |
- | digitalWrite(in4, LOW); | + | |
} | } | ||
+ | |||
void Stop() { | void Stop() { | ||
- | digitalWrite(in1, LOW); | + | PORTD &= ~((1 << in1) | (1 << in2) | (1 << in3) | (1 << in4)); |
- | digitalWrite(in2, LOW); | + | |
- | digitalWrite(in3, LOW); | + | |
- | digitalWrite(in4, LOW); | + | |
} | } | ||
+ | |||
</note> | </note> | ||
Line 195: | Line 209: | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | https://drive.google.com/file/d/1ADtn8xu3hT9tyJ2f52uw-6Ngnt1La_3Z/view?usp=drive_link |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Finalizarea acestui proiect a fost o experiență extrem de satisfăcătoare, oferindu-mi ocazia de a integra și aplica cunoștințele de hardware și software într-un mod creativ și util. Proiectarea și construirea unei mașini de jucărie controlate prin Bluetooth, echipată cu LED-uri pentru faruri și stopuri, și cu o elice pentru tăiatul ierbii, mi-au permis să explorez numeroase aspecte ale ingineriei și programării. Afișarea vitezei pe un ecran LCD a adăugat un plus de interactivitate și funcționalitate proiectului. Acest proiect nu doar că mi-a îmbogățit abilitățile tehnice, dar mi-a și stimulat dorința de a lucra la proiecte similare în viitor. | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2024:vstoica:proiect_pm.zip|}} | ||
- | <note warning> | + | ===== Bibliografie/Resurse ===== |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | **Resurse Software**: |
- | </note> | + | * **Arduino Libraries** |
+ | * **LiquidCrystal_I2C Library Documentation** | ||
+ | * **Wire Library Documentation** | ||
- | ===== Jurnal ===== | + | **Resurse Hardware**: |
- | + | * **Datasheet Arduino Uno** | |
- | <note tip> | + | * **Datasheet L298N Motor Driver** |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * **Datasheet HC-05** |
- | </note> | + | * **https://www.youtube.com/watch?v=CvqHkXeXN3M** |
- | + | * **https://www.youtube.com/watch?v=bNZv3dZpmSU** | |
- | ===== Bibliografie/Resurse ===== | + | * **https://www.youtube.com/watch?v=ykgt4v7_4y4** |
- | + | * **https://www.youtube.com/watch?v=E2sTbpFsvXI** | |
- | <note> | + | |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | |
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||