This is an old revision of the document!


How fast can you chug?

Autor: Nedelcu Stefan Marian
Grupa: 331CB

Introducere

Proiectul constă într-un dispozitiv care măsoară cât de repede poate o persoană să golească un pahar, făcând petrecerile mai amuzante =)

Descriere generală

Dispozivul este compus dintr-un senzor de greutate pe care va fi pus un pahar. În momentul în care paharul este ridicat, pornește un cronometru (afișat pe 7 segmente). Când paharul este așezat la loc, cronometrul se oprește indicand astfel cat de repede a fost golit acesta. Pentru a fi resetat cronometrul se apasă un buton.

Hardware Design

Lista piese:

Nume piesa Numar
Arduino uno 1
Butoane 1
Afisaj 4 digits - 7 segmente 1
Senzor greutate 1
Breadboard 1
Rezistente
Fire

Device-ul se folosește de un afișaj led de 4 caractere pe 7 segmente și anod comun (nu l-am găsit în Tinkercad pt. a fi reprezentat pe schemă). Acesta foloseste 13 pini: 7 pentru cele 7 segmente, 4 pentru a selecta pe care cifra se efectueaza scrierea si unul pentru alimentare. Acesta este alimentat folosind o baterie de 9V prin pinul Arduino Vin (pentru o mobilitate mai mare-nu trebuie conectat în permanență la un PC).

Software Design

Pe parcursul dezvoltarii proiectului am folosit Arduino IDE. Am folosit doua biblioteci auxiliare:

  1. “TimerOne.h” - folosit pentru a crea o intrerupere ce ajuta la implementarea timerului
  2. “SevenSegmentDisplay.h” - folosit pentru facilitarea afisarii caracterelor pe afisajul cu 7 segmente

Implementarea se foloseste de 2 variabile cheie:

  • timer: acesta este incrementat la fiecare apel al intreruperii
  • isTimerRunning: retine daca timerul ruleaza sau este oprit

Timerul este implementat cu ajutorul bibliotecii “TimerOne.h”, alegand sa creez o intrerupere care se va apela la fiecare 0.01s - in care, daca timerul ar trebui sa ruleze, il incrementez. In functia setup() se initializeaza toti pinii (cei 12 ai displayului ca output iar cel corespunzator senzorului de greutate ca INPUT_PULLUP). In functia loop() se determina valoarea care trebuie afisata pe timer (fiecare cifra a lui time drept char) si se afiseaza folosind biblioteca “SevenSegmentDisplay.h”. Aceasta se ocupa doar de afisajul unui singur digit (folosind functia timerDisplay.displayCharacter© - din acest motiv fiind nevoie de urmatoarele functii auxiliare:

  • pickDigit(x) → selecteaza cifra care trebuie afisata la un moment dat, setand pinul corespunzator ei pe LOW iar pe ceilalti pe HIGH
  • clearLEDs() → stinge toate LEDurile cifrei selectate la momentul respectiv, pentru a ma asigura ca nu exista conflicte in afisaj.

De asemenea, in loop, in functie de valoarea citita de pe senzor se seteaza variabila isTimerRunning (daca senzorul este apasat timerul sta pe loc, iar daca nu este apasat atunci timerul curge.)

Rezultate obtinute

Concluzii

Download

Jurnal

25.04.2021 : Alegere tema, completare introducere si descriere generala.

Bibliografie/Resurse

pm/prj2021/alazar/chug.1622414369.txt.gz · Last modified: 2021/05/31 01:39 by stefan.nedelcu1712
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