/*
Autore: Ivan Selva
Data 03/10/2023
Nome: Progetto: Comando dot Matrix
Scopo: comandare una barra a matrice di led; testo scorrevole, spostare un punto luminoso lungo la barra
*/
//-----------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------
// metto la libreria per gestire la funzione parola e testo
#include <MD_Parola.h> // libreria per gestire le parole
#include <MD_MAX72xx.h> // libreria per gestire
#include <SPI.h> // libreria per gestire
//-----------------------------------------------------------------------------------------------------------
#include "LedControl.h" // libreria per comandare la barra a led
// dichiaro le variabili dei pin digitali a cui è collegata la barra a led e di quanti elementi è formata la barra
#define pinCLK 4 // pin del Clock input
#define pinCS 3 // pin del Chip Select
#define pinDIN 2 // pin del Data input
#define ELEMENTS 4 // pin del Numero di elementi della barra (ogni elemento è formato da un quadrato 8X8)
// creo l'oggetto display matrix
LedControl lc = LedControl (pinDIN, pinCLK, pinCS, ELEMENTS);
//------------------------------------------------------------------------------------------------------------
// creo tre variabili tipo intero per gestire elemento, colonna, riga
int el =3;
int col =7;
int rw =0;
// creo quatto variabili per programma X - Y
int X= 8;
int Y= 0;
int resto= 0;
int risultato= 0;
// creo una vatriabile per comandare il pulsante
int pushstart = 5;
// creo una variabile per gestire una parola
char Messaggio = {"CIAO"};
//--------------------------------------------------------------------------------------------------------------
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
// inizializzo il display
for (int i=0; i < ELEMENTS; i++){
lc.shutdown(i, false);
lc.setIntensity(i,5);
lc.clearDisplay(i);
}
Serial.println("TUTTO OK");
// inizializzo l'ingresso digiale 5 come input per leggere lo stato del pulsante di start
pinMode(pushstart, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
// programma di movimento del punto luminoso
/*
lc.setLed(el, rw, 7-col, true); // accendo il led
delay(50);
lc.setLed(el, rw, 7-col, false); // spendo il led
delay(50);
col++;
if(col== 8){
col = 0;
el--;
if (el == -1){
el = 3;
rw++;
if (rw == 8) rw = 0;
}
}
*/
// prova di accensione di un singolo LED mediante a delle cordinate X ; Y
risultato= X/8;
resto= (X-(risultato*8));
if (digitalRead(pushstart)== HIGH){
Serial.println("SONO DENTRO IL CICLO IF DEL PULSANTE");
Serial.print("risultato= ");
Serial.println(risultato);
Serial.print("resto= ");
Serial.println(resto);
}
/*
if (resto == 0){
risultato= risultato -1;
Serial.print("matrice= ");
Serial.println(risultato);
lc.setLed(risultato, Y, 7, true);
delay(250);
lc.setLed(risultato, Y, 7, false);
delay(250);
} else{
Serial.print("martice= ");
Serial.println(risultato);
lc.setLed(risultato, Y, resto-1, true);
delay(250);
lc.setLed(risultato, Y, resto-1, false);
delay(250);
}
*/
/*
// attivo manualmente un LED nella matrice
lc.setLed(el, rw, col, true);
delay(500);
lc.setLed(el, rw, col, false);
delay(500);
*/
/*
// immetto un valore dalla lina seriale
X= Serial.read();
Serial.print("ho inserito il valore di X =");
Serial.println(X);
*/
}