Buonasera a tutti ragazzi, premetto che sono nuovo sia del forum sia dell'immenso mondo di arduino.
Premessa: sono un ragazzo che sta andando verso la maturità e come progetto d'esame sto programmando un semplicissimo gioco con arduino MEGA (su consiglio del mio professore a causa dell'elevato numero di uscite e ingressi che devo utilizzare).
Purtroppo mentre stavo testando il tutto, sono comparsi alcuni errori, che fortunatamente ho individuato ma che non riesco a risolvere visto che non ho mai programmato con questo tipo di microcontrollori.
Il quesito che vado a porvi è il seguente:
ho una matrice (chiamata matrice[4][7]), nella quale devo inserire e/o leggere 0 e 1 a seconda dei vari casi che mi si presentano. Quindi, come da titolo, ho creato una subroutine di lettura della matrice (legge i valori dai digital pin tramite digitalRead e li pone nella matrice) e una per la scrittura ( che tramite il digitalWrite legge ciò che è nella matrice e lo fa uscire su altri digital pin).
void lettura()
{
m=7; /*metto in m il numero di colonne*/
i=23; /*metto in u il numero del primo digital pin*/
for(n=4;n>0;n--) /*con questo for mi sposto nelle righe*/
{
dep=m; /*deposito il valore di m in dep per poterci lavorare*/
dep=dep-dep1; /*sottraggo con il secondo deposito che inizialmente è 0*/
for(dep;dep>dep1;dep--) /*dep=m, confronto il primo deposito col terzo che serve a centrare i gruppi, sottraggo*/
{
matrice[n][dep]=digitalRead(i); /*lo leggo*/
i=i+2; /*incremento di due il pin u perchè le uscite sono le dispari da 22 a 52*/
}
dep1++; /*incremento il primo deposito*/
}
}
void scrittura()
{
m=7; /*metto in m il numero di colonne*/
u=22; /*metto in u il numero del primo digital pin*/
for(n=4;n>0;n--) /*con questo for mi sposto nelle righe*/
{
dep=m; /*deposito il valore di m in dep per poterci lavorare*/
dep=dep-dep1; /*sottraggo con il secondo deposito che inizialmente è 0*/
for(dep;dep>dep1;dep--) /*dep=m, confronto il primo deposito col terzo che serve a centrare i gruppi, sottraggo*/
{
digitalWrite(u,(matrice[n][dep])); /*lo scrivo*/
u=u+2; /*incremento di due il pin u perchè le uscite sono le dispari da 22 a 52*/
}
dep1++; /*incremento il primo deposito*/
}
}
Quando faccio girare il programma, gira come se non leggesse nulla e di conseguenza agisce sempre nello stesso modo, quando i casi presi in considerazione dal programma sono più di 20, e stessa cosa non scrive e quindi i led in uscita non cambiano...
Ho provato di tutto, ma niente, ed essendo ignorante in materia chiedo aiuto. Magari non ho messo una qualche libreria oppure ho fatto qualcosa che arduino non concede.
Grazie in anticipo.