Go Down

Topic: PWM 0-255 via seriale (Read 471 times) previous topic - next topic

theiden

Salve a tutti, a scopo didattico vorrei controllare l'intensità luminosa (tramite PWM) dal pc sfruttando la porta seriale. Ho scritto queste righe:
Code: [Select]
#define led 3
int val=0;

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

void loop() {
  while (Serial.available() ==0);
  val=Serial.read()-'0';
  Serial.print("Duty=");
  Serial.println(val);
  analogWrite(led,val);
}

Il problema è dato dal fatto che se io scrivo ad esempio 50 arduino lo interpreta come un 5 e poi uno 0. Leggendo un po' ho capito che questo è dovuto al fatto che il read legge un byte solo... Non ci sarebbe una soluzione alternativa in modo che quello che scrivo venga let tutto insieme?
Grazie, Theiden.

leo72

Esatto, la seriale viene letta un byte alla volta per cui devi gestire la trasmissione in maniera diversa.

O spedisci un byte che rappresenta il valore numerico oppure spedisci il numero in cifre sapendo però che sulla seriale viaggerà scomposto nei singoli caratteri che lo compongono.

PS:
ho scritto un articolo, tempo fa, proprio sulla gestione dei dati tra PC e Arduino, ti potrà aiutare.

theiden

temevo questa risposta   :~ speravo in qualcosa di semplice tipo un comando apposito a me sconosciuto, cmq ti ringrazio molto, ho dato un'occhiata al tuo articolo e sembra molto esauriente, ora me lo leggo per bene  :D
grazie, Theiden.

Go Up