Arduineces y otras hierbas (Monitorizar fugas de agua)

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Responder
Mensaje
Autor
Avatar de Usuario
heli
Mensajes: 1946
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: Mis primeros pasos con Arduino

#11 Mensaje por heli »

Yo también he usado mucho el teensy 3.1: ARM cortex M4 a 72Mhz por 20$ y se programa con el mismo software que arduino mediante un plugin. http://heli.xbot.es/?p=151
Lo bueno es que puedes programarlo tanto en entorno Windows como Linux e incluso desde una raspberry pi: http://heli.xbot.es/?p=41
El arduino es un entorno bastante amigable aunque limitado, hay que acostumbrarse a él. Yo suelo usar un editor externo. Lo bueno es que hay muchos "arduinos": los originales, teensy, esp8266 etc. Luego el codigo generado es portable entre placas, excepto si usas el hardware específico. Ya no tienes que trabajar con muchos entornos para cada desarrollo, usas siempre el mismo.

El ESP8266 (wifi bg, 80Mhz 32 bit cpu, Flash) se puede programar también desde el entorno arduino http://www.prometec.net/producto/esp8266-esp-07/ es barato y además con conectividad inalámbrica...

Imagen
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

Avatar de Usuario
Alfon
Mensajes: 1432
Registrado: Dom Mar 04, 2007 10:44 pm
País: España
Ciudad: Figueres
Ubicación: Gerona/España
Contactar:

Re: Mis primeros pasos con Arduino

#12 Mensaje por Alfon »

Anilandro escribió: Interesantes los proyectos, Alfon,yo en todos estos años he hecho muy poco con control digital, casi todo han sido montajes analógicos. Hace ya bastantes años compré un placa Velleman, con la que esperaba poner algunas cosas en marcha, pero en un generador de imágenes térmicas por barrido de un sensor PIR, resultó ser tan terriblemente lenta, que no se podía usar, al menos iba a 1/10 parte de la velocidad que conseguí muchos años antes con un ordenador Spectrum...
Hola Anilandro y gente.
Yo antes del arduino también tiraba mucho de analógica, pero desde que descubrí el mundo digital me ha cambiado mucho la forma de pensar y de buscar soluciones.
Piensa que ahora lo analógico lo hago igual pero lo controlo con el arduino o el attiny85,, con el attiny85 se puede hacer trabajar las salidas PWM a 31kHz con resolución de 8 bits, con ello controlo fuentes conmutadas y flybacks de alta tensión sin problemas, con la librería PID te da un control muy potente. (Normalmente primero programo y depuro con un Arduino que tenga USB fácil de conectar, y luego lo paso al attiny85).

Heli, interesante el ESP8266 , compraré alguno para probar, es barato y potente.

Saludos

PD: Por cierto, habéis visto que el Arduino han añadido para ploter ? para monitorear los valores directamente en una gráfica,, es muy interesante: http://blog.bricogeek.com/noticias/ardu ... tter/#more
Imagen
El saber no ocupa lugar, pero sí tiempo ^_^
-- Personal --> www.bitacoradealfon.es <--
-- Comercial --> www.altortech.es <--

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: Mis primeros pasos con Arduino

#13 Mensaje por Anilandro »

Interesante dispositivo, Heli, me gusta su velocidad, y si puede programarse desde el IDE de Arduino también es una ventaja. Yo el ARM lo programaba desde el Keil y la verdad es que la sintaxis era muy compleja, sólo para la configuración básica del micro había que escribir el Quijote. En algún momento habrá que probar esta opción.

Ayer estuve trabajando en la adaptación de los displays 16x1 (que en realidad actúan como un 8x2 con las dos filas colocadas de seguido), y ya tengo una función que permite manejarlo.

Imagen

Después de haber inicializado el LCD con:

void setup()
{
lcd.begin(8, 2); //Inicializamos el display 16x1 como si fuera un 8x2
}

...La sencilla función que llamo printcut() es la siguiente:

void printcut(String cad) // declaramos la función adaptadora para displays 8x2 sin chip de expansión
{
String cad1= cad.substring(0-9); // Tomamos los dígitos 1-8 de la cadena "cad" y los asignamos a "cad1"
String cad2= cad.substring(8-16); // Tomamos los dígitos 9-16 de la cadena "cad" y los asignamos a "cad2"
lcd.setCursor(0, 0); // Ponemos el cursor del LCD al principio de la primera línea de 8 digitos
lcd.print(cad1); // Imprimimos primer bloque de texto
lcd.setCursor(0, 1); // Ponemos el cursor del LCD al principio de la primera línea de 8 digitos
lcd.print(cad2); // Imprimimos segundo bloque de texto
return;
}

Cierto que lo digital te cambia la forma de abordar los problemas, Alfon. De hecho, para muchas cosas los simplifica y te ahorra buena cantidad de circuitería. Interesante también lo del plotter. Cuando tenga claras cuatro cosas básicas me meteré en la comunicaciones serie. Con la MiniSTM era todo tan complejo que me cansé antes de llegar a este punto... Mi idea también es intentar hacer las cosas con Arduino para ver sus limitaciones, y cuando ya estén andando, ver finalmente que utilizo en el proyecto de los contadores de paso de coches.

...Ahora, para no dejar desperdigadas las funciones que vaya creando, debo recordar como hacía las librerías 10 años atrás... :)

Saludos a todos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: Mis primeros pasos con Arduino

#14 Mensaje por Anilandro »

Una pregunta sobre sotware.

He creado una librería que se llama mylib.h, y dentro de ella pienso incluir algunas funciones que voy desarrollando, pero dichas funciones precisan de otras librerías, como por ejemplo las de control del display LCD. Entonces, lo que hago es incluir dentro de mi librería la LiquidCrystal, con la línea: #include <LiquidCrystal.h>

Hasta aquí todo bien... si compilo en este punto, el IDE no da errores. Pero si luego dentro de las funciones contenidas en mylib.h intento luego añadir alguna de las funciones contenidas en LiquidCrystal.h, entonces, simplemente no las reconoce y el compilador me da error, como si esta librería realmente no se hubiera incluido...

Seguramente estoy cometiendo algún error de sintaxis (el C es muy fastidiado en este aspecto), pero no consigo acertar con la solución...

Un saludo a todos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Alfon
Mensajes: 1432
Registrado: Dom Mar 04, 2007 10:44 pm
País: España
Ciudad: Figueres
Ubicación: Gerona/España
Contactar:

Re: Mis primeros pasos con Arduino

#15 Mensaje por Alfon »

Yo no suelo trabajar con mis librerías, más que nada no aprendí como crearlas, solo a veces indago en ellas para ver que funciones, pero poco más.
Normalmente hago funciones dentro del código, es más laborioso pero normalmente es un copy-paste de otros códigos que tengo.

No se si has probado a definir las librerías en el arduino,
#include liquidcristal.h
#include mylib.h

Que no tengas algún problema en la ubicación de las mismas, o como el C del ide es tan puñetero en ese sentido, que no permita desde una llamar a otra.

Sé que con las funciones sí que se permite llamar a otras funciones, pero con librerías ya no se más.
Saludos
El saber no ocupa lugar, pero sí tiempo ^_^
-- Personal --> www.bitacoradealfon.es <--
-- Comercial --> www.altortech.es <--

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: Mis primeros pasos con Arduino

#16 Mensaje por Anilandro »

Siempre que puedo utilizo las librerías ya hechas, pero a veces se han de modificar o definir de nuevas. Naturalmente, utilizo el #include. Por otra parte, el C del IDE Arduino sí permite incluir librerías dentro de otras, sería inadmisible que no lo hiciera, un C totalmente incompatible, el cual no es el caso. Además, si miramos el código de muchas de ellas, se puede comprobar que en efecto muchas incluyen a otras.

Para el resto, no me he expresado bien:

Escribo una librería que se llama mylib.h, vale, pero dentro de esta estoy utilizando funciones que pertenecen a LiquidCrystal.h, y por tanto, dentro de mylib.h he de incluir la LiquidCrystal.h (naturalmente con #include LiquidCrystal.h)... pero de momento sólo al incluyo y no utilizo ninguna de sus funciones.

Si a partir de aquí en mi programa principal incluyo la librería mylib.h, no hay errores de compilación. Pero en el momento que dentro de mylib.h utilizo alguna de las funciones del LiquidCrystal.h, pese a estar incluida, no me las reconoce. Puntualizo, no es que me las reconozca dentro del programa principal, sino que le error aparece en la librería mylib.h

Saludos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
heli
Mensajes: 1946
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

Re: Mis primeros pasos con Arduino

#17 Mensaje por heli »

Anilandro, el entorno arduino tiene una forma curiosa de tratar los #includes
Cada módulo (librería) "ve" el espacio de almacenamiento desde su propio directorio, menos el programa principal que lo "ve" todo.
Usando como ejemplo mi librería para el display con HC595: http://heli.xbot.es/?p=151

Tienes una librería localizada en "libraries\hc595x2" con los ficheros:
hc595x2.cpp
hc595x2.h

en hc595x2.cpp puedes hacer:
#include "hc595x2.h"

Pero no:
#include "LiquidCrystal.h"
porque no lo "ve" el compilador, LiquidCrystal.h esta en otro directorio: "libraries\LiquidCrystal\src\"

Pero puedes hacer:
#include "..\LiquidCrystal\src\LiquidCrystal.h"
para que encuentre el fichero y te funcione bien.

Otra solución es incluir directamente
#include "LiquidCrystal.h"
en el programa principal, que "ve" todos los directorios de las librerías. Pero esta solución es peor porque cuando pase el tiempo no te acordarás de que tu librería depende de otras y de que necesitas incluir también sus headers.
Usar estos paths puede ser algo peligroso en cuanto a compatibilidad porque en versiones futuras podrían cambiar las localizaciones de las librerías, pero funciona!
¡No es imposible, lo que pasa es que no sabes como hacerlo!
Aka: no es difícil si sabes como.
http://heli.xbot.es

mgtce
Mensajes: 236
Registrado: Mar Ago 03, 2010 12:22 pm
País: España
Ciudad: Madrid

Re: Mis primeros pasos con Arduino

#18 Mensaje por mgtce »

¿Conocéis los picaxe?, son microcontroladores de microchip pero con un firmware cargado que hace muy fácil la programación y grabación. Se pueden programar solo con tres cables y mediante código fuente o flujogramas.
Yo tengo hechos ya varios proyectos de hace años funcionando, no tendrá tantas posibilidades como arduino pero para ciertas cosas es muy facil, rapido, barato y con software de programación gratis, mucha información en español también y en smd se pueden hacer cosas muy pequeñas.

Os dejo la web por si interesa y algún manual:

http://www.picaxe.com/
http://www.picaxe.es/

http://www.picaxe.com/docs/picaxe_manual1.pdf
http://www.picaxe.com/docs/axe002_tutorial_es.pdf

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: Mis primeros pasos con Arduino

#19 Mensaje por Anilandro »

Hola Heli, gracias por la respuesta. Lo de la "visión" del compilador para las librerías, ya lo había notado, pero es que ni colocándolas dentro del mismo directorio la cosa funciona. Al final lo he arreglado a medias. He encontrado una información bastante detallada de la manera de hacer librerías en c++, con su .cpp de código, y su .h de cabecera... el problema es que no me funciona ni el ejemplo incluido en el tutorial, y eso después de haber repasado hasta la saciedad los ";", corchetes, paréntesis, mayúsculas, minúsculas, etc, de todos los archivos implicados... además, la verdad es que nunca se me dio bien la programación orientada a objetos, no la necesito y me complica la vida con sus clases, constructores, destructores y demás...

Para guardar funciones he escrito simplemente ficheros .h que las contienen, y funciona, incluso con cuatro o cinco encadenados con Include, el problema es que siguen sin reconocerme bien las librerias de c++, hago "include <LiquidCrystal.h>" y todo bien, pero luego no me reconoce casi ninguna (alguna sí) de las funciones contenidas en ella...

Además, con el IDE de Arduino me encuentro con cosas raras, como por ejemplo que la función "tone(8, 100, 1000)", que crea un tono de 1 Kz en la salida 8 durante 1 segundo, es incompatible a nivel de compilador con cualquier instrucción "pinMode(x, OUTPUT)", aunque la x sea un número de pin, como el 13, que no tenga nada que ver con el 8. De hecho he diseñado un circuito que interpreta a través de un altavoz el código morse guardado en un array, y he tenido que hacer mi propia rutina de sonido con un bucle for para que además pudiera hacer brillar un LED...

En fin, sigo batallando, es decir, recordando cosas de diez años atrás, y supongo que poco a poco se irán clarificando.

Hola Mgtce. No conozco los picaxe, y sin duda son interesantes porque los micros de Microchip siempre han estado muy bien pensados. Miraré los manuales que citas, pero en mi caso, ahora no puedo desviarme del Arduino, porque en microcontroladores y placas de aplicación hay tantas posibilidades y variantes, que si no me centro en una de ellas no voy a avanzar.

Un saludo
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Re: Mis primeros pasos con Arduino

#20 Mensaje por Anilandro »

Esto de trastear con el Arduino es divertido. En un tutorial me he encontrado con un programa que reproduce señales de Morse en forma de sonido, pero al probarlo he visto que es una chapuza, porque sólo reproduce el típico SOS (...---...), además, como ya he contado, la función tone() que utiliza es incompatible con cualquier orden de asignación de pins, dando error en el compilador y reduciendo el microcontrolador al estado de minusvalía, y por este motivo he reescrito el programa desde el principio haciéndolo más versátil, capaz de reproducir en Morse cualquier texto sin tener que escribirlo en este lenguaje, que además arranque con un botón y que un LED parpadee al ritmo de los puntos y rayas de la señal.

El circuito funciona bien y es tremendamente sencillo, se pueden ajustar todos los tiempos y velocidades de la señal, y aún sin haberlo calculado, podría reproducir texto de miles de notas...

Imagen

De todas formas, he de aclarar que el programa no "traduce" al lenguaje Morse, sino que esto se lo dejo a una web http://www.traductormorse.com/ , después copiaremos el código en puntos y rayas que este sitio nos suministre, en nuestro programa, y el resto sí lo hace automaticamente...

Más tarde colgaré el código fuente y un esquema. Por de pronto ahí va un vídeo de algo menos de dos minutos (que por la falta de calidad de la cámara reconozco que es mejorable), en el cual los radioaficionados del foro sin duda entenderán el sentido del mensaje. Ya he dicho que el LED se enciende según la cadencia del la señales, aunque con los saltos de imagen y la desincronización que se produce de este vídeo parezca que va por su cuenta. Por otra parte, el sonido de la grabación tampoco es bueno y hasta parece que en algún momento el tono cambia, pero también es un efecto de la cámara, porque en directo es perfecto y parece emanado de un manipulador telegráfico muy académico y regular...

El vídeo lo podéis ver en:

https://www.youtube.com/watch?feature=p ... jKnAF8Pw-o

Saludos a todos
La VIDA sólo es energía que ha aprendido a defenderse... (Anilandro)

*** La Web de Anilandro *** http://sites.google.com/site/anilandro

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados