Differences

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

Link to this comparison view

pm:prj2022:sionescu:sportwatch [2022/05/11 12:01]
eduard_adiel.dinu
pm:prj2022:sionescu:sportwatch [2022/06/02 16:19] (current)
eduard_adiel.dinu
Line 1: Line 1:
 ====== Sport Watch ====== ====== Sport Watch ======
-===== Introducere ===== 
 Autor : **Dinu Eduard - Adiel**\\ Autor : **Dinu Eduard - Adiel**\\
  
Line 6: 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 pulsul ​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 ​in caz ca nu este oprita.+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 pulsometru si intreruperea data de un buton, care are rolul de a opri alarma.\\ + Sunt 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>​ 
- Sunt iesiri : sunetul facut de Buzzer cand trebuie sa sune alarma la o anumita ora, LED-ul care se va aprinde cu rosu daca pulsul ​este in zona de pericol, Ora, minutul si secunda afisata pe ecran si Pulsul citit de senzor.\\ +{{:​pm:​prj2022:​sionescu:​dinueduardadiel335cadiagram.png?400|}}
- +
-{{:​pm:​prj2022:​sionescu:​diagrama.png?400|}}\\ +
-3. __Hardware design__+
  
 +===== Hardware Design =====
 +<note tip>
  Piesele necesare sunt :  Piesele necesare sunt :
  1. Arduino  1. Arduino
Line 24: Line 26:
  3. 1 Buzzer  3. 1 Buzzer
  4. 1 ecran LCD  4. 1 ecran LCD
- 5. 1 senzor de puls + 5. 1 senzor de temperatura TMP36 
- 6. 1 buton + 6. 1 LED 
- 7. rezistente ​+ 7. rezistente ​
  8. fire  8. fire
 +        9. Potentiometru
 +        10. Senzor de puls
  
- Ecranul LCD trebuie sa fie suficient de mare pentru a afisa Ora Minutul Secunda, dar si Pulsul rezultat. 
  
-4__Software Design__+ Ecranul LCD trebuie sa fie suficient de mare pentru a afisa Ora Minutul Secunda. 
 +</​note>​ 
 +{{:​pm:​prj2022:​sionescu:​dinueduardadiel335caschemaelectrica.pdf|}}
  
- In prima faza, proiectul este implementat in tinkercad ​in etapa de hardware(legarea pieselor). Dupa aceea se trece la etapa de software(codarea). Dupa ce testarea proiectului in Tinkercad se termina cu success, se implementeaza fizic.+===== 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.
  
-5. __Concluzii__ +S-a folosit LiquidCrystal pentru LCD. Functiile folosite sunt :  
- +tone, setcursor, print, analogread, digitalWrite. 
 +Am definit functii ajutatoare : 
 +1.ConfigClock si ConfigAlarm : seteaza parametrii interni(de la ce ora, minut, secunda incepe ceasul sa afiseze respectiv cand este alarma) 
 +2.toneBuzzer : apeleaza functia tone cu o perioada data parametru, o frecventa si un pin preselectat. 
 +3. temperature:​ verifica daca senzorul detecteaza o temperatura prea ridicata pentru a face sport, caz in care aprinde LED ul.  
 +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|}} 
 +</​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 ===== 
 + 
 +<note tip> 
 + Ecranul LCD afiseaza cu succes timpul cu precizie, LED urile se lumineaza in caz de pericol, iar alarma suna corespunzator. 
 +</​note>​ 
 + 
 +===== 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 =====
 +<note tip>
 +        Main intai am rezolvat partea de afisaj timp.
 +        Apoi am rezolvat partea de alarma.
 +        In final am facut partea de senzor de temperatura si puls, alaturi iluminarea LED urilor.
 +      ​
 +</​note>​
 +
 +===== Bibliografie/​Resurse =====
  
 +https://​create.arduino.cc/​projecthub/​munir03125344286/​add-buzzer-to-arduino-bf010b
 +https://​www.arduino.cc/​reference/​en/​language/​functions/​advanced-io/​tone/​
 +https://​learn.adafruit.com/​tmp36-temperature-sensor/​using-a-temp-sensor
 +https://​www.arduino.cc/​en/​Tutorial/​LibraryExamples/​LiquidCrystalSetCursor
 +https://​www.arduino.cc/​reference/​en/​libraries/​liquidcrystal/​
  
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/sionescu/sportwatch.1652259703.txt.gz · Last modified: 2022/05/11 12:01 by eduard_adiel.dinu
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