Aparat de numarat genoflexiuni
Introducere
Prezentarea pe scurt a proiectului:
Numara genoflexiuni facute corect (inaltimea la care se afla giroscopul ⇐ o valoare pre-setata)
Ajuta sportivii sa tina un contor pentru genoflexiuni
M-am apucat recent de sport, m-am gandit ca are utilitate practica
Promoveaza un stil de viata sanatos
Descriere generala
Hardware Design
Lista de piese:
* Arduino Uno R3
* Senzor Ultrasonic HC-SR04 (pini: ECHO legat la D2, TRIG legat la D3, VCC la 5V, GND la GND)
* Display LED tip ceas TM1637 (pini: CLK legat la D4, DIO legat la D5, VCC la 5V, GND la GND)
Software Design
Descrierea codului aplicatiei (firmware):
Mediu de dezvoltare: Arduino IDE
Librarii: TM1637.h
-
Legare pini: ECHO - D2, TRIG - D3, CLK - D4, DIO - D5
Inaltimea superioara 135cm (#define superior 135)
Inaltimea inferioara 100cm (#define inferior 100)
Am folosit variabilele duration si distance pentru masurarea distantei folosind senzorul ultrasonic, variabila counter pentru numararea genoflexiunilor si variabila measure pentru a putea verifica atingerea pragurilor de inaltime: superior, respectiv inferior.
In setup am setat luminozitatea display-ului la 2, am setat modul de functionare pentru pinii senzorului ultrasonic, am pornit interfata seriala pentru afisaj de debug (inaltimi citite) si am initializat counter si measure la 0.
In loop, pentru citirea distantei folosesc senzorul ultrasonic pentru a trimite si primi unde sonore si fac calculul distantei folosind formula: “durata semnal * 0.034 / 2” (impartirea la 2 pentru tur-retur), apoi afisez la consola seriala distanta in cm.
Tot in loop are loc si mecanismul de verificat genoflexiuni, in felul urmator:
daca distanta citita se afla sub pragul inferior si variabila measure este setata la 1, se incrementeaza contorul si se seteaza variabila measure la 0. Acest proces este urmat de un delay de 100ms.
daca distanta citita este mai mare sau egala cu diferenta dintre pragul inferior si 3 (marja de eroare) si variabila measure este setata la 0, se seteaza variabila measure la 1 si se face delay de 100ms.
la sfarsit se face afisarea contorului (counter) pe display-ul LED folosind functia displayNumber, implementata la sfarsit. Aceasta primeste ca input un numar intreg si ii afiseaza fiecare cifra la pozitia sa corespunzatoare pe display.
Preview
Rezultate Obtinute
Mod functionare:
Senzorul de distanta ultrasonic HC-SR04 este prins de o scandura de lemn dreapta, acesta prin 2 pioneze pe diagonala.
Display-ul LED de tip ceas TM1637 este prins prins de aceeasi scandura, prin 2 pioneze pe orizontala, superior.
Bara de lemn este tinuta de utilizator cu senzorul de distanta indreptat in jos si cu display-ul cu fata catre acesta, la nivel cu umerii.
In momentul in care utilizatorul face o genoflexiune completa (pentru mine am setat distanta de sus la 135cm si cea de jos la 100cm - pentru verificare), acesta trebuie sa tina bara orientata in acelasi fel, pentru a putea masura corect distantele.
Contorul incepe de la 0 si este incrementat cu fiecare genoflexiune facuta corect de catre utilizator.
Download
Bibliografie