This is an old revision of the document!
Cu totii ne-am plictisit de jucariile clasice care sunt mereu vesele si care inspira un aer pozitiv. Eu o sa fac o jucarie pasiva-agresiva care va impartasi ura si glume, o jucarie mai amuzanta care nu este detinata copiilor, va fi fioroasa cu ochii rosii si o voce agresiva, dar sub o cochilie safe de baby yoda.
Jucăria este compusă dintr-un modul principal cu microcontroler, senzori de mișcare, boxa portabila, LED-uri rosii.
Jucaria va avea un corp de baby yoda in care voi pune piese hardware ca sa devina “inteligenta”. Aceasta are 2 butoane pe brate ca sa poti interactiona cu ea, dar nu doar atat, si un accelerometru (WOW), astfel sa-si dea seama daca o zgudui prea tare sau daca o arunci in sus. Foloseste o tehnologie wireless foarte avansata numita Bluetooth ca sa se conecteze la (TOATE) boxele portabile pornite in jur si sa-si faca glasul auzit (E si o unealta de terorism din acest motiv). Are mai multe interactiuni gata de folosit de catre useri, este rezistenta, lipita si rezista la cazaturi (si la copii de 3 ani, am testat).
Toate modulele comunică cu microcontrolerul (ESP32 sau similar). Codul rulează local, cu opțională conectare la internet pentru generarea de replici.
Poza prototip 1:
Poza prototip 2:
Poza dupa lipit complet:
Platformă: - Arduino IDE
Librării folosite: - SPI.h, SD.h — acces card SD *(Lab 4, Lab 5)* - BluetoothA2DPSource.h — streaming audio prin Bluetooth - Wire.h, Adafruit_Sensor.h, Adafruit_ADXL345_U.h — accelerometru ADXL345 *(Lab 2)* - math.h, Arduino.h
Surse 3rd-party: - Adafruit_ADXL345_U — comunicare I2C cu senzorul de mișcare - BluetoothA2DPSource — streaming audio A2DP
Funcționalități implementate: - Inițializare SD card - Redare fișiere WAV prin Bluetooth - Control intensitate LED prin PWM în funcție de sunet - Control butoane cu debounce - Joc de memorie cu LED-uri - Detectare mișcare (shake) cu accelerometru - LED breathing în stare de repaus - Double-tap pentru inițializarea jocului - Feedback audio și vizual (LED) pe niveluri
Algoritmi și structuri: - Debounce software cu timere - Generare secvențe aleatoare cu `random()` - Comparare input utilizator cu secvență memorată - Calcul accelerație totală: `sqrt(x² + y² + z²)` - PWM control cu `ledcWrite()` și `ledcAttach()` - Callback-uri pentru redare audio prin Bluetooth
Funcții implementate (etapa 3): - `get_audio_data()` — trimite date audio Bluetooth - `playFile()` — redă fișier audio de pe SD - `startMemoryGame()`, `showSequence()`, `handleMemoryGame()`, `gameOver()`, `gameWin()` — logica jocului - `setup()`, `loop()` — inițializare și execuție principală
Laboratoare utilizate: - Lab 0: Arduino IDE - Lab 1: PWM, debounce, LED breathing - Lab 2: accelerometru ADXL345 (I2C) - Lab 3: modularizare cod - Lab 4: inițializare SD card - Lab 5: redare fișiere WAV - Lab 6: joc cu LED-uri și butoane (Simon Says)
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.