Differences

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

Link to this comparison view

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>​
  
pm/prj2022/sionescu/sportwatch.1653851921.txt.gz · Last modified: 2022/05/29 22:18 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