Sensori shock contemporaneamente

Salve a tutti, sono un possessore di Arduino Uno e sto cercando di far funzionare 2 sensori shock contemporaneamente, vi riporto il codice del programma: ho inserito 3 IF consecutivi perchè mi dva problemi con gli ELESe e gli ELSE IF : se io escludo i 2 IF finali il programma legge bene i 2 sensori in contemporanea, ma se io uso il programma per intero (quindi con i 3 IF contemporaneamente attivi) mi esegue solo i IF (che leggono o il sensore1 o il sensore2). E' una anomalia che non riesco a risolvere.
Potete aiutarmi?
grazie
Flavio

int shockSensorPin1 = 2;
int shockSensorPin2 = 4;
int whiteLedPin1 = 3;
int whiteLedPin2 = 5;

int shockSensorState1 = 0;
int shockSensorState2 = 0;

void setup() {
  pinMode(shockSensorPin1, INPUT);
  pinMode(shockSensorPin2, INPUT);
  pinMode(whiteLedPin1, OUTPUT);
  pinMode(whiteLedPin2, OUTPUT);

  Serial.begin(9600);
}
void loop() {


  shockSensorState1 = digitalRead(shockSensorPin1);
  shockSensorState2 = digitalRead(shockSensorPin2);


  if (shockSensorState1 == 1 && shockSensorState2 == 1) {
    Serial.println("SENSORI ENTRAMBI ON");
    digitalWrite(whiteLedPin1, HIGH);
    digitalWrite(whiteLedPin2, HIGH);
    delay(1000);
    digitalWrite(whiteLedPin1, LOW);
    digitalWrite(whiteLedPin2, LOW);
    Serial.println(shockSensorState1);
    Serial.println(shockSensorState2);
  }

  if (shockSensorState1 == 1 && shockSensorState2 == 0) {
    digitalWrite(whiteLedPin1, HIGH);
    delay(150);
    digitalWrite(whiteLedPin2, HIGH);
    delay(150);
    digitalWrite(whiteLedPin1, LOW);
    delay(150);
    digitalWrite(whiteLedPin2, LOW);
    delay(150);
    Serial.println("sensore1=ON e sensore2=OFF");
  }

  if (shockSensorState1 == 0 && shockSensorState2 == 1) {
    digitalWrite(whiteLedPin2, HIGH);
    delay(150);
    digitalWrite(whiteLedPin1, HIGH);
    delay(150);
    digitalWrite(whiteLedPin2, LOW);
    delay(150);
    digitalWrite(whiteLedPin1, LOW);
    delay(150);

    Serial.println("sensore1=OFF e sensore2 =ON");
    /*Serial.print(shockSensorState1);
      Serial.print("\n");
      Serial.print(shockSensorState2);
      Serial.print("\n");*/
  }
  shockSensorState1 = 0;
  shockSensorState2 = 0;
}

Buonasera e benvenuto nella sezione Italiana del forum,

cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento, fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Detto questo, come richiesto al punto 7 del succitato regolamento, per favore edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE).

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione e sistemato il codice come indicato, nel rispetto del regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

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