Buenos días. Llevo unas semanas trasteando con mBlock y Arduino Nano. Estoy muy contento con la posibilidad de trabajar tanto en modo USB como programando directamente la placa. Las soluciones que habíamos utilizado antes no resultaban tan satisfactorias como con mBlock.

El problema que os planteo es que hemos encontrado una discrepancia en cuanto al manejo de valores temporales entre la programación tipo Scratch y la de Arduino, es decir, entre ejecutarse directamente en la placa Arduino conectada por USB y subida al Arduino para ejecutarse independientemente del ordenador.

Estábamos utilizando el timer para crear una pseudo multitarea en Arduino. En concreto, queríamos que un LED alternase entre encendido y apagado cada segundo, mientras un botón controlaba el movimiento de un servo.
Hemos detectado que el programa ejecutado en tiempo real (Al pulsar bandera verde) necesita que le pongamos el tiempo en milisegundos (1000 en nuestro ejemplo), mientras que el mismo programa cambiándole el gorro por el de Arduino, toma el tiempo en segundos (1).
Os pego una imagen de ambos programas. Veréis que la única diferencia entre ellos (además del gorro de inicio) es el valor numérico del retardo entre encendido y apagado del LED.

59bf83b5eb429.jpg

¿Alguien puede decirnos dónde estamos metiendo la pata o si se trata de un bug?.
Saludos.

Buenos días. Llevo unas semanas trasteando con mBlock y Arduino Nano. Estoy muy contento con la posibilidad de trabajar tanto en modo USB como programando directamente la placa. Las soluciones que habíamos utilizado antes no resultaban tan satisfactorias como con mBlock. El problema que os planteo es que hemos encontrado una discrepancia en cuanto al manejo de valores temporales entre la programación tipo Scratch y la de Arduino, es decir, entre ejecutarse directamente en la placa Arduino conectada por USB y subida al Arduino para ejecutarse independientemente del ordenador. Estábamos utilizando el _timer_ para crear una pseudo multitarea en Arduino. En concreto, queríamos que un LED alternase entre encendido y apagado cada segundo, mientras un botón controlaba el movimiento de un servo. Hemos detectado que el programa ejecutado en tiempo real (Al pulsar bandera verde) necesita que le pongamos el tiempo en milisegundos (1000 en nuestro ejemplo), mientras que el mismo programa cambiándole el gorro por el de Arduino, toma el tiempo en segundos (1). Os pego una imagen de ambos programas. Veréis que la única diferencia entre ellos (además del gorro de inicio) es el valor numérico del retardo entre encendido y apagado del LED. ![59bf83b5eb429.jpg](serve/attachment&path=59bf83b5eb429.jpg) ¿Alguien puede decirnos dónde estamos metiendo la pata o si se trata de un bug?. Saludos.

Tienes toda la razón, lo he reproducido con una Arduino Uno y es tal cual comentas. Parece que trabajando con PC utiliza milisegundos como unidad de tiempo y al cargar en placa utiliza segundos.

Veamos que se va comentando pero es raro que ese error siga ahí después de tantas versiones.

Dani S.

Tienes toda la razón, lo he reproducido con una Arduino Uno y es tal cual comentas. Parece que trabajando con PC utiliza milisegundos como unidad de tiempo y al cargar en placa utiliza segundos. Veamos que se va comentando pero es raro que ese error siga ahí después de tantas versiones. Dani S.

Gracias por confirmarlo. Nunca está uno seguro de no haber metido la pata.
Saludos y gracias también por tus contribuciones. Soy fan tuyo.

Gracias por confirmarlo. Nunca está uno seguro de no haber metido la pata. Saludos y gracias también por tus contribuciones. Soy fan tuyo.
1.41k
vistas
2
respuestas
2
seguidores
vista previa (en vivo)
introduzca al menos un 10 caracteres
Advertencia: Mencionaste a %MENTIONS%, pero ellos no pueden ver el mensaje y no serán notificados
Guardando...
Guardado
Todos los posteos de este tema serán borrados ?
Borrador pendiente ... Click para continuar editando
Descartar borrador