Ciao a tutti;
Perchè se posso leggere e scrivere i valori richiamandoli dall'array e non posso ne leggere ne scrivere i valori sulla variabile singola?
Il serial.print nel ciclo loop è un esempio.
unsigned long Pgiro;
typedef struct {
const char nome[7]; // Nome del contatto
const byte pin; // Pin di arduino
boolean attuale;
boolean precedente;
boolean futuro;
} InOut;
// nota A0=54 A15=69
InOut Nome1 = { "Nome 1", 26 , 0 , 0 , 0 }, // 0
Nome2 = { "Nome 2", 27 , 0 , 0 , 0 }, // 1
Nome3 = { "Nome 3", 28 , 0 , 0 , 0 }, // 2
Nome4 = { "Nome 4", 29 , 0 , 0 , 0 }, // 3
Nome5 = { "Nome 5", 30 , 0 , 0 , 0 }, // 4
Nome6 = { "Nome 5", 31 , 0 , 0 , 0 }, // 4
Nome7 = { "Nome 5", 32 , 0 , 0 , 0 }, // 4
Nome8 = { "Nome 5", 33 , 0 , 0 , 0 }, // 4
Nome9 = { "Nome 5", 34 , 0 , 0 , 0 }, // 4
Nome10 = { "Nome 5", 35 , 0 , 0 , 0 }; // 4
InOut ArrayIn[] { Nome1, Nome2, Nome3, Nome4, Nome5 };
InOut ArrayOut[] { Nome6, Nome7, Nome8, Nome9, Nome10 };
void setup() { Serial.begin(115200);
for (int x=0; x<5; x++) { pinMode (ArrayIn [x].pin, INPUT ); // Imposto i pin come INPUT
digitalWrite(ArrayIn[x].pin,HIGH);} // Attivo la resistenza interna di pullup
for (int x=0; x<5; x++) { pinMode (ArrayOut[x].pin, OUTPUT ); } // imposto i pin come OUTPUT
delay(350); } // Fine void setup
void loop(){
unsigned long Tgiro = millis();
if ( Tgiro > Pgiro+500 ) {
for (int x=0; x<5; x++) {
ArrayIn[x].attuale = digitalRead (ArrayIn[x].attuale); // Aggioro il valore di "variabile.attuale" leggendo il rispettivo "variabile.pin"
}//fine ciclo for
for (int x=0; x<5; x++) {
digitalWrite (ArrayOut[x].attuale , ArrayOut[x].futuro ); //Imposto l'uscita in funzione della variabile futuro
ArrayOut[x].attuale = digitalRead (ArrayOut[x].pin); } // aggiorno il valore di "variabile.attuale"
Pgiro=Tgiro;}// fine IF
Serial.println( ArrayIn[1].attuale ); // funziona
Serial.println( Nome1.attuale ); // non funziona
} //Fine void loop