(04-01-2016, 06:05 PM)rodazac escribió: (04-01-2016, 04:56 PM)kabout escribió: Espero que te sirva de ayuda.
por supuesto que si!!!....toda ayuda o aclaración es bienvenida.
al final he puesto esto
void loop(){
Serial.println(LuzRoja=255 ,LuzVerde=255);
if (LuzRoja > 200)
{
Serial.println("rodazac");
}
else
{
Serial.println("luz tenue");
}
para colocar las llaves he tenido que buscar,
donde estaba un ejemplo parecido.para copiar su posición.
al final he puesto Serial.println en vez de Serial.print
para separar el texto
Serial.println(LuzRoja=255 ,LuzVerde=255);
Es muy curioso lo que que has puesto y aunque se aun poco avanzado para vuestro nivel, no me resisto a comentar la forma en que el compilador parece haber interpretado esto. El compilador ha conseguido darle una interpretación muy curiosa a esto .
El compilador está interpretando asignaciones como si fueran ademas de asignaciones fueran expresiones que pasan valor a Serial.println(...) Puede hacerlo porque aunque no sea frecuente las asignaciones pueden usarse de esa forma, como sifuera una expresión más. Son cosas rara que C permite para que el programador pueda optimizar el código pero no se recomienda usarlo como forma habitual porque perjudica la legibilidad del programa.
El caso más habitual y más legible es la asignación múltiple:
va= vb= vc= vd= 5;
Con esto se asignaría a las variables a,b,c y d pel valor 5, pero en un caso más general nada impide hacer cosas más raras del tipo:
va = 5 + (vb=4) + (vc=7);
Ademas de asignar el valor 7 a vc y el valor 4 a vb se usa como expresion y lo siguiente que hace el compilador una vez que evalua la expresión es continuar de la siguiente forma.
va = 5 + 4 + 7;
Y por último
va = 16;
Serial.println(LuzRoja=255 ,LuzVerde=255);
Es equivalente a hacer lo siguiente.
LuzRoja=255; // Asignación del valor 255 a la variable LuzRoja
LuzVerde=255; // Asignación del valor 255 a la variable LuzVerde
Serial.println(255 , 255);
Cuando Serial.println recibe dos valores enteros separados por una coma interpreta el segundo como tipo de representacion deseado
Serial.println(255, DEC); equivale a Serial.println(255); y muestra el valor en decimal, es decir 255. (es la forma más habitual).
Las constantes previstas y documentadas son estas: DEC, HEX, OCT, BIN, BYTE,
Has usado algo muy extraño
Serial.println(255 , 255); y te ha mostrado el resultado 10.
He sentido curiosidad por saber como se definen las constantes usadas normalmente.
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
#define BYTE 0
Es decir:
Serial.println(255 , 10); mostraria 255 en formato decimal (el habitual) y daria 255
Serial.println(255 , 16); mostraria 255 en formato hexadecimal y daría FF.
Serial.println(255 , 8); mostraria 255 en formato octal y daría 377.
Serial.println(255 , 2); mostraria 255 en formato binario y daría 11111111.
Los humanos usamos el sistema de representación decimal (10 dígitos diferentes)
pero para los ordenadores algunas veces viene bien usar otros sistemas. Internamente en la memoria son ceros y unos (sistema binario).
Podeis usar una calculadora online para pasar de un formato a otro.
http://metricconversion.biz/es/conversio...meros.html
Lo curioso es que no has usado como base numerica una de las habituales.
Has dicho que te muestre 255 en base 255 y el resultado es 10.
Yo he recordado que N en base N da 10 y ese resultado me ha servido para explicar una instrucción misteriosa. Al final ha sido un reto y una vez resuelto me ha permitido aprender un poco más.
Yo lamento si alguien no se ha enterado, pero por lo menos he conseguido enterarme yo ja, ja.