Roxana-Elena NICOLESCU (78527) - Fitness Helper

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

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.

Descriere generală

Hardware Design

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

Software Design

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 .

Rezultate Obţinute

Download

Bibliografie/Resurse

pm/prj2018/amocanu/roxana.nicolescu.txt · Last modified: 2021/04/14 17:07 (external edit)
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