This shows you the differences between two versions of the page.
pm:prj2022:sionescu:sportwatch [2022/05/29 22:18] eduard_adiel.dinu |
pm:prj2022:sionescu:sportwatch [2022/06/02 16:19] (current) eduard_adiel.dinu |
||
---|---|---|---|
Line 5: | Line 5: | ||
===== Introducere ===== | ===== Introducere ===== | ||
+ | <note tip> | ||
Proiectul consta in implementarea unui ceas de tip SportWatch. | Proiectul consta in implementarea unui ceas de tip SportWatch. | ||
- | Acesta contine integrat un senzor de luat temperatura si o alarma pentru sport. | + | Acesta contine integrat un senzor de luat temperatura si unul pentru puls si o alarma pentru sport. |
- | Alarma va suna timp de 30 secunde, iar un LED se va aprinda daca senzorul detecteaza o temperatura prea ridicata. | + | Alarma va suna timp de 30 secunde, iar un LED se va aprinde daca senzorul detecteaza o temperatura prea ridicata si un alt LED pentru puls. |
+ | </note> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
+ | <note tip> | ||
In schema de mai jos se poate observa inputul si outputul proiectului legat la ARDUINO. Exista 2 inputuri : citirea facuta de senzor si timpul configurat de noi.\\ | In schema de mai jos se poate observa inputul si outputul proiectului legat la ARDUINO. Exista 2 inputuri : citirea facuta de senzor si timpul configurat de noi.\\ | ||
Sunt 3 iesiri : sunetul facut de Buzzer cand trebuie sa sune alarma la o anumita ora, LED-ul care se va aprinde cu rosu daca temperatura este in zona de pericol, Ora, minutul si secunda afisata pe ecran.\\ | Sunt 3 iesiri : sunetul facut de Buzzer cand trebuie sa sune alarma la o anumita ora, LED-ul care se va aprinde cu rosu daca temperatura este in zona de pericol, Ora, minutul si secunda afisata pe ecran.\\ | ||
- | {{:pm:prj2022:sionescu:dinuadiel335cadiagrama.png?400|}} | + | </note> |
+ | {{:pm:prj2022:sionescu:dinueduardadiel335cadiagram.png?400|}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
+ | <note tip> | ||
Piesele necesare sunt : | Piesele necesare sunt : | ||
1. Arduino | 1. Arduino | ||
Line 28: | Line 31: | ||
8. fire | 8. fire | ||
9. Potentiometru | 9. Potentiometru | ||
+ | 10. Senzor de puls | ||
Ecranul LCD trebuie sa fie suficient de mare pentru a afisa Ora Minutul Secunda. | Ecranul LCD trebuie sa fie suficient de mare pentru a afisa Ora Minutul Secunda. | ||
+ | </note> | ||
+ | {{:pm:prj2022:sionescu:dinueduardadiel335caschemaelectrica.pdf|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | <note tip> | ||
In prima faza, proiectul este implementat in tinkercad etapa de software(codarea). Dupa ce testarea proiectului in Tinkercad se termina cu success, se implementeaza fizic. | In prima faza, proiectul este implementat in tinkercad etapa de software(codarea). Dupa ce testarea proiectului in Tinkercad se termina cu success, se implementeaza fizic. | ||
Line 44: | Line 50: | ||
4. Check Alarm: verifica daca timpul curent coincide cu alarma, in caz afirmativ porneste buzzer ul timp de 30 secunde.\\ | 4. Check Alarm: verifica daca timpul curent coincide cu alarma, in caz afirmativ porneste buzzer ul timp de 30 secunde.\\ | ||
{{:pm:prj2022:sionescu:dinueduardadiel335caproiect.png?400|}} | {{:pm:prj2022:sionescu:dinueduardadiel335caproiect.png?400|}} | ||
+ | </note> | ||
+ | Cod : | ||
+ | <code> | ||
+ | #include <LiquidCrystal.h> | ||
+ | LiquidCrystal lcd(12, 11, 5, 4, 3, 2); | ||
+ | #include <PulseSensorPlayground.h> | ||
+ | int button; | ||
+ | int h=1; | ||
+ | int m=45; | ||
+ | int s=00; | ||
+ | int flag=1; //PM | ||
+ | int sensePin = A0; //This is the Arduino Pin that will read the sensor output | ||
+ | int sensorInput; //The variable we will use to store the sensor input | ||
+ | double temp; //The variable we will use to store temperature in degrees. | ||
+ | int alarmMin = 21; | ||
+ | int alarmHour = 19; | ||
+ | int TempLED = 8; | ||
+ | int PulseLED = 10; | ||
+ | void showPulse(int value) { | ||
+ | lcd.print("Pulse : "); | ||
+ | int res = 0; | ||
+ | value = value / 100; | ||
+ | if(value <= 0) | ||
+ | value = 0; | ||
+ | while(value) | ||
+ | { | ||
+ | res = res * 10 + value % 10; | ||
+ | value /= 10; | ||
+ | } | ||
+ | | ||
+ | while(res > 0) { | ||
+ | char c = '0' + res % 10; | ||
+ | lcd.print(c); | ||
+ | res /= 10; | ||
+ | } | ||
+ | if(res == 0) | ||
+ | lcd.print("0"); | ||
+ | } | ||
+ | void configClock(int hour, int mins, int secs) { | ||
+ | h = hour; | ||
+ | m = mins; | ||
+ | s = secs; | ||
+ | } | ||
+ | void configAlarm(int alarmH, int alarmM) { | ||
+ | alarmMin = alarmM; | ||
+ | alarmHour = alarmH; | ||
+ | } | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | lcd.begin(16, 2); | ||
+ | pinMode(7, OUTPUT); | ||
+ | pinMode(6, INPUT); | ||
+ | pinMode(TempLED, OUTPUT); | ||
+ | pinMode(PulseLED, OUTPUT); | ||
+ | configClock(21,32,50); | ||
+ | configAlarm(21,33); | ||
+ | } | ||
+ | void temperature() { | ||
+ | sensorInput = analogRead(A0); | ||
+ | temp = (double)sensorInput / 1024; //find percentage of input reading | ||
+ | temp = temp * 5; //multiply by 5V to get voltage | ||
+ | temp-= 0.5; | ||
+ | temp = temp * 100; //Convert to degrees | ||
+ | Serial.println(temp); | ||
+ | if(temp > 10) { | ||
+ | digitalWrite(TempLED, HIGH); | ||
+ | } | ||
+ | else digitalWrite(TempLED, LOW); | ||
+ | } | ||
+ | |||
+ | void pulse() { | ||
+ | int sensorPulse = analogRead(A1); | ||
+ | Serial.println(sensorPulse); | ||
+ | showPulse(sensorPulse); | ||
+ | if(sensorPulse > 750) | ||
+ | { | ||
+ | digitalWrite(PulseLED, HIGH); | ||
+ | } | ||
+ | else digitalWrite(PulseLED, LOW); | ||
+ | } | ||
+ | |||
+ | void toneBuzzer(int duration) { | ||
+ | tone(7, 220, duration); | ||
+ | } | ||
+ | void checkAlarm(int min, int hour, int sec) { | ||
+ | if(min == alarmMin && hour == alarmHour && sec < 30) | ||
+ | toneBuzzer(1000);//1 sec | ||
+ | } | ||
+ | void loop() { | ||
+ | temperature(); | ||
+ | | ||
+ | lcd.setCursor(0,0); | ||
+ | lcd.print("Time "); | ||
+ | if(h<10)lcd.print("0"); | ||
+ | lcd.print(h); | ||
+ | lcd.print(":"); | ||
+ | if(m<10) lcd.print("0"); | ||
+ | lcd.print(m); | ||
+ | lcd.print(":"); | ||
+ | if(s<10) lcd.print("0"); | ||
+ | lcd.print(s); | ||
+ | if(flag==0) lcd.print(" AM"); | ||
+ | if(flag==1) lcd.print(" PM"); | ||
+ | lcd.setCursor(0,1);// for Line 2 | ||
+ | |||
+ | delay(987); | ||
+ | temperature(); | ||
+ | pulse(); | ||
+ | s=s+1; | ||
+ | if(s==60){ | ||
+ | s=0; | ||
+ | m=m+1; | ||
+ | } | ||
+ | if(m==60) | ||
+ | { | ||
+ | m=0; | ||
+ | h=h+1; | ||
+ | } | ||
+ | if(h==13) | ||
+ | { | ||
+ | h=1; | ||
+ | flag=flag+1; | ||
+ | |||
+ | if(flag==2)flag=0; | ||
+ | } | ||
+ | checkAlarm(m, h, s); | ||
+ | | ||
+ | } | ||
+ | </code> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | Ecranul LCD afiseaza cu succes timpul cu precizie, LED ul se lumineaza in caz de pericol, iar alarma suna corespunzator. | + | <note tip> |
+ | Ecranul LCD afiseaza cu succes timpul cu precizie, LED urile se lumineaza in caz de pericol, iar alarma suna corespunzator. | ||
+ | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | |||
+ | <note tip> | ||
Consider ca proiectul este important deoarece foloseste in scop didactic cunostinte de intreruperi, senzori. | Consider ca proiectul este important deoarece foloseste in scop didactic cunostinte de intreruperi, senzori. | ||
+ | </note> | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | <note tip> | ||
Main intai am rezolvat partea de afisaj timp. | Main intai am rezolvat partea de afisaj timp. | ||
Apoi am rezolvat partea de alarma. | Apoi am rezolvat partea de alarma. | ||
- | In final am facut partea de senzor de temperatura si LED. | + | In final am facut partea de senzor de temperatura si puls, alaturi iluminarea LED urilor. |
+ | |||
+ | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | |||
https://create.arduino.cc/projecthub/munir03125344286/add-buzzer-to-arduino-bf010b | https://create.arduino.cc/projecthub/munir03125344286/add-buzzer-to-arduino-bf010b | ||
https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/ | https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/ | ||
Line 64: | Line 209: | ||
https://www.arduino.cc/reference/en/libraries/liquidcrystal/ | https://www.arduino.cc/reference/en/libraries/liquidcrystal/ | ||
+ | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||