//Programa: LED intermitente con una linea de codigo
//lrcvs, 19.03.24
//Valor minimo 1 segundo ON /OFF
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
if ((millis()/1000) % 2 == 0){ digitalWrite(13,1);}else{ digitalWrite(13,0);}
}
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, millis() & 0x400 ? HIGH : LOW);
}
![]()
Ok, Muchas gracias.!
Tu codigo es mas perfecto y mas reducido.
Saluos
Para que solo quieres una linea?
¡Es divertido ![]()
Aproximadamente cada segundo:
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13,(millis() /1024) & 1);
}
Es más lento que hacer & 0x400 (Pero el optimizador debe eliminar la división de todos modos)
Así lo pensé, por eso usé una potencia de 2.
Una alternativa podría ser
(millis() >> 10)
Creo que para el compilador son equivalentes.
Sería interesante verificarlo a nivel código ejecutable.
Sí, el optimizador debe eliminar la división para reemplazarla por un desplazamiento a la derecha.
Solo de aburrido... ![]()
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13,(bool)(millis() & 0x400));
}
Técnicamente puedes escribir todo el programa en la misma línea.
Pero creo que esta versión no cumple el requisito.
void setup(){pinMode(13,OUTPUT);} void loop(){digitalWrite(13,HIGH);delay(1000);digitalWrite(13,LOW);delay(1000);}
También es en una línea. ![]()
Pero creo que se refiere a 1 sentencia. ![]()
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.