Concurso de fotografía AM

Temática: «Una panorámica de tu acuario».
Ya esta abierto el plazo para presentar fotografías.

Más info
image01

¿Aún no conoces AMA?

Hazte socio de Acuariofilia Madrid Asociación.
CERRADO EL PLAZO DE INSCRIPCIÓN

Más info
image01

Atlas de peces de AM

¡Hemos alcanzado las 800 fichas! Visita nuestro atlas de peces actualizado.

Más info
image01

Cardúmenes y sociabilidad

Nueva actualización de la tabla con una extensa relación de peces, donde podrás conocer qué entorno necesita cada especie, su sociabilidad y si convive o no en cardumen. ¡Pasa a descubrirla!

Mas info
image01
Diseño de un programador básico de acuario con arduino
Respuestas: 434    Visitas: 102526
#136
Tenía ciertas dudas con el Arduino Pro Micro, que es uno de los que hemos recomendado para esto, en lo relativo al uso del puerto Serial.

La documentación y Google no me han servido de mucho. No quedó más remedio que recurrir al sistema de prueba y error para sacar las conclusiones.

Ya lo tengo todo claro. Las diferencias con otros Arduinos son muy llamativas, y la gente tiende a usar procedimientos similares a los usados en Arduino UNO, pero encontré una solución sencilla que me gusta bastante. Primero explico en qué consisten las diferencias con Arduino UNO.

Forma de iniciar la conexión Serial en un Arduino Pro Micro o Arduino Leonardo

En Leonardo no se reinicia al abrir la conexión, por ello cuando en el programa no introducimos una espera para detectar la apertura del puerto Serial, algunas trazas se perderán. Concretamente se irán perdiendo todas hasta que decidamos abrir el puerto y aparecerán las trazas que en ese momento se estén ejecutando, porque a diferencia de Arduino UNO, no se produce un reinicio del programa cuando se abre el puerto Serial.

Este comportamiento no es necesariamente algo malo, pero es un detalle que hay que conocer, y si estás acostumbrado a otros Arduinos te puede desconcertar bastante.

Si Arduino Micro (o Leonardo) se pone la espera y no se abre el Monitor Serial, el programa quedará detenido y no progresará. Quedará a la espera de que se abra la conexión y en el momento que esta se abra, proseguirá la ejecución con toda normalidad.

Para el uso del puerto Serial en una aplicación donde por ejemplo solo se use el puerto Serial para sacar trazas de ejecución, convendrá esperar durante un cierto tiempo a que el Monitor Serial se conecte, pero en caso de que dicho tiempo transcurra sin producirse la apertura del puerto, habrá que forzar el final de la espera y proseguir con la ejecución del programa asumiendo que lo que se envíe a Serial se perderá.

En otros Arduinos la apertura de un puerto implica un reset del programa. En Arduino Pro Mini (o Leonardo) eso no ocurre nunca, por eso se suelen poner las instrucciones de espera en setup() a fin de evitar que durante el transcurso de tiempo que va desde que empieza a ejecutarse hasta que activamos el monitor en el IDE, se pierdan algunos datos.

Esperar permanentemente ya hemos dicho que tampoco sería una buena idea porque si lo ejecutamos sin conexión al monitor Serial se quedará bloqueado.

Preguntar por la disponibilidad del puerto Serial en cualquier otro Arduino, siempre devolverá el valor true (cierto). Esto despista un poco, porque lo hace incluso cuando el puerto no está disponible.

Lo que ocurre, es que la disponibilidad de la conexión en Arduino UNO, no es tan importante para la inicialización del programa. Eso da lo mismo, porque cuando por fin se abra la conexión Serial, el programa se reiniciará y en caso contrario no tampoco se bloqueará y funcionará con la conexión cerrada.

Resumiendo:
Hacer en Arduino Pro Micro (o Leonardo) una espera indefinida, puede dar problemas. Pero no hacer ninguna espera también.

Lo más acertado sería hacer una espera con TIMEOUT (con tiempo limite).

Programando un tiempo de espera de 5 segundos como máximo, desparecen todos los inconvenientes y es raro que esto no sea un procedimiento perfectamente documentado.

He buscado en Google por Arduino Leonardo Serial TIMEOUT y no aparece nada. Es bastante sencillo. Yo temía tener que recurrir a soluciones más complicadas. La solución es la siguiente:


Código:
#define TIMEOUT_SERIAL  5000  // Esperamos como máximo 5 segundos a la conexion Serial

// ************************************************************************************
void setup(){
    Serial.begin(9600); // Intentamos inicializar a 9600 baudios
    int t1=millis(); // Tomamos referencia del tiempo en t1
    // Mientras no transcurran TIMEOUT_SERIAL milisegundos
    while (millis()-t1<TIMEOUT_SERIAL){
        if (Serial) // Si se ha logrado conexión...
            break;  // forzamos la salida del bucle
    }
    // Se permite continuar con conexión o sin ella.
#137
-good.gif, si es que no hay nada como liar a Antonio Castro con un tema para que empiece a arreglar todos los desaguisados que los diseñadores del trasto dejaron a medias.

Ya decía yo que el guindo no hacia mas que pitarme con lo de activar/desactivar las conexiones USB. Y yo pensando el cable está pidiendo que le cambie....
#138
(04-01-2016, 04:11 AM)ArturoS escribió: -good.gif, si es que no hay nada como liar a Antonio Castro con un tema para que empiece a arreglar todos los desaguisados que los diseñadores del trasto dejaron a medias.

Ya decía yo que el guindo no hacia mas que pitarme con lo de activar/desactivar las conexiones USB. Y yo pensando el cable está pidiendo que le cambie....

En realidad, lo que ocurre es que Internet se nutre de opiniones de gente que se conforma con el uso de Google para conseguir información y por desgracia Google no siempre es capaz de acertar con sus recomendaciones. La gente copia y pega las cosas que descubre en otros sitios, y no siempre lo hace con acierto.

En Internet se puso de moda la recomendación del abono para plantas Hortrilón. La gente obtenía buenos resultados las primeras semanas y luego se llenaba el acuario de algas. La composición que pone en el sobre

5 % de hierro quelatado por EDTA
2.5% de magnesio quelatado por EDTA
2.5% de cobre quelatado por EDTA
0.5% de boro quelatado por EDTA
0.6% de cinc quelatado por EDTA
0.5% de molibdeno quelatado por EDTA
5 % de oxido de magnesio
4% de azufre

El problema es que en las indicaciones se mencionan solo los porcentajes de micronutrientes, pero a nadie se le ocurrió sumar los porcentajes porque quedan muy lejos del 100% Hortrilon no indica los porcentajes de macronutrientes y entre otros contiene Nitratos y Fosfatos.

Lo que quiero decir con este ejemplo, es que Internet es una fuente inmensa de información, pero el rigor no es el fuerte de Internet.

En la mayoría de las páginas de Internet se comenta que Arduino Pro Micro es netamente superior al Arduino Pro Mini y en mi opinión es una afirmación algo exagerada porque no es exactamente así. De hecho, si nos basta con 2KB de SRAM, el Arduino Pro Min es una excelente opción y el inconveniente de necesitar un adaptador USB-FTDI se minimiza al poder compartir un adaptador para todos los Arduinos Pro Mini que tengas.
#139
El Hortrilón siempre ha sido un buen abono para el acuario, pero sabiendo que lo justito, que no son geranios y que abonas micros

La otra opción para tener USB en placa pequeña era el mini a secas.

Algo no tan bueno ha debido ser el leonardo cuando ya está descatalogado. Para una instalación definitiva si puede que aporte un plus, pero para usarle como base de experimentos/pruebas es un inconveniente la falta del procesador del serial.
#140
(04-01-2016, 01:33 PM)ArturoS escribió: El Hortrilón siempre ha sido un buen abono para el acuario, pero sabiendo que lo justito, que no son geranios y que abonas micros

La otra opción para tener USB en placa pequeña era el mini a secas.

Algo no tan bueno ha debido ser el leonardo cuando ya está descatalogado. Para una instalación definitiva si puede que aporte un plus, pero para usarle como base de experimentos/pruebas es un inconveniente la falta del procesador del serial.

Yo en mi Arduino Pro Micro sospecho que que existe un bug importante y puede afectar al diseño de una de la PCBs en las que estamos trabajando Ruben y yo.

Ignoro si es cosa solo de mi Arduino Pro Micro o afecta a otros y me sería de bastante ayuda que alguien pudiera hacer alguna prueba.

Yo hice una prueba de PWM para cuatro LEDS porque en mi aplicación pasaba algo raro. He tenido que ir suprimiendo código hasta darme cuenta de que el culpable era la función tone(). El tipo de conflicto que produce es muy fuerte. Yo he confiado en la documentación que dice que se puede usar PWM en el pin 5 pero que no avisa que es totalmente incompatible con tone(). Yo no lo he conseguido ver en ninguna parte y es un detalle importante.


Código:
#include <Arduino.h>

#define Pin_Led_R              5       // PWM Led Red
#define Pin_Led_G              6       // PWM Led Green
#define Pin_Led_B              9       // PWM Led Blue
#define Pin_Led_W              10       // PWM Led White

// **********************************************************************************************
void setup(){
    pinMode(Pin_Led_R, OUTPUT);
    pinMode(Pin_Led_G, OUTPUT);
    pinMode(Pin_Led_B, OUTPUT);
    pinMode(Pin_Led_W, OUTPUT);
    // Se ha probado tone con los pines  3, 4, 5, 13, 15 con el mismo lamentable resultado.
    // El PWM en el pin 5 (Pin_Led_R) deja de funcionar con una sola vez que se use tone().
    // Supongo que ocurrirá con cualquier otro pin. Para que el pin 5 funcione normalmente,
    // hay que comentar la línea siguiente.
    tone(5,4000, 4000); // tono de 4000 Hz durante 4 segundos
    delay(4040); // Esperar algo más de 4 segundos
}

// **********************************************************************************************
void loop() {
        for (int j=0; j<256; j++){
            analogWrite(Pin_Led_R,j); // Sensible al uso de la funcion tone()
            analogWrite(Pin_Led_G,j);
            analogWrite(Pin_Led_B,j);
            analogWrite(Pin_Led_W,j);
            delay(4);
        }
}

Quizás el software para Atmega32u4 esté menos probado que el de Atmega328.
-huh.gif
#141
Eso ya me pilla un poco profundo, pero aquí

https://code.google.com/p/rogue-code/iss...tail?id=13

algo me ha parecido entender sobre problemas de la libreria tone.cpp y las interrupciones que maneja el Atmega32u4, pero ya digo mu hondo para mi.

Buscando en google en site forum.arduino.cc los terminos "leonardo y tone" salen unas cuantas referencias
#142
(04-01-2016, 07:37 PM)ArturoS escribió: Eso ya me pilla un poco profundo, pero aquí

https://code.google.com/p/rogue-code/iss...tail?id=13

algo me ha parecido entender sobre problemas de la libreria tone.cpp y las interrupciones que maneja el Atmega32u4, pero ya digo mu hondo para mi.

Buscando en google en site forum.arduino.cc los terminos "leonardo y tone" salen unas cuantas referencias

Gracias no lo había visto.

#if defined(__AVR_ATmega8__)
#define TCCR2A TCCR2
#define TCCR2B TCCR2
#define COM2A1 COM21
#define COM2A0 COM20
#define OCR2A OCR2
#define TIMSK2 TIMSK
#define OCIE2A OCIE2
#define TIMER2_COMPA_vect TIMER2_COMP_vect
#define TIMSK1 TIMSK
#endif

the leonardo is a __AVR_ATmega32U4__ and there is no entry for this type in the tone.cpp

Es decir, el programa pregunta si se trata de un __AVR_ATmega8__ pero parece que no incluye código específico para __AVR_ATmega32U4__
Mi sospecha queda confirmada.

Es un pelín preocupante que en una librería tan básica no exista código adecuado para __AVR_ATmega32U4__
#143
¿Ha recibido alguien algo de material?
Me he vuelto a poner con el programa.
#144
hola Antonio yo solo he recibido; del tema del programador básico los cuatro relés Angry.
Desde el 14-diciembreHuh supongo que sera normal, ademas pillo la época navideña por medio.
de todas formas si me llegara mucho material seria casi un problema tengo últimamente muy poco tiempo -no2.gif
#145
(22-01-2016, 06:02 PM)pedmar escribió: hola Antonio yo solo he recibido; del tema del programador básico los cuatro relés Angry.
Desde el 14-diciembreHuh supongo que sera normal, ademas pillo la época navideña por medio.
de todas formas si me llegara mucho material seria casi un problema tengo últimamente muy poco tiempo -no2.gif

Tranquilo, yo también he estado muy liado. Supongo que tener poco tiempo es buena señal, no se puede tener todo Big Grin

Aliexpress indica el tiempo estimado de entrega normalmente entre 15 y 40 días pero son muchos los que apuran el tiempo de entrega. Si no recibes tu compra en el plazo de entrega estimado (60 días máximo), se te ofrece un reembolso completo salvo circunstancias ajenas al vendedor: Por ejemplo si el pedido supera cierto importe límite (que creo que es de 21 euros) y debido a ello lo retienen en la aduana, el pedido ya lo consideran entregado, y es cosa tuya pagar su importe para que te lo entreguen.
#146
pues ya me quedo mas tranquilo
por que ya estaba mosqueado
porque he pedido cosas mas tarde y ya me han llegado.

una de esas cosas es un coche que funciona con arduino uno (para enredar con el crio)

cuando se conecta una placa al ordenador ¿que luces se encienden?
a la que viene con el coche se le encienden dos.
la que se señala con la flecha esta intermitente

[Imagen: L2khjy2.jpg]


saludos y disculpar que saque un poquitin los pies del tiesto
#147
(22-01-2016, 08:30 PM)rodazac escribió: pues ya me quedo mas tranquilo
por que ya estaba mosqueado
porque he pedido cosas mas tarde y ya me han llegado.

una de esas cosas es un coche que funciona con arduino uno (para enredar con el crio)

cuando se conecta una placa al ordenador ¿que luces se encienden?
a la que viene con el coche se le encienden dos.
la que se señala con la flecha esta intermitente

[Imagen: L2khjy2.jpg]


saludos y disculpar que saque un poquitin los pies del tiesto

Quizaás viene sin programa para que cada cual se programe lo que quiera. Igual encuentras ya algo hecho. Algunos Arduinos vienen con un programita de demo precargado que se limita a hacer parpadear el Led del pin 13.

Dado que los cochecitos de juguete con Arduino prodrían ser considerados un tema escasamente relacionado con la acuariofilia -giveup.gif contactame por privado y te ayudaré en lo que pueda.
#148
si mi única duda es que si las luces tienen que encenderse.
o es que esta rota la placa.No el iniciar un debate
gracias por el ofrecimiento de ayuda.

un saludo
#149
Ya te lo contará Antonio por mp, pero no es nada raro.
Yo tengo muchas cosas pendientes, pero la resaca navideña se nota ahora en los envíos. A mi cosas me llegan en 20 días y otras en casi 60 o más.
Sólo procura que si alguna alcanza 58 días de demora, desde que dijo que salía abrir una disputa, para garantizarte la devolución o que al menos te amplíe el plazo de garantía.
Pero si supera los 60 puedes escalar la disputa y exigir la pasta, aunque acabe llegando despues
#150
(22-01-2016, 11:31 PM)rodazac escribió: si mi única duda es que si las luces tienen que encenderse.
o es que esta rota la placa.No el iniciar un debate
gracias por el ofrecimiento de ayuda.
un saludo

Te he dado la información que podía con la información que me has dado tú porque la placa no es estándar. Mejor que ponerme yo a buscar a ciegas, dame por privado algo de información sobre una placa que no conozco y que no sé donde has comprado. En el lugar donde la compraste debería venir algún enlace. Es un Arduino UNO, con algunas cosas más. Los Arduinos estándar no vienen con todos esos LEDs. Parece una placa interesante, pero no la conozco. No es cuestión de usar mensajes privados para debatir. Es la única forma de ayudarte sin que alguien me llame la atención por no respetar las normas del foro.

A cualquiera que me pida ayuda relativa a Arduino se la voy a dar sin importarme si es para un tema de acuariofilia, de juguetes, de domótica, de automatismos para fotografía o para cultivar tomates. Yo no tengo ningún problema y solo tengo interés en ayudar.

Sobre el funcionamiento de los envíos gratuitos en Aliexpress. En mi último pedido realizado hace un par de días (unos leds de 5mm). Aliexpress me informa que mi periodo de protección termina dentro de un par de meses. (espero que lleguen antes). Creo recordar que si tarda mucho, puedo ampliar el plazo antes de que venza haciendo esa solicitud. El precio de la palabra gratis en Aliexpress es la paciencia.

Lo cierto es que como muchos materiales no son urgentes no me importa esperar tanto. Nunca estoy parado. He ido haciendo pedidos para tener un surtido de todas esas pequeñas cosas baratas que en un momento dado pueden hacer falta.

Usuarios navegando en este tema: 4 invitado(s)


Salto de foro: