Disco Car

Introducere

Prezentarea pe scurt a proiectului: Proiectul consta intr-o masinuta controlata cu ajutorul placutei Arduino, care, la apasarea unor butoane, declanșeaza mai multe semnale acustice si luminoase,iar comenzile din serial fac masina sa se miste. Scopul principal al proiectului este realizarea unui sistem integrat de divertisment. Am pornit de la ideea de a imbina notiunile invatate pe parcursul laboratoarelor de PM cu creativitatea. Astfel proiectul este util ca exemplu de combinare a elementelor de hardware cu sofware dar de asemenea este util si ca mijloc de divertisment.

Descriere generală

Butoane

  • Buton LED: aprinde toate LED-urile.
  • Buton Display: activează afișajul pe LCD.
  • Buton Start: porneşte redarea audio pe buzzer.

Arduino UNO R3

  • Primeşte semnale de la switch şi butoane.
  • Generează semnale PWM pentru buzzer şi motoare, şi comandă LED-urile pe GPIO.
  • Comunică cu display-ul pe I2C.

LCD Display (I2C)

  • Afișează mesaje.
  • Foloseşte I2C.

LED-uri

  • Indicatoare luminoase.
  • Controlate direct de Arduino prin GPIO.

Buzzer

  • Redă muzică.
  • Controlat prin PWM.

L298N Driver

  • Traduce semnalele PWM de la Arduino în curent pentru motoarele DC.
  • Oferă protecție la suprasarcină și alimentare separată pentru logică și motoare.

Motoare DC

  • Propulsia maşinuței: 6–12 V, conectate la ieșirile driverului.
  • Permit deplasarea masinutei.

Hardware Design

Componente folosite:

  • Arduino Uno
  • Motoare DC
  • Buzzer
  • Display
  • Butoane
  • LED-uri
  • Driver motoare L298N

Pini folositi:

Buzzer (HONK_PIN)

  • signal: D3
  • GND: GND Arduino
  • VCC: — buzzer pasiv nu are alimentare separată (folosește pin digital 3 pentru semnal)

Buton pentru buzzer (NITRO_BUTTON_PIN)

  • Pin semnal buton: D12
  • Celălalt picior: GND Arduino

Buton pentru LED-uri (LED_BUTTON_PIN)

  • Pin semnal buton: D2
  • Celălalt picior: GND Arduino

Buton pentru display (LCD_SWITCH_PIN)

  • Pin semnal buton: A3 (pin analogic folosit ca digital)
  • Celălalt picior: GND Arduino

LED verde (LED_GREEN_PIN)

  • Pin: D4
  • GND: prin rezistență către GND breadboard/Arduino

LED roșu (LED_RED_PIN)

  • Pin: D5
  • GND: prin rezistență către GND

LED1 verde (LED1_G)

  • Pin: D6
  • GND: prin rezistență către GND

LED1 roșu (LED1_R)

  • Pin: D7
  • GND: prin rezistență către GND

Motoare (control driver L298N) - pini de control IN1..IN4

  • IN1 (motor stânga) → D8
  • IN2 (motor stânga) → D9
  • IN3 (motor dreapta) → D10
  • IN4 (motor dreapta) → D11
  • ENA, ENB → Jumper (alimentați permanent pe driver)

Display LCD I2C

  • VCC → 5V
  • GND → GND
  • SDA → A4
  • SCL → A5

Implementare Hardware

Software Design

Mediu de dezvoltare: PlatformIO

Microcontroler: Arduino Uno

Cod scris în limbaj C++ cu utilizarea librăriilor Arduino.

Librării utilizate:

  • Arduino.h – bibliotecă de bază pentru funcționalități fundamentale: control pini, temporizări, comunicare serială.
  • Wire.h (implicit în LiquidCrystal_I2C) – pentru comunicarea I2C (folosită de LCD-ul I2C).
  • LiquidCrystal_I2C.h – pentru controlul afișajului LCD cu interfață I2C.

Funcții principale:

  • playmusic() – Redă melodia pe buzzerul conectat la pinul 3, folosind funcția tone().
  • setup() – Inițializează toate pinii (input cu pull-up pentru butoane, output pentru LED-uri și motoare), initializează LCD-ul, configurează întreruperi.
  • loop() – care detectează apăsările de butoane și comută stări (mod LED-uri, pornire/oprire buzzer), controlează modurile LED-urilor (normal sau intermitent - police), controlează pornirea/oprirea melodiilor pe buzzer la apăsarea butonului, controlează motoarele pe baza comenzilor primite (din serial sau variabilă cmd).

Logica butoanelor și stărilor:

  • Butonul buzzer (pin 12) comută o variabilă booleană buzzerOn.

Dacă buzzerOn == true, se pornește melodia, altfel se oprește.

  • Butonul LED-uri (pin 2) comută între moduri de iluminare a LED-urilor.
  • Butonul LCD (pin A3) comută backlight-ul LCD-ului.
  • Motoarele sunt controlate prin comenzi primite de la serial .

Pattern-uri de design: Debounce simplificat butoane: verificare stare anterioară și stare curentă pentru detectarea apăsărilor .

State machine simplificată: LED-urile au moduri NORMAL și POLICE care schimbă comportamentul în funcție de ledMode.

Event-driven buzzer: pornirea/oprirea buzzerului este controlată doar la apăsarea butonului (nu permanent).

Rezultate Obţinute

În urma implementării și testării proiectului, am reușit să dezvolt un sistem funcțional cu următoarele caracteristici:

  • Controlul motorului: Motoarele s-au putut porni și opri corect folosind comenzile implementate, iar direcția de deplasare (înainte, înapoi, stânga, dreapta) a fost controlată cu succes
  • Butoanele: au fost corect integrate, permițând schimbarea modurilor LED-urilor și controlul buzzerului si al display-ului
  • Buzzerul și melodia: Buzzerul a redat corect melodia la apăsarea butonului, iar oprirea melodiei la a doua apăsare s-a realizat fără probleme.
  • LED-urile: LED-urile s-au aprins în modurile programate (normal și intermitent).
  • Afișajul LCD: Display-ul LCD a afișat mesajele corespunzătoare

Concluzii

  • Acesta a fost primul meu proiect hardware-software cu Arduino, iar experiența a fost foarte interesanta. Am învățat să controlez motoare, LED-uri, buzzer și LCD, iar sistemul funcționează conform așteptărilor.

Download

Bibliografie/Resurse

pm/prj2025/atoader/alexia_maria.rat.txt · Last modified: 2025/05/28 17:17 by alexia_maria.rat
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