This shows you the differences between two versions of the page.
pm:prj2024:ccontasel:george.vasilache [2024/05/25 23:49] george.vasilache [Software Design] |
pm:prj2024:ccontasel:george.vasilache [2024/06/05 18:53] (current) alex.moldoveanu0510 [Cooling Pad Laptop] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Cooling Pad Laptop ======= | ====== Cooling Pad Laptop ======= | ||
- | Vasilache George-Florin -- 331CB | + | Moldoveanu Alex-Adrian 333CA |
===== Introducere ===== | ===== Introducere ===== | ||
Line 38: | Line 39: | ||
== Schema Circuitului == | == Schema Circuitului == | ||
{{:pm:prj2024:ccontasel:schema_electrica_vasilqche_george.jpg?700|}} | {{:pm:prj2024:ccontasel:schema_electrica_vasilqche_george.jpg?700|}} | ||
+ | |||
+ | Rezultatul final al acestei etape este reprezentat în poza de mai jos: | ||
+ | |||
+ | {{:pm:prj2024:ccontasel:rezultat_circuti_fara_design_vasilache_george.jpeg?500|}} | ||
Line 61: | Line 66: | ||
dht11.readTemperatureHumidity(temperature, humidity); | dht11.readTemperatureHumidity(temperature, humidity); | ||
</file> | </file> | ||
+ | |||
+ | == Foto rezistenta + led rosu == | ||
+ | Global am declarat pin-ul pentru led si pentru fotorezistenta. | ||
+ | <file cpp global> | ||
+ | const int ledPin = 6; | ||
+ | const int fotoLedPin = A0; | ||
+ | </file> | ||
+ | |||
+ | In functia de setup am declarat pin-ul led-ului ca pin de output. | ||
+ | <file cpp setup> | ||
+ | // Setăm pinul LED-ului ca OUTPUT | ||
+ | pinMode(ledPin, OUTPUT); | ||
+ | </file> | ||
+ | |||
+ | In functia de loop am citit intr-o variabila ce inregistreaza fotorezistenta. | ||
+ | Iar daca valorea este mai mare de 600 atunci led-ul se poate aprinde. | ||
+ | <file cpp loop> | ||
+ | int value = analogRead(fotoLedPin); | ||
+ | |||
+ | if(value <= 600){ | ||
+ | digitalWrite(ledPin,HIGH); | ||
+ | }else{ | ||
+ | digitalWrite(ledPin,LOW); | ||
+ | } | ||
+ | </file> | ||
+ | |||
+ | == LCD == | ||
+ | Global am folosit functia de biblioteca pentru a initializa ecranul la adersa 0x3F. | ||
+ | <file cpp global> | ||
+ | LiquidCrystal_I2C lcd(0x3F,16,2); | ||
+ | </file> | ||
+ | |||
+ | In functia de setup() afisam pe ecran un mesaj de inceput. | ||
+ | <file cpp setup> | ||
+ | lcd.init(); | ||
+ | lcd.backlight(); | ||
+ | lcd.setCursor(0,0); | ||
+ | lcd.print("Hello, world!"); | ||
+ | lcd.setCursor(0,1); | ||
+ | lcd.print("Optimus Digital"); | ||
+ | |||
+ | delay(2000); | ||
+ | lcd.clear(); | ||
+ | </file> | ||
+ | |||
+ | In functia de loop afisam pe ecran temperatura inregistrata de senzor sub formatul de grade celsius. | ||
+ | <file cpp loop> | ||
+ | lcd.setCursor(0, 0); | ||
+ | lcd.print("Temp: "); | ||
+ | lcd.print(temperature); | ||
+ | lcd.print(char(223)); | ||
+ | lcd.print("C"); | ||
+ | </file> | ||
+ | |||
+ | == Driver L293D + motor + elice == | ||
+ | Global am declarat pinii pentru motor si driver. | ||
+ | Apoi am apelat functia construita de mine in fisierul DCMDriverL293D.cpp pentru initializarea motoras-ului si a driver-ului. | ||
+ | <file cpp global> | ||
+ | // Pin Definitions | ||
+ | #define DCMOTORDRIVERB_PIN_ENABLE1 3 | ||
+ | #define DCMOTORDRIVERB_PIN_IN1 2 | ||
+ | #define DCMOTORDRIVERB_PIN_IN2 4 | ||
+ | #define DCMOTORDRIVERB_PIN_ENABLE2 5 | ||
+ | #define DCMOTORDRIVERB_PIN_IN3 7 | ||
+ | #define DCMOTORDRIVERB_PIN_IN4 8 | ||
+ | |||
+ | // object initialization | ||
+ | DCMDriverL293D dcMotorDriverB(DCMOTORDRIVERB_PIN_ENABLE1,DCMOTORDRIVERB_PIN_IN1,DCMOTORDRIVERB_PIN_IN2,DCMOTORDRIVERB_PIN_ENABLE2,DCMOTORDRIVERB_PIN_IN3,DCMOTORDRIVERB_PIN_IN4); | ||
+ | </file> | ||
+ | |||
+ | In functia de loop daca temperatura este mai mare sau egala cu 30 grade Celsius activam mototras-ul folosind functia setMotorA/setMotorB cu o viteza ce este reglata de potentiometru si directia de invartire a elicei alese aleator. | ||
+ | <file cpp loop> | ||
+ | if(temperature >= 30){ | ||
+ | dcMotorDriverB.setMotorA(value2,true); | ||
+ | dcMotorDriverB.setMotorB(value2,false); | ||
+ | }else{ | ||
+ | dcMotorDriverB.stopMotors(); | ||
+ | } | ||
+ | </file> | ||
+ | |||
+ | == Potentiometru 10k == | ||
+ | In functia de loop , pentru ca potentiometrul citea valori in 25 si 1005 , am sacalat valoarea citita intre 10 si 200, 255 fiind | ||
+ | valoarea maxima pe care o poate primii motoras-ul, valoare cu care ii este reglata viteza elicei. | ||
+ | <file cpp loop> | ||
+ | int value2 = analogRead(A1); | ||
+ | value2 = map(value2, 25, 1005, 10, 200); | ||
+ | </file> | ||
+ | |||
+ | |||
+ | |||
== Unelte Folosite == | == Unelte Folosite == | ||
https://app.diagrams.net/ - pentru realizarea schemei bloc | https://app.diagrams.net/ - pentru realizarea schemei bloc | ||
Line 67: | Line 162: | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | Rezultatul final al acestei etape este reprezentat în poza de mai jos: | + | Proiectul final, cât și funcționalitatea acestuia pot fi observate mai jos. |
+ | |||
+ | https://youtu.be/Us-E9WrCB4k?si=YHQfVc0tqV_KVFba | ||
- | {{:pm:prj2024:ccontasel:rezultat_circuti_fara_design_vasilache_george.jpeg?500|}} | ||
- | ===== Concluzii ===== | ||
===== Download ===== | ===== Download ===== | ||
+ | |||
+ | <note important>Arhiva proiectului se află mai jos și conține: | ||
+ | * Fișierele cu codul software | ||
+ | * Imagini cu proiectul | ||
+ | </note> | ||
+ | |||
+ | Download: {{:pm:prj2024:ccontasel:proiect_pm_vasilache_george.zip|}} | ||
+ | |||
===== Tinte ===== | ===== Tinte ===== | ||
Line 85: | Line 188: | ||
* 05/05/2024 - completarea descrierii generale + schema bloc | * 05/05/2024 - completarea descrierii generale + schema bloc | ||
* 15/05/2024 - adaugare schema electrica | * 15/05/2024 - adaugare schema electrica | ||
+ | * 21/05/2024 - finalizare proiect(hardware + software) | ||
+ | * 22/05/2024 - finisare proiect(realizarea unui design adecvat) | ||
**GRAFIC GANT** | **GRAFIC GANT** | ||
- | {{:pm:prj2024:ccontasel:gantt_pm_geo.png?700|}} | + | {{:pm:prj2024:ccontasel:grafic_chart_pm_vasilache_george.png?700|}} |
- | + | ||
- | + | ||
- | ===== Bibliografie și Resurse ===== | + | |