Snack Vending Machine

Introducere

Un Snack Vending Machine (sau un automat de gustari) este un dispozitiv foarte util si ergonomic, deoarece nu este nevoie de resurse umane pentru a intercepta comanda, astfel ca actiunea de a oferi bani si de a primi bunul nu mai necesita o a doua persoana cu care sa interactionezi social. Din acest motiv, am decis sa creez un automat de snack-uri, iar scopul meu principal este ca acesta sa functioneze mai bine decat cele din cladirea EC.

Descriere generală

La un Arduino Uno am conectat mai multe module de intrare si iesire. Cu ajutorul a doua butoane, clientul isi poate alege unul dintre cele doua produse expuse. Primul produs are valoarea de O MONEDA iar al doilea produs valoreaza DOUA MONEZI. Dupa ce clientul isi alege un produs, LCDisplay-ul ii va arata numarul de monede ce trebuie introduse (echivalent cu valoarea produsului), iar LED-ul se va aprinde si va ramane aprins pe toata durata comenzii. LCD-ul va adapta in timp real cate monede a introdus, informatie utila in cazul in care isi doreste sa achizitioneze al doilea produs. Atunci cand senzorul de miscare a detectat suficiente monede, LCD-ul ii va confirma finalizarea comenzii, iar LED-ul se va stinge. Daca isi doreste, clientul poate sa achizitioneze inca un produs, iar ciclul se repeta.

Hardware Design

Lista de componente:

1. Arduino Uno R3 ATMega328P

2. 2 Butoane

3. 3 Rezistente de 220 Ohm

4. Breadboard cu 820 de puncte

5. LCD 16×2 albastru + Adaptor I2C

5. Senzor de miscare PIR HC-SR501

6. 1 LED

7. Fire de legatura

Simulare Circuit:

Software Design

  • IDE: Arduino.IDE
  • Biblioteci folosite: Wire.h, LiquidCrystal_I2C.h

  • La apasarea unui buton se produce o intrerupere care schimba valoarea button_x_press in 1. In loop() ma folosesc de un while pentru a procesa comanda atata timp cat valoarea ramane 1, si atunci cand se finalizeaza, button_x_press devine din nou 0.
  • Functiile payment() si thanks() se ocupa de afisarea mesajelor de confirmare.
  • Pentru a ma asigura ca detectez corect doua monede pentru cel de-al doilea obiect, folosesc o variabila motion pe care o initializez cu 0. Programul va cicla intr-un while() care continua sa citeasca input-ul senzorului de miscare. La detectarea unei monede, variabila devine 1 si programul iese din while(). Dupa un mic delay, se intra din nou intr-un while identic pentru a verifica si a doua moneda.

Rezultate Obţinute

Concluzii

Lucrul cu un Arduino poate fi pe cat de satisfacator, pe atat de stresant. Desi rezultatele se obtin usor, de foarte multe ori acesta va functiona necorespunzator din motive greu de controlat. In primul rand, fiecare piesa mai speciala a avut nevoie de testare minutioasa pentru a putea functiona, iar pinii pe cat de usor se conecteaza, pe atat de usor se si deconecteaza.

Si totusi, am invatat sa aplic teoria invatata la cursul de PM, ceea ce mi s-a parut foarte interesant.

Mi-ar fi placut sa pot folosi servo-uri pentru a imita rotatia spiralei care impinge produsul intr-un automat normal, insa nu am putut face niciunul dintre cele 3 servo-uri pe care le aveam sa fuctioneze. Codul pentru ele se afla comentat in program.

Download

Bibliografie/Resurse

Indienii de pe internet care m-au ajutat sa fac fiecare piesa in parte sa functioneze pentru a putea asambla tot proiectul (cu exceptia Servo-ului).

Export to PDF

pm/prj2023/drtranca/anca_elena.anghel.txt · Last modified: 2023/05/30 02:57 by anca_elena.anghel
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