[ITA] Ridurre codice con dei loop for ad incremento

Salve, ho questo codice che vorrei ridurlo con dei for ad incremento sia nei pinmode e che nei digitalread e nella seriale tranne il button_8, button_9 che fanno cose diverse.
Vi mostro il codice:

#define led_pin 11
#define BUTTON_PIN2 2
#define BUTTON_PIN3 3
#define BUTTON_PIN4 4
#define BUTTON_PIN5 5
#define BUTTON_PIN6 6
#define BUTTON_PIN7 7
#define BUTTON_PIN8 8
#define BUTTON_PIN9 9

bool led_state;

typedef struct {
  int pin_red = 16;
  int pin_blue = 18;
  int pin_green = 17;
} led_rgb;

led_rgb LED_RGB;

void setup() {
  Serial.begin(115200);
  pinMode(led_pin, OUTPUT);
  pinMode(LED_RGB.pin_blue, OUTPUT);
  pinMode(LED_RGB.pin_red, OUTPUT);
  pinMode(LED_RGB.pin_green, OUTPUT);
  for(int i = 0; i < 9; i++)
  {
      pinMode(BUTTON_PIN[i], INPUT_PULLUP);
  
  }
  digitalWrite(LED_RGB.pin_green,LOW);
  digitalWrite(LED_RGB.pin_blue, LOW);
  digitalWrite(LED_RGB.pin_red, HIGH);
  pinMode(BUTTON_PIN8, INPUT_PULLUP);
  pinMode(BUTTON_PIN9, INPUT_PULLUP);
}

void loop() {
for(int i = 0; i < 9; i++)
  {
      const int BUTTON_[i] = digitalRead(BUTTON_PIN[i]);

  } 
  Serial.print("B2=");
  Serial.print(!BUTTON_2);
  Serial.print(";");
  Serial.print("B3=");
  Serial.print(!BUTTON_3);
  Serial.print(";");
  Serial.print("B4=");
  Serial.print(!BUTTON_4);
  Serial.print(";");
  Serial.print("B5=");
  Serial.print(!BUTTON_5);
  Serial.print(";");
  Serial.print("B6=");
  Serial.print(!BUTTON_6);
  Serial.print(";");
  Serial.print("B7=");
  Serial.print(!BUTTON_7);
  Serial.print(";");
  Serial.print("B8=");
  Serial.print(!BUTTON_8);
  Serial.print(";");
  Serial.print("B9=");
  Serial.print(!BUTTON_9);
  Serial.print(";");
  Serial.println("");
  delay(1000);
}

avete idea perché mi da errore dicendo:

d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino: In function 'void setup()':
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:29:15: error: 'BUTTON_PIN' was not declared in this scope
   pinMode(BUTTON_PIN[i], INPUT_PULLUP);
           ^~~~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:29:15: note: suggested alternative: 'BUTTON_PIN4'
   pinMode(BUTTON_PIN[i], INPUT_PULLUP);
           ^~~~~~~~~~
           BUTTON_PIN4
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino: In function 'void loop()':
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:42:42: error: 'BUTTON_PIN' was not declared in this scope
   const int BUTTON_[i] = digitalRead(BUTTON_PIN[i]);
                                      ^~~~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:42:42: note: suggested alternative: 'BUTTON_PIN4'
   const int BUTTON_[i] = digitalRead(BUTTON_PIN[i]);
                                      ^~~~~~~~~~
                                      BUTTON_PIN4
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:46:17: error: 'BUTTON_2' was not declared in this scope
   Serial.print(!BUTTON_2);
             ^~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:46:17: note: suggested alternative: 'BUTTON_PIN2'
   Serial.print(!BUTTON_2);
             ^~~~~~~~
             BUTTON_PIN2
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:49:17: error: 'BUTTON_3' was not declared in this scope
   Serial.print(!BUTTON_3);
             ^~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:49:17: note: suggested alternative: 'BUTTON_PIN3'
   Serial.print(!BUTTON_3);
             ^~~~~~~~
             BUTTON_PIN3
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:52:17: error: 'BUTTON_4' was not declared in this scope
   Serial.print(!BUTTON_4);
             ^~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:52:17: note: suggested alternative: 'BUTTON_PIN4'
   Serial.print(!BUTTON_4);
             ^~~~~~~~
             BUTTON_PIN4
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:55:17: error: 'BUTTON_5' was not declared in this scope
   Serial.print(!BUTTON_5);
             ^~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:55:17: note: suggested alternative: 'BUTTON_PIN5'
   Serial.print(!BUTTON_5);
             ^~~~~~~~
             BUTTON_PIN5
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:58:17: error: 'BUTTON_6' was not declared in this scope
   Serial.print(!BUTTON_6);
             ^~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:58:17: note: suggested alternative: 'BUTTON_PIN6'
   Serial.print(!BUTTON_6);
             ^~~~~~~~
             BUTTON_PIN6
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:61:17: error: 'BUTTON_7' was not declared in this scope
   Serial.print(!BUTTON_7);
             ^~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:61:17: note: suggested alternative: 'BUTTON_PIN7'
   Serial.print(!BUTTON_7);
             ^~~~~~~~
             BUTTON_PIN7
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:64:17: error: 'BUTTON_8' was not declared in this scope
   Serial.print(!BUTTON_8);
             ^~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:64:17: note: suggested alternative: 'BUTTON_PIN8'
   Serial.print(!BUTTON_8);
             ^~~~~~~~
             BUTTON_PIN8
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:67:17: error: 'BUTTON_9' was not declared in this scope
   Serial.print(!BUTTON_9);
             ^~~~~~~~
d:\nb-desktop\luigi\Documents\Arduino\prove\prove.ino:67:17: note: suggested alternative: 'BUTTON_PIN9'
   Serial.print(!BUTTON_9);
             ^~~~~~~~
             BUTTON_PIN9
Compilation error: Error: 2 UNKNOWN: exit status 1

Mi dice che non trova BUTTON_9 e mi dice di chiamarli BUTTON_PIN9

avete idea?

grazie mille e buona serata.

@gigetto1982 : prima di tutto, cortesemente, ricordati di racchiudere sempre sia il codice che tutti i messaggi di errore entro gli appositi TAG che ti inserisce il bottone </> … in pratica, selezioni il pezzo che hai scritto e usi il bottone </> ed ottieni quello che vedi sopra (… che ho sistemato io).

Grazie.

Per il resto … stai sbagliado sia nella definizione che nell’uso degli array … controlla bene quello che hai scritto … sei nel rigido ‘C’ e non in uno degli altri linguaggi magari più flessibili … :wink:

Guglielmo

ok, grazie mille … comunque lo avevo messo nel code . . ma non so visto che nuovo il forum devo impararlo ad usarlo .
L’unico che prima ho incollato il codice e poi messo con l’icona </> Ma non so e non è venuto fuori quando è stato postato.
Per il for … vedo come fare grazie mille per l’informazione.
Buona serata.

allora c’è lo fatta ma però non so perché non mi stampa la seriale… mi protesti verificare se è cosi che dovevo fare ?
`#define led_pin 11
#define BUTTON_PIN8 8
#define BUTTON_PIN9 9

bool led_state;

typedef struct {
int pin_red = 16;
int pin_blue = 18;
int pin_green = 17;
} led_rgb;

led_rgb LED_RGB;

void setup() {
Serial.begin(9600);
pinMode(led_pin, OUTPUT);
pinMode(LED_RGB.pin_blue, OUTPUT);
pinMode(LED_RGB.pin_red, OUTPUT);
pinMode(LED_RGB.pin_green, OUTPUT);

for (int i = 2; i < 8; i++) {
pinMode(i, INPUT_PULLUP);
}

digitalWrite(LED_RGB.pin_green, LOW);
digitalWrite(LED_RGB.pin_blue, LOW);
digitalWrite(LED_RGB.pin_red, HIGH);
pinMode(BUTTON_PIN8, INPUT_PULLUP);
pinMode(BUTTON_PIN9, INPUT_PULLUP);

}

void loop() {

int BUTTON_8 = digitalRead(BUTTON_PIN8);

int BUTTON_9 = digitalRead(BUTTON_PIN9);

for (int i = 2; i < 8; i++) {
i = digitalRead(i);
}
for (int i = 2; i < 8; i++) {
Serial.print(“B=”); Serial.print(i); Serial.print("="); Serial.print(!i);

}
Serial.print(";");
Serial.print(“B8=”); Serial.print(!BUTTON_8); Serial.print(";");
Serial.print(“B9=”); Serial.print(!BUTTON_9); Serial.print(";");
delay(1000);
}`

Grazie … ma come mai non stampa nella seriale ?
Sto utilizzando la beta di arduino ide… ma prima senza l’incremento funzionava ora con il loop non fa.
grazie mi protesti vedere.
Buona serata e a domani.

scusate, ma con google chrome non riesco ad formattare il codice…
metto il codice e poi clicco sull’icona </> , ma nel momento che pubblico sparisce.
e poi e troppo piccola l’area da dove scrivere i post.
avete idea come fare?.
grazie mille.

Dell’IDE di Arduino premi CTRL+T per riordinare il codice, selezioni il codice da postare, clicchi col pulsante destro del mouse e selzioni “copia per il forum”. Incolli qui.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.