This shows you the differences between two versions of the page.
pm:prj2024:avaduva:stefan.botea [2024/05/25 19:47] stefan.botea [Software Design] |
pm:prj2024:avaduva:stefan.botea [2024/05/27 02:07] (current) stefan.botea [Software Design] |
||
---|---|---|---|
Line 61: | Line 61: | ||
Biblioteca LedControl: Folosită pentru a controla matricea de LED-uri MAX7219, simplificând comunicarea și oferind funcții pentru controlul LED-urilor individuale sau a rândurilor/coloanelor întregi. | Biblioteca LedControl: Folosită pentru a controla matricea de LED-uri MAX7219, simplificând comunicarea și oferind funcții pentru controlul LED-urilor individuale sau a rândurilor/coloanelor întregi. | ||
- | cpp | ||
- | Copy code | ||
#include <LedControl.h> | #include <LedControl.h> | ||
#include <Parola.h> | #include <Parola.h> | ||
Line 74: | Line 72: | ||
Funcții Implementate și Descrierea Codului | Funcții Implementate și Descrierea Codului | ||
Inițializare și Setare | Inițializare și Setare | ||
- | cpp | ||
- | Copy code | ||
- | #include <LedControl.h> | ||
- | int DO = 10; // Pin pentru ieșire digitală | + | {{:pm:prj2024:avaduva:botea.txt|}} |
- | int DA = A0; // Pin pentru ieșire analogică | + | |
- | int threshold = 527; // Prag minim pentru aprinderea LED-urilor | + | |
- | int thresholdMatrix = 527; // Prag minim pentru aprinderea matricei | + | |
- | int sensorvalue = 0; | + | În funcția loop, valoarea senzorului este citită folosind analogRead(), iar valoarea este afișată pe monitorul serial. Dacă valoarea senzorului depășește pragul predefinit, toate LED-urile sunt aprinse, iar matricea MAX7219 afișează un model. Dacă valoarea este sub prag, LED-urile și matricea sunt stinse. |
- | LedControl lc = LedControl(12, 13, 6, 1); // Pini: DataIn, CLK, LOAD, numDevices | ||
- | |||
- | void setup() { | ||
- | Serial.begin(9600); | ||
- | |||
- | // Inițializare MAX7219 | ||
- | lc.shutdown(0, false); // Pornire display | ||
- | lc.setIntensity(0, 8); // Setare intensitate (0 este minim, 15 este maxim) | ||
- | lc.clearDisplay(0); // Golire registru display | ||
- | | ||
- | // Inițializare pini LED ca ieșiri | ||
- | pinMode(3, OUTPUT); | ||
- | pinMode(4, OUTPUT); | ||
- | pinMode(5, OUTPUT); | ||
- | pinMode(7, OUTPUT); | ||
- | pinMode(8, OUTPUT); | ||
- | pinMode(9, OUTPUT); | ||
- | pinMode(2, OUTPUT); | ||
- | pinMode(11, OUTPUT); | ||
- | } | ||
- | În funcția setup, comunicarea serială este inițiată la o viteză de 9600 baud pentru depanare. Matricea MAX7219 este, de asemenea, inițializată aici, cu setări pentru intensitate și golire a display-ului. Toți pinii LED sunt setați ca ieșiri. | ||
- | |||
- | Bucle Principale și Citirea Senzorului | ||
- | cpp | ||
- | Copy code | ||
- | void loop() { | ||
- | sensorvalue = analogRead(DA); // Citire valoare analogică de la senzor | ||
- | Serial.print("Analog: "); | ||
- | Serial.print(sensorvalue); // Afișare valoare analogică | ||
- | Serial.print(" "); | ||
- | Serial.print("Digital: "); | ||
- | Serial.println(digitalRead(DO)); // Afișare valoare digitală | ||
- | |||
- | if (sensorvalue >= threshold) { // Comparare valoare analogică cu pragul | ||
- | digitalWrite(3, HIGH); | ||
- | digitalWrite(4, HIGH); | ||
- | digitalWrite(5, HIGH); | ||
- | digitalWrite(2, HIGH); | ||
- | digitalWrite(7, HIGH); | ||
- | digitalWrite(8, HIGH); | ||
- | digitalWrite(9, HIGH); | ||
- | digitalWrite(11, HIGH); | ||
- | |||
- | // Aprindere matrice LED MAX7219 | ||
- | } else { | ||
- | digitalWrite(3, LOW); | ||
- | digitalWrite(4, LOW); | ||
- | digitalWrite(5, LOW); | ||
- | digitalWrite(2, LOW); | ||
- | digitalWrite(7, LOW); | ||
- | digitalWrite(8, LOW); | ||
- | digitalWrite(9, LOW); | ||
- | digitalWrite(11, LOW); | ||
- | |||
- | // Stingere matrice LED MAX7219 | ||
- | } | ||
- | |||
- | if(sensorvalue >= thresholdMatrix) { | ||
- | for (int i = 0; i < 8; i++) { | ||
- | lc.setRow(0, i, B11111111); // Aprindere toate LED-urile în rând | ||
- | } | ||
- | } else { | ||
- | lc.clearDisplay(0); | ||
- | } | ||
- | } | ||
- | În funcția loop, valoarea senzorului este citită folosind analogRead(), iar valoarea este afișată pe monitorul serial. Dacă valoarea senzorului depășește pragul predefinit, toate LED-urile sunt aprinse, iar matricea MAX7219 afișează un model. Dacă valoarea este sub prag, LED-urile și matricea sunt stinse. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== |