Hola! He estado ya probando con lo que me comentaste.
Ya tengo este codigo arduino, bastante simple, pero que me permitirá probar lo del envio de las variables
int luz1= 13;
int luz2 = 12;
int el1;
int el2;
char dato_recibido;void setup() {
pinMode(luz1, OUTPUT);
pinMode(luz2, OUTPUT);
Serial.begin(9600);
}void loop()
{
//enviar --> S,L1,l0,F
//S inicio
//F fin
if (Serial.available() > 0)
{
//Significa que has recibido algo y lees el primer byte
dato_recibido=Serial.read();
if (dato_recibido=='S')
{
dato_recibido=Serial.read();
//Si recibes una S, lees de nuevo para capturar el siguiente dato
while (dato_recibido != 'F')
{
if (dato_recibido=='L')
{
el1=Serial.read();
if(el1=='1') el1=HIGH;
else el1=LOW;digitalWrite(luz1,el1);
}
else if (dato_recibido=='l')
{
el2=Serial.read();
if(el2=='1') el2=HIGH;
else el2=LOW;digitalWrite(luz2,el2);
}
dato_recibido=Serial.read();
Serial.print(dato_recibido);
}
}
}
}
Si le envio esos datos por el programa de arduino funciona OK enviando 'S,L1,l0,F'.
He probado desde hyperterminal, intentando enviarle un archivo de texto que contenia lo mismo, a la misma velocidad y no lo he conseguido.
He probado a enviarle desde PHP una variable $envio, que contenia 'S,L1,l0,F'. Pero no consigo encender la luz.
<?php $envio='S,L1,l0,F'; $fp=fopen("com3", "w"); fwrite($fp,$envio); sleep(3); fclose($fp); ?>
<?php $fp=fopen("com3", "w"); fwrite($fp,'S,L1,l0,F'); sleep(3); fclose($fp); ?>
<?php $envio='chr(83)'+'chr(44)'+'chr(76)'+'chr(49)'+'chr(44)'+'chr(108)'+'chr(48)'+'chr(44)'+'chr(70)'; $fp=fopen("com3", "w"); fwrite($fp,$envio); sleep(3); fclose($fp); ?>
La pagina no muestra ningun error. Pero tampoco enciende el primer LED (que es lo que deberia hacer)
[edit]Otro problema es que no se como seleccionar la temperatura que tiene dos caracteres. He probado con poner que mientras no sea una ',' el valor recibido, valor=valor+Serial.read(), pero no es esta la estructura correcta :-/[/edit]