Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul este un counter pentru realizarea unui exercitiu fizic pentru biceps cu gantera.
Scopul proiectul este de a numara cate exercitii (miscari repetate) a facut utilizatorul in rutina lui de fitness. La fiecare 10 miscari repetate, va fi anuntat printr-un sunet.
Ideea a venit in timpul unui antrenament fizic, cand am uitat de mai multe ori sa numar cate exercitii am executat.
Proiectul ar fi util pentru cei interesati sa faca miscare in timpul liber, si care nu vor sa se concentreze la a numara, ci sa se relaxeze, eventual sa asculte muzica, etc.
Lista componente externe:
- Modul LCD de 2.8'' cu SPI și Controller ILI9341 (240×320 px)
- Buzzer Activ de 3 V
- Modul Accelerometru și Giroscop MPU6500 GY
Mediu de dezvoltare
Pentru realizarea aplicatiei, am lucrat in Arduino IDE.
Bootloader-ul folosit este cel de Arduino si a fost incarcat cu AVR ISP MKII si proiectul MightyCore
Biblioteci utilizate:
→ Wire (comunicarea I2C → accelerometru)
→ SPI (comunicarea SPI → lcd)
→ Adafruit_ILI9341 (pentru lcd)
→ Adafruit_GFX (pentru lcd)
Implementare
Implementarea este formata din doi pasi:
- citirea datelor initiale (pozitiile sus si jos ale ganterei)
- determinarea schimbarii pozitiei ganterei, mai precis, schimbarea din pozitia sus → jos si incrementarea contorului.
La primul pas, se citesc coordonatele X si Z si se calculeaza limitele (MIN si MAX) pentru ambele pozitii:
AcX = Wire.read() << 8 | Wire.read(); AcY = Wire.read() << 8 | Wire.read(); AcZ = Wire.read() << 8| Wire.read(); AcXSMIN = AcX - 7000; AcXSMAX = AcX + 7000; AcZSMIN = AcZ - 7000; AcZSMAX = AcZ + 7000;
Se face verificarea daca gantera se afla in una din cele doua zone, facandu-se comparatia coordonatelor x si z cu ACXMIN, ACXMAX, ACZMIN, ACZMAX.
if (AcX < AcXJMAX && AcX > AcXJMIN && AcZ < AcZJMAX && AcZ > AcZJMIN) { stare = 0; }
if (AcX < AcXSMAX && AcX > AcXSMIN && AcZ < AcZSMAX && AcZ > AcZSMIN) { stare = 1; }
Pentru a detecta miscarea, se retine ultima stare si se compara cu cea actuala. In caz ca s-a facut trecerea de la sus → jos, se incrementeaza contorul si daca s-a ajuns la multiplu de 10, va suna buzzerul timp de 100 * 15 milisecunde .
MightyCore Adafruit-GFX Adafruit-ILI9341 SPI Wire