Primi approcci con comando seriale tramite pc..già problemi

Ciao a tutti…devo fare un piccolo software per gestire uno splitter hdmi che può essere comandato da porta seriale.
In pratica ho bisogno che alla sua accensione lo splitter (e quindi arduino si avvia insieme allo splitter) si imposti in una certa maniera, ovvero che il canale di ingresso 1 venga automaticamente mandato alle 4 uscite appena il segnale dell’ingresso hdmi1 è attivo (pc esterno). Per far questo ho bisogno che arduino continui a mandare la stringa di configurazione fin quando un messaggio di errore da parte dello splitter non c’è più. Questo perchè finchè non c’è segnale nell’ingresso 1 e arduino comanda allo splitter di configurarsi in questa maniera, lo splitter risponde che all’ingresso 1 non c’è segnale. nel momento però che accendo il pc e arriva segnale hdmi al canale 1, lo splitter non da nessun errore in risposta. In questo istante arduino ha smesso di fare il suo lavoro!

Questa era la premessa del perchè mi voglio approcciare ad usare la porta seriale.

Ora volevo chiedere un vostro consiglio su questo semplice skatch che mi sta creando problemi (è l’esempio del fade di arduino leggermente modificato per il seriale):

byte led = 13;          
byte brightness = 100;   

void setup() {

  pinMode(led, OUTPUT);
   Serial.begin(9600);
   Serial.println(brightness);   
}

void loop() {

 if (Serial.read() != NULL)
   brightness= Serial.read();
   
  analogWrite(led, brightness);
  
  Serial.println(brightness);

  delay(1000);
}

In pratica avviando il monitor seriale volevo scrivere un valore da 0 a 255 per vedere che il led sulla board di arduino cambiasse la sua intensità…per un controllo faccio scrivere sul seriale il valore che ha arduino di brightness. Il primo valore che esce è quello impostato di 100…poi senza che premo niente passa a 255… :o

Per sicurezza pensando ci fossero conflitti nella seriale con caratteri nulli o inserito questo controllo: if (Serial.read() != NULL)…ma non è cambiato niente.
Se imposto qualche valore, cambia il valore sul monitor seriale, ma non è quello che inserisco…ovvero se metto 0, mi da 48, se metto 5, mi da 50, valori cosi a caso per poi tornare a 255 fisso :confused: …qualcuno sa perchè?
Grazie delle idee :slight_smile: :slight_smile:

Non puoi leggere sempre dalla seriale, devi aspettare che ci sia effettivamente qualcosa da leggere. Dai un'occhiata ad uno qualunque degli esempi inclusi nell'IDE relativi alla seriale e nota l'utilizzo di Serial.available().

Inoltre usi il monitor seriale in modo inappropriato. Il monitor seriale di Arduino è solo un tool elementare e gestisce solo char e non variabili piu complesse o che necessitino di interpretazione. Se tu invii la stringa "125" questa è composta da 3 byte nel particolare i tre char '1', '2', '3', se trattati come interi leggerai il loro valore nella tabella ASCII cioè 49, 50 e 53. Per eseguire debug devi passare ad un programma piu complesso per la gestione della seriale da PC.