ARDUINO PHP SERIAL CLASS

Salve ragazzi è da tempo che navigo in rete ma non trovo nulla che può aiutarmi.
Allora la mia idea è quella di visualizzare su una pagina php (collocata sul server apache di rasperry) gli ingressi analogici di arduino.
Utilizzo la php serial class che funziona perfettamente per un sensore:

<?php require("php_serial.class.php"); $serial = new phpSerial(); $serial->deviceSet("/dev/ttyACM0"); $serial->confBaudRate(9600); $serial->confParity("none"); $serial->confCharacterLength(8); $serial->confStopBits(1); $serial->deviceOpen(); $serial->sendMessage("1"); $read = $serial->readPort(); $temperatura = $read; $serial->deviceClose(); echo $temperatura; ?>

Il problema si pone con l’aggiunta di un secondo sensore per poterlo differenziare dal primo ad arduino gli trasmetto un carattere differente in modo che sfruttando la funzione if è in grado di restituirmi il valore di un sensore rispetto che di un altro.

<?php require("php_serial.class.php"); $serial = new phpSerial(); $serial->deviceSet("/dev/ttyACM0"); $serial->confBaudRate(9600); $serial->confParity("none"); $serial->confCharacterLength(8); $serial->confStopBits(1); $serial->deviceOpen(); $serial->sendMessage("1"); $temperatura1 = $serial->readPort(); sleep(1); //pongo una pausa $serial->sendMessage("2"); $temperatura2 = $serial->readPort(); $serial->deviceClose(); echo $temperatura1; echo $temperatura2; ?>

Non avendo terminato lo sketch di lettura dei sensori, vi posto una variante più semplice con constanti finite:

byte byte1;
byte byte2;
void setup() {
Serial.begin(9600);

}

void loop() {
if (Serial.available() > 0 ){
byte1 = Serial.read();
if ( byte1 == 49){ //il carattere 1 ASCII corrisponde al byte 49
Serial.print(“75”); //rispondi a rasperry con il valore 75
}
}
if (Serial.available() > 0 ){ //funzione analoga a quella soprastante
byte2 = Serial.read();
if ( byte2 == 50){
Serial.print(“34”);
}
}
}

Qui la questione si fa interessante lo sketch funziona ma non è preciso, ogni volta che faccio il refresh della pagina al 90 % dei casi non leggo contemporaneamente il valore dei due sensori o i due caratteri. In pratica arduino riceve il primo byte e risponde, alla seconda trasmissione che avviene con un ritardo di 1sec non risponde oppure replica in maniera aleatoria. Ho provato a modificare i tempi nel php per evitare un comportamento asincrono tra i due. Al secondo interrogativo in ogni maniera non risponde.
Spero di non aver annoiato nessuno :slight_smile: ringrazio in anticipo chi è cosi gentile da aiutarmi.
p.s. sono nuovo nel forum

Prima di tutto, nella sezione in lingua Inglese si può scrivere SOLO in Inglese … quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post …

… poi, essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO

infine, in conformità al suddetto regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).
Grazie.

Guglielmo

P.S.: Il tuo post è già stato spostato nell’opportuna sezione del forum “Italiano”