Differences

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

Link to this comparison view

pm:prj2021:alazar:chug [2021/05/31 01:07]
stefan.nedelcu1712
pm:prj2021:alazar:chug [2021/05/31 14:59] (current)
stefan.nedelcu1712
Line 18: Line 18:
 | Arduino uno       ​| ​ 1  | | Arduino uno       ​| ​ 1  |
 | Butoane ​          ​| ​ 1  | | Butoane ​          ​| ​ 1  |
-| Afisaj 7 segmente |  1  |+| Afisaj ​4 digits - 7 segmente |  1  |
 | Senzor greutate ​  ​| ​ 1  | | Senzor greutate ​  ​| ​ 1  |
-| Breadboard ​       |  1  |+| Breadboard ​mini   ​| ​ 1  | 
 +| Baterie 9V        ​| ​ 1  |
 | Rezistente ​       |     | | Rezistente ​       |     |
 | Fire              |     | | Fire              |     |
 +
 +{{ :​pm:​prj2021:​alazar:​chug_schema_electrica.png?​300 |}}
 +
 +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 folosește 13 pini: 7 pentru cele 7 segmente, unul pentru punctul de dupa cifră, 4 pentru a selecta pe care cifră se efectuează scrierea și unul pentru alimentare.  ​
 +  ​
 + ​Proiectul este alimentat folosind o baterie de 9V prin pinul Arduino Vin (pentru o mobilitate mai mare-nu trebuie conectat în permanentă la un PC). 
 === Software Design=== === Software Design===
 + Pe parcursul dezvoltării proiectului am folosit Arduino IDE. 
 + Am folosit două biblioteci auxiliare: ​
 +  -"​TimerOne.h"​-folosit pentru a crea o întrerupere ce ajută la implementarea timerului ​
 +  -"​SevenSegmentDisplay.h"​-folosit pentru facilitarea afișării caracterelor pe afișajul cu 7 segmente ​
 +  ​
 + ​Implementarea se folosește de 2 variabile cheie: ​
 +   * timer: acesta este incrementat la fiecare apel al întreruperii ​
 +   * isTimerRunning:​ reține dacă timerul rulează sau este oprit 
 + ​Timerul este implementat cu ajutorul bibliotecii "​TimerOne.h",​ alegând să creez o întrerupere care se va apela la fiecare 0.01s-în care, dacă timerul ar trebui să ruleze, se incrementează. ​
 +  ​
 + În funcția //setup()// se inițializează toți pinii (cei 12 ai displayului că output iar cel corespunzător senzorului de greutate și a butonului de reset ca INPUT_PULLUP). ​   ​
 +  ​
 + În funcția //loop()// se determină valoarea care trebuie afișată pe timer (fiecare cifră a lui time drept char) și se afișează folosind biblioteca "​SevenSegmentDisplay.h"​. Aceasta se ocupă doar de afișajul unui singur digit (folosind funcția timerDisplay.displayCharacter(c)-din acest motiv fiind nevoie de următoarele funcții auxiliare: ​
 +   * pickDigit(x) -> selectează cifra care trebuie afișată la un moment dat (x putând lua valori între 1 și 4 reprezentând cifra aleasă), setând pinul corespunzător ei pe LOW iar pe ceilalți pe HIGH 
 +   * clearLEDs() -> stinge toate Ledurile cifrei selectate la momentul respectiv, pentru a mă asigura că nu există conflicte în afișaj. ​
 + De asemenea, în loop, în funcție de valoarea citită de pe senzor se setează variabila isTimerRunning (dacă senzorul este apăsat timerul stă pe loc, iar dacă nu este apăsat atunci timerul curge). Când este apăsat butonul reset, variabilei timer îi este atribuită valoarea 0. 
 +
 +
 === Rezultate obtinute=== === Rezultate obtinute===
 +[[https://​youtu.be/​o7Cvynv5tXk | Video demonstrativ]]
 +
 +{{ :​pm:​prj2021:​alazar:​chug_demo1.jpg?​300 |}}
 +
 +{{ :​pm:​prj2021:​alazar:​chug_demo2.jpg?​300 |}}
 === Concluzii=== === Concluzii===
 +Proiectul a fost o experienta hands-on foarte buna, din care am invatat mai multe despre placuta Arduino si modul de lucru cu ea. Am aflat cum functioneaza un afisaj cu 7 segmente, mai ales cu mai multe caractere, experimentand in acelasi timp cu diverse biblioteci care faciliteaza lucrul cu acesta. De asemenea, am exersat mai mult lucrul cu intreruperi si timere.
 === Download=== === Download===
 +{{:​pm:​prj2021:​alazar:​chug_sursa.zip| Cod sursa}}
 === Jurnal=== === Jurnal===
 //​25.04.2021//​ : Alegere tema, completare introducere si descriere generala. //​25.04.2021//​ : Alegere tema, completare introducere si descriere generala.
 +
 +//​15.06.2021//​ : Cumpararea tuturor pieselor necesare.
 +
 +//​22.06.2021//​ : Montarea afisajului pe 7 segmente si a senzorului
 +
 +//​27.06.2021//​ : Implementarea algoritmului pentru timer
 +
 +//​30.06.2021//​ : Atasarea butonului de reset si a bateriei de 9V
 === Bibliografie/​Resurse=== === Bibliografie/​Resurse===
-[[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​alazar/​chug?​do=export_pdf|Chug.pdf]]+  * [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab1-2021 | Laboratorul de timere/​intreruperi]] 
 +  * [[https://​github.com/​alikabeel/​Letters-and-Numbers-Seven-Segment-Display-Library | SevenSegmentDisplay.h]] 
 +  * [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​alazar/​chug?​do=export_pdf|Chug.pdf]]
pm/prj2021/alazar/chug.1622412423.txt.gz · Last modified: 2021/05/31 01:07 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