This shows you the differences between two versions of the page.
pm:prj2024:avaduva:stefan.botea [2024/05/25 19:48] stefan.botea [Software Design] |
pm:prj2024:avaduva:stefan.botea [2024/05/27 02:07] (current) stefan.botea [Software Design] |
||
---|---|---|---|
Line 73: | Line 73: | ||
Inițializare și Setare | Inițializare și Setare | ||
- | #include <LedControl.h> | + | {{:pm:prj2024:avaduva:botea.txt|}} |
- | int DO = 10; // Pin pentru ieșire digitală | ||
- | 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; | ||
- | |||
- | 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 | ||
- | 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. | Î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. | ||