Aiuto

Ciao a tutti,avrei bisogno del vostro aiuto, so che esiste un comando per far ripetere una sequenza di codici come questa for (int x=0; x<10; x++) { }. Ho provato sul blink e funziona ma sul mio sketch non funziona... mi spiego meglio, io schiacciando un pulsante faccio partire una sequenza ma se ci aggiungo quel codice i pin che dovrebbero fare la sequenza si accendono tutti insieme e rimangono fissi.

ES:

if (rosso == HIGH) {
delay(1000);
Serial.println("PORTA IN CHIUSURA");
digitalWrite(13, LOW);
digitalWrite(4, LOW);
digitalWrite(motorPin1, HIGH);digitalWrite(13, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(1000);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);

Vorrei far ripetere piu volte questa sequenza senza dover riscriverla tutte le volte.

Perchè non usi[ code ] codice [ / code ] ( senza spazi nelle [] ) ?
In più dove metti quel for ? Se non ci dai il codice non possiamo aiutarti

E aggiungi anche il for come lo metteresti tu, così vediamo dove sbagli.

Io mettevo il comando qui:
void loop() {
rosso = digitalRead(buttonPin);
blu = digitalRead(buttonPinn);
for (int x=0; x<10; x++) {
if (rosso == HIGH) {
delay(1000);
digitalWrite(13, LOW);
digitalWrite(4, LOW);
digitalWrite(motorPin1, HIGH);digitalWrite(13, HIGH);
digitalWrite(motorPin2, LOW);
}
Ma cosi non funziona, non mi ripete la sequenza 10 volte come c'è scritto x<10;

Manca buona parte del codice

Mi potete aiutare?

elix:
Ciao a tutti,

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare ( pulsante </> ).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

elix:
Mi potete aiutare?

Cosa ha scritto @chetto ??
Che l'ultimo tuo codice è incompleto. Postalo tutto (usa il tag code) così possiamo provarlo.

const int buttonPin = 2;    
const int buttonPinn = 3;
const int motorPin1 = 12;
const int motorPin2 = 11;
const int motorPin3 = 10;
const int motorPin4 = 9;
const int delayTime = 50;
const int motorPin5 = 8;
const int motorPin6 = 7;
const int motorPin7 = 6;
const int motorPin8 = 5;
char val = '0';
int rosso = 0;   
int blu = 0;


void setup() {

   Serial.begin(1200);
    Serial.println("PORTA");
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
 pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
   pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
 pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
    pinMode(4, OUTPUT);

     pinMode(buttonPin, INPUT);
  pinMode(buttonPinn, INPUT);
    delay(5000);

    Serial.println("PRONTO PER L'UTILIZZO...");
     delay(1000);
    Serial.println("6 APRE");
    Serial.println("4 CHIUDE");
 }

void loop() {
 
  rosso = digitalRead(buttonPin);
  blu = digitalRead(buttonPinn);

 if (rosso == HIGH) {
    delay(1000);
    Serial.println("PORTA IN CHIUSURA");
    digitalWrite(13, LOW);
    digitalWrite(4, LOW);
  digitalWrite(motorPin1, HIGH);digitalWrite(13, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
  digitalWrite(motorPin1, HIGH);digitalWrite(13, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime); 
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);

 digitalWrite(13, HIGH);
  digitalWrite(4, LOW);
  Serial.println("PORTA CHIUSA");
    }

else {
  
    digitalWrite(12, LOW);
    digitalWrite(11, LOW);
    digitalWrite(10, LOW);
    digitalWrite(9, LOW);
  }
  
  if (blu == HIGH) {

    delay(1000);
     Serial.println("PORTA IN APERTURA");
       digitalWrite(13, LOW);
  digitalWrite(4, LOW);
  digitalWrite(motorPin5, LOW);digitalWrite(4, HIGH);
  digitalWrite(motorPin6, LOW);
  digitalWrite(motorPin7, LOW);
  digitalWrite(motorPin8, HIGH);
  delay(delayTime);
  digitalWrite(motorPin5, LOW);
  digitalWrite(motorPin6, HIGH);
  digitalWrite(motorPin7, LOW);
  digitalWrite(motorPin8, LOW);
  delay(delayTime);
  digitalWrite(motorPin5, LOW);
  digitalWrite(motorPin6, LOW);
  digitalWrite(motorPin7, HIGH);
  digitalWrite(motorPin8, LOW);
  delay(delayTime);
  digitalWrite(motorPin5, HIGH);
  digitalWrite(motorPin6, LOW);
  digitalWrite(motorPin7, LOW);
  digitalWrite(motorPin8, LOW);
  delay(delayTime);
   digitalWrite(motorPin5, LOW);digitalWrite(4, LOW);
  digitalWrite(motorPin6, LOW);
  digitalWrite(motorPin7, LOW);
  digitalWrite(motorPin8, HIGH);
  delay(delayTime);
  digitalWrite(motorPin5, LOW);
  digitalWrite(motorPin6, HIGH);
  digitalWrite(motorPin7, LOW);
  digitalWrite(motorPin8, LOW);
  delay(delayTime);
  digitalWrite(motorPin5, LOW);
  digitalWrite(motorPin6, LOW);
  digitalWrite(motorPin7, HIGH);
  digitalWrite(motorPin8, LOW);
  delay(delayTime);
  digitalWrite(motorPin5, HIGH);
  digitalWrite(motorPin6, LOW);
  digitalWrite(motorPin7, LOW);
  digitalWrite(motorPin8, LOW);
  delay(delayTime);

digitalWrite(13, LOW);
  digitalWrite(4, HIGH);
  Serial.println("PORTA APERTA");
    
   } 
    else {
  
    digitalWrite(8, LOW);
    digitalWrite(7, LOW);
    digitalWrite(6, LOW);
    digitalWrite(5, LOW);
  }
[code]
Qusto è il codice, vorrei ripeterlo piu volte senza dover riscriverlo tutte le volte.

La cosa più semplice per ripetere una sequenza è un ciclo for.
E' importante l'apertura/chiusura graffa.
Siccome devi scrivere tra graffe molta roba è meglio se quella sequenza la metti in una funzione void separata.
Ovvero tutta quella sequenza la sposti dentro a una parti di codice che nomini con un nome significativo, esempio:

void MiaSequenza()
{ delay(1000);[/color]
 Serial.println("PORTA IN CHIUSURA");
 digitalWrite(13, LOW);
 digitalWrite(4, LOW);
 digitalWrite(motorPin1, HIGH);digitalWrite(13, HIGH);
 digitalWrite(motorPin2, LOW);
  ...
}

Nel programma dentro la loop() allora potrai scrivere semplicemente MiaSequenza() per "chiamare" tutto quel codice
Ora fare un ciclo for su quella sequenza è più semplice:

for(int i=0;i<10;i++)
{ MiaSequenza();
}

P.S. usa CTRL+T nel IDE, aiuta a scrivere meglio il codice

Grazie mille ci sono riuscito!

elix:
Grazie mille ci sono riuscito!

Modifica il testo del titolo mettendo [ RISOLTO ]