Info seriale

Posso fare così:

 val = Serial.read();
 
if(val=='v'){
     if (vh2=LOW){
      digitalWrite(vh2,HIGH);
      Serial.println("on");
     }
     else if (vh2=HIGH){
     digitalWrite(vh2,LOW);
     Serial.println("off");
  }
}

vh2 = pinout
val = valore ricevuto da seriale
Praticamente voglio ricevere un comando via seriale in questo caso (v) e accendere o spengere (pinout vh2) e inviare conferma in seriale con (on o off)

Problema da arduino ricevo sempre off... Perche?

Le comparazione all'interno dell'If le devi fare con ==
Un solo = è un assegnamento.

Immagina il C come un tipo pignolo a cui non va bene che sia uguale, ma deve essere uguale uguale. :grin:

Grazie
o provato ora il monitor seriale non mi da piu neanche off

La seriale la devi leggere SOLO se ci sono dei caratteri ... e le comparazioni, come ti ha detto Paolo, le DEVI fare TUTTE con ==

char val;

if (Serial.available() > 0) {
   val = Serial.read();
   if (val == 'v') {
      if (vh2 == LOW) {
         digitalWrite(vh2,HIGH);
         Serial.println("on");
      }
      else if (vh2 == HIGH) {
         digitalWrite(vh2,LOW);
         Serial.println("off");
     }
}

Guglielmo

P.S. : ma gli "spazi" ti fanno schifo ? Perché spesso aumentano la leggibilità ...

Questo è il programma ma non funziona

int vh2 = 13;

void setup() {
 
  Serial.begin(9600);
  pinMode(vh2,OUTPUT); 

}
  
  void loop() {
    
 char val;

  if (Serial.available() > 0) {
  val = Serial.read();
   if (val == 'v') {
      if (vh2 == LOW) {
         digitalWrite(vh2,HIGH);
         Serial.println("on");
      }
      else if (vh2 == HIGH) {
         digitalWrite(vh2,LOW);
         Serial.println("off");
     }
   }
  }
}

Quale Arduino stai usando?

Con if (vh2 == LOW) non controlli se lo stato del pin vh2 è L o H ma confronti se il contenuto della variabil é H o L. Visto che il valore memorizzato nella variabile é 12 é HIGH.

Ciao Uwe

... mi meraviglierebbe il contrario ]:smiley:

Secondo te ... cosa controlli a fare la variabile vh2 nel IF dato che essa vale sempre 13 ???

Magari era meglio scrivere :

if (digitalRead(vh2) == LOW)

... se volevi leggere lo stato del pin 13 non ti pare ??? :wink:

Guglielmo

Edit : Hahaha ... Uwe .. mi hai battuto sul tempo :wink:

gpb01:
Edit : Hahaha … Uwe … mi hai battuto sul tempo :wink:

Non solo in quelo, Io l’ ho visto al primo post e non al secondo ]:slight_smile: 8) 8) :stuck_out_tongue: :wink: :wink: :wink:

@ danyevo
Non con tutti i modelli di Arduino funziona la lettura di stato di una uscita con digitalRead(). in quel caso devi memorizzare lo stato e invertirlo.

Ciao Uwe

Giusto grazie mille ancora per la disponibilita sensa di voi sarebbe un problema..