El Arduino SDK con el Blink Bug 734855 ignora la rutina de prender y apagar el LED en el ejemplo blink

Aunque no he tenido mucho tiempo para jugar con Bug que tiene el SDK

System Message: WARNING/2 (/srv/pelican.orvtech.com/www/htdocs/content/arduino-ejecuta-sketch-fedora.rst, line 21)

Line block ends without a blank line.

(o por lo menos la versión arduino-0022-4.fc15.noarch). El problema ocurre al tratar de hacer algunos sketch para novatos como lo es el de 'blink' que consiste en hacer titilar un LED. Veamos el siguiente código que esta basado en los ejemplos de blink: | void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(500); }

Como ven el sketch le indica a Arduino que el pin 13 va a ser usado como salida y que va a prender y apagar esa señal indefinidamente por intervalos de medio segundo. Aunque el sketch es simple, al compilarlo y cargarlo con Fedora 15 usando el SDK versión arduino-0022-4 el sketch no se ejecuta apropiadamente, el procedimiento de compilación y de carga a la Arduino sucede sin ningún error pero el LED no hace nada.

La solución
Aparentemente este bug es provocado por rutinas de optimización de

System Message: WARNING/2 (/srv/pelican.orvtech.com/www/htdocs/content/arduino-ejecuta-sketch-fedora.rst, line 38)

Line block ends without a blank line.

código al momento de compilar el sketch. Durante este proceso nuestra rutina que hace que el LED titile es descartada y eliminada del binario final. Para solventar este problema, solo debes de hacer una llamada de una variable que este afuera del la rutina 'setup', el código quedaría así: | boolean done = true; void setup() { pinMode(13, OUTPUT); done = false; } void loop() { digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(500); }

Fíjense como al inicio se declara la variable 'done' con un valor de 'true' el cual es alterado dentro de la rutina 'setup' obligando al compilador a analizar mas detenidamente el código afuera de la rutina 'setup'.

Me he tomado la libertad de mi Arduino, me he percatado de un reportar este Bug al responsable de este paquete, pueden seguir el avance de su solución en el Bugzilla de Red Hat Bug #734855



Comments

comments powered by Disqus