Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul de față constă în realizarea unui cub format din led-uri. Funcția lui specială va fi reprezentată de opțiunea acestuia de a <fc #008080>reda o melodie</fc> și <fc #008080>de a ilumina în funcție de notele muzicale</fc> ale sunetelor.
S-a pornit de la ideea că tot ce luminează în culori diferite este frumos și am considerat că muzica poate reprezenta un punct în plus, care să transforme un simplu cub iluminat în ceva mult mai interesant . Obiectul prezentat, poate fi considerat atât o jucărie, cât și un obiect decorativ.
Proiectul se va baza pe schema block prezentă mai jos.
Acesta va folosi:
Modul de funcționare
1. Utilizatorul va apăsa butonul de START și se va aprinde astfel cubul format din leduri.
2. Se va citi prima melodie din cardul SD și difuzorul va începe să redea sunetele de pe acesta, în timp ce ledurile aferente cubului se vor aprinde în ritmul tonurilor muzicale.
3. Dacă utilizatorul va apăsa din nou pe butonul de start, melodia și iluminarea ledurilor se vor opri.
4. Dacă va apăsa pe cel de RESET, melodia curentă va începe de la capăt.
Listă de piese
Componentă | Cantitate | Preț |
---|---|---|
Placa de bază cu toate componentele acesteia | 1 | |
Led albastru | 64 | 31 RON |
Rezistor 220Ω | 16 | 1.6 RON |
Rezistor 2.2kΩ | 4 | 0.4 RON |
Placa de test universala 120×180 mm | 1 | 5 RON |
Fire mamă-mamă | 5 | 20 RON |
Tranzistor NPN BC337 | 4 | 1.3 RON |
Header de pini (40p) | 1 | 1 RON |
Buzzer activ de 5V | 1 | 2 RON |
Condensator electrolitic 100uF 35V | 1 | 0.5 RON |
Modul buzzer | 1 | 6 RON |
Butoane | 2 | 2 RON |
Cablu USB | 1 |
Scheme electrice
În realizarea proiectului, am urmat o serie de pași în construirea cubului de leduri.
Mediu de dezvoltare
Biblioteci utilizate
#include <avr/io.h> #include <avr/interrupt.h> #include <avr/sleep.h> #include <avr/wdt.h> #include <util/delay.h> #include <string.h> #include <stdio.h> #include <stdlib.h>
Structura proiect
Proiectul de față conține 3 fișiere, dintre care 2 sunt headere iar unul este cel în care s-au realizat implementările necesare. Pentru a ușura structura cubului, cei 16 pini folosiți pentru leduri sunt:
int pins[16] = { PC3, PC2, PC1, PC0, PC7, PC6, PC5, PC4, PA3, PA2, PA1, PA0, PA7, PA6, PA5, PA4 };
iar fiecare linie din cub reprezină unul din layerele:
#define LAYER1 PD0 #define LAYER2 PD1 #define LAYER3 PD4 #define LAYER4 PD7 int layers[4] = {LAYER1, LAYER2, LAYER3, LAYER4};
Astfel, proiectul este structurat în 5 părți:
void IO_init(void); // inițializarea cubului de leduri void IO_music_init(void); // inițializarea melodiei void activate_buttons(); //actviarea butoanelor
void fill_cube(void); // aprinderea totală a cubului void clear_cube(void); // stingerea cubului de leduri void layer_on(int); // aprinderea unui layer de leduri void layer_off(int); // stingerea unui layer de leduri void line_on(int); // aprinderea unei linii de leduri void line_off(int); //stingerea unei linii de leduri void turn_on_in_cube(void); // aprinderea cubului din interior void turn_off_in_cube(void); // stingerea cubului din interior void turn_on_out_cube(void); // aprinderea cubului exterior void turn_off_out_cube(void); // stingerea cubului exterior
// efectul de picătură de ploaie void drop(int p); void rain_effect(int iterations); // efectul de bătaie a inimii void heartbeat(int n); // model de smiley face void smiley_face(void); // linii care se mută sus/jos și stânga/dreapta void moving_lines(int direction);
void init_timer(); // inițializarea timer-ului pentru întreruperi void melody_model(int model_number); // modul în care se aprind ledurile în funcție de melodie
Efectele create de cub se regăsesc AICI, unde se pot admira în toată splendoarea lor.