This shows you the differences between two versions of the page.
pm:prj2022:sionescu:sportwatch [2022/05/29 22:33] 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.\\ | ||
+ | </note> | ||
{{:pm:prj2022:sionescu:dinueduardadiel335cadiagram.png?400|}} | {{:pm:prj2022:sionescu:dinueduardadiel335cadiagram.png?400|}} | ||
+ | |||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
+ | <note tip> | ||
Piesele necesare sunt : | Piesele necesare sunt : | ||
1. Arduino | 1. Arduino | ||
Line 27: | 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 43: | 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 : | Cod : | ||
<code> | <code> | ||
#include <LiquidCrystal.h> | #include <LiquidCrystal.h> | ||
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); | LiquidCrystal lcd(12, 11, 5, 4, 3, 2); | ||
+ | #include <PulseSensorPlayground.h> | ||
int button; | int button; | ||
int h=1; | int h=1; | ||
Line 58: | Line 66: | ||
int alarmMin = 21; | int alarmMin = 21; | ||
int alarmHour = 19; | 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() { | void setup() { | ||
Serial.begin(9600); | Serial.begin(9600); | ||
Line 63: | Line 104: | ||
pinMode(7, OUTPUT); | pinMode(7, OUTPUT); | ||
pinMode(6, INPUT); | pinMode(6, INPUT); | ||
- | pinMode(8, OUTPUT); | + | pinMode(TempLED, OUTPUT); |
+ | pinMode(PulseLED, OUTPUT); | ||
configClock(21,32,50); | configClock(21,32,50); | ||
configAlarm(21,33); | configAlarm(21,33); | ||
Line 74: | Line 116: | ||
temp = temp * 100; //Convert to degrees | temp = temp * 100; //Convert to degrees | ||
Serial.println(temp); | Serial.println(temp); | ||
- | if(temp > 20) { | + | if(temp > 10) { |
- | digitalWrite(8, HIGH); | + | digitalWrite(TempLED, HIGH); |
} | } | ||
- | else digitalWrite(8, LOW); | + | else digitalWrite(TempLED, LOW); |
} | } | ||
- | void configClock(int hour, int mins, int secs) { | + | |
- | h = hour; | + | void pulse() { |
- | m = mins; | + | int sensorPulse = analogRead(A1); |
- | s = secs; | + | Serial.println(sensorPulse); |
- | } | + | showPulse(sensorPulse); |
- | void configAlarm(int alarmH, int alarmM) { | + | if(sensorPulse > 750) |
- | alarmMin = alarmM; | + | { |
- | alarmHour = alarmH; | + | digitalWrite(PulseLED, HIGH); |
+ | } | ||
+ | else digitalWrite(PulseLED, LOW); | ||
} | } | ||
+ | |||
void toneBuzzer(int duration) { | void toneBuzzer(int duration) { | ||
- | tone(7, 220, duration); | + | tone(7, 220, duration); |
} | } | ||
void checkAlarm(int min, int hour, int sec) { | void checkAlarm(int min, int hour, int sec) { | ||
if(min == alarmMin && hour == alarmHour && sec < 30) | if(min == alarmMin && hour == alarmHour && sec < 30) | ||
- | toneBuzzer(1000); | + | toneBuzzer(1000);//1 sec |
} | } | ||
void loop() { | void loop() { | ||
- | lcd.setCursor(0,0); | + | temperature(); |
+ | |||
+ | lcd.setCursor(0,0); | ||
lcd.print("Time "); | lcd.print("Time "); | ||
if(h<10)lcd.print("0"); | if(h<10)lcd.print("0"); | ||
lcd.print(h); | lcd.print(h); | ||
lcd.print(":"); | lcd.print(":"); | ||
- | if(m<10)lcd.print("0"); | + | if(m<10) lcd.print("0"); |
lcd.print(m); | lcd.print(m); | ||
lcd.print(":"); | lcd.print(":"); | ||
- | if(s<10)lcd.print("0"); | + | if(s<10) lcd.print("0"); |
lcd.print(s); | lcd.print(s); | ||
if(flag==0) lcd.print(" AM"); | if(flag==0) lcd.print(" AM"); | ||
if(flag==1) lcd.print(" PM"); | if(flag==1) lcd.print(" PM"); | ||
lcd.setCursor(0,1);// for Line 2 | lcd.setCursor(0,1);// for Line 2 | ||
- | lcd.print("Precision Clock"); | + | |
- | delay(987);// | + | delay(987); |
temperature(); | temperature(); | ||
- | s=s+1; | + | pulse(); |
+ | s=s+1; | ||
if(s==60){ | if(s==60){ | ||
s=0; | s=0; | ||
Line 130: | Line 178: | ||
} | } | ||
checkAlarm(m, h, s); | checkAlarm(m, h, s); | ||
+ | | ||
} | } | ||
</code> | </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 151: | 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> | ||