Acuariofilia Madrid

Versión completa: Diseño de un programador básico de acuario con arduino
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
(29-02-2016, 12:09 AM)ArturoS escribió: [ -> ]Esto esta muy PARAAOOOOOOoooooooOOOOOOooooooo

A ver, en nada se van a cumplir 10 días desde que Antonio colgó el código y aquí nadie ha aparecido con un montaje, con algún problema de montaje o alguna duda con el código. No me lo puedo creer.

Pues yo ya hace tres días que tengo un sistema montado definitivo y funcionando en un acuario pequeño, y hasta el momento funcionando perfectamente conforme a lo planificado.

Pero no os pienso contar na, hasta que vea como lleváis los deberes.
ya estas enseñándolo tooooo.
yo le he echado un vistazo al codigo y me ha dado miedo Blush creia que un código era mas sencillo,y resulta que tiene media docena de pestañas necesito tiempo para entender algo, ademas de que el micro arduino no me ha llegado y ya no creo que me llegue-no2.gif . de todas formas, me ha dejado Juan un arduino pequeño.

Y un par de ratos que he tenido he intentado meterle el código y el programa no me reconoce el arduino Huh en cuanto tenga un rato me lío.
Pero como ya he comentado llevo ya una temporada con caos laboral y no paro ademas estoy echando una mano a un compañero con su nuevo acuario-mega_shok.gif le estoy haciendo la instalación electrica y algunos detalles de la pantalla, es que me va la marcha...
(29-02-2016, 08:30 PM)pedmar escribió: [ -> ]yo le he echado un vistazo al codigo y me ha dado miedo Blush creia que un código era mas sencillo,y resulta que tiene media docena de pestañas necesito tiempo para entender algo, ademas de que el micro arduino no me ha llegado y ya no creo que me llegue-no2.gif . de todas formas, me ha dejado Juan un arduino pequeño.

Y un par de ratos que he tenido he intentado meterle el código y el programa no me reconoce el arduino Huh en cuanto tenga un rato me lío.
Pero como ya he comentado llevo ya una temporada con caos laboral y no paro ademas estoy echando una mano a un compañero con su nuevo acuario-mega_shok.gif le estoy haciendo la instalación electrica y algunos detalles de la pantalla, es que me va la marcha...

Jeje ese compañero soy yo. La cuestión Pedro es que sin saber programar estás queriendo meterte en fregaos muy muy grandes. C no es un lenguaje sencillo ni intuitivo, y según el programa va creciendo se hace difícil de seguir.

Como tu dices, una cosa es hacer una pruebita en un sketch y tiras para adelante con una programación bastante básica, pero ya cuando la cosa va creciendo el nivel de complejidad se vuelve exponencial como está pasando en el programador básico de este hilo.

Yo mismo que trabajo en el desarrollo software, aunque no con C todo sea dicho, me cuesta seguir a veces alguna parte de CAO, que ese software si que es grande. En software casi siempre que coges un software que no es tuyo te cuesta seguirlo e incluso puede que algunas partes no las comprendas. Por eso los que estamos habituados a utilizar librerías de terceros generalmente no nos ponemos a ver por dentro como está el programa, sino ver las clases y métodos públicos que tenemos disponibles para utilizar acompañado por la documentación de la librería, lo opuesto sería inabarcable.

Por eso no te agobies, ve pasito a pasito. Para aprender a programar arduino y su C lo veo bastante jodido.

Hay webs que pueden ayudarte a aprender a programar y que te aconsejo que las tengas muy en cuenta.

Tienes tutorialspoint donde vienen manuales y tutoriales muy completos y sencillos de entender para casi todos los lenguajes de programación. Este enlace es el de C++ http://www.tutorialspoint.com/cplusplus Y otra cosa muy buena que tienen entornos virtuales donde poder programar y ejecutar los programas de prueba que hagas, en http://www.tutorialspoint.com/codingground.htm le das a C++

Y luego hay webs donde puedes aprender a programar resolviendo retos de complejidad creciente, como https://www.hackerrank.com Te registras como desarrollador y en dominios tienes muchas áreas y lenguajes distintos donde practicar.

Venga ánimo y al lío!
(29-02-2016, 08:30 PM)pedmar escribió: [ -> ]yo le he echado un vistazo al codigo y me ha dado miedo Blush creia que un código era mas sencillo,y resulta que tiene media docena de pestañas necesito tiempo para entender algo, ademas de que el micro arduino no me ha llegado y ya no creo que me llegue-no2.gif . de todas formas, me ha dejado Juan un arduino pequeño.

Y un par de ratos que he tenido he intentado meterle el código y el programa no me reconoce el arduino Huh en cuanto tenga un rato me lío.
Pero como ya he comentado llevo ya una temporada con caos laboral y no paro ademas estoy echando una mano a un compañero con su nuevo acuario-mega_shok.gif le estoy haciendo la instalación electrica y algunos detalles de la pantalla, es que me va la marcha...

Tienes mucha razón. Pero por un lado, no es un programa apto para aprender programación. Yo no dije que sería sencillo (sé que lo parecía). Solo dije que me comprometía a hacerlo de la forma más sencilla posible y acepté algunas indicaciones. Lo que no perdonaría nadie es que no fuera mínimamente útil. Ese es siempre un requisito imprescindible.

Por otra parte es absurdo que intentes entenderlo doto. Yo cuando uso librerías realizadas por otras persona no me dedico a estudiar el código, salvo que surja alguna necesidad. Si el módulo de librería me dice que hay que inicializarlo de una cierta manera y me ofrece ejemplos que me permiten entender como se usa, me olvido de intentar descifrar la interioridades de esos códigos porque no suele hacer falta.

En este caso te puede interesar entender como funcionan ciertas partes del módulo principal CAO_SETA_v1_0.ino y te puedes olvidar del resto.

Hay un modulito pequeño CaoSeta.Turn.cpp que podría intersera estudiar porque tiene una dificultad intermedia.


En el paquete incluyo un programita muy indicado para principiantes "PruLeds.ino". Es casi obligado compilarlo en primer lugar, ya que permite probar las salidas digitales que usará CAO_SETA_v1_0. Ademas te asueguras de que tienes el IDE bien configurado.

Ninguno de estos programas Arduino verifica que Arduino se está usando. Eso lo hace el IDE. Este debe estar configurado de forma apropiada para detectar la placa Arduino que estés usando. Me dices que es un Arduino pequeño pero no sé cual es. En el IDE pinchas en Herramientas y entre las opciones que se despliegan debe aparece alguna compatible con tu placa. Una vez echufado el Arduino por USB aparece en ese mismo menú desplegable la opción puerto y debes pincha y seleccionarla porque si el puerto no está seleccionado correctamente aunque realice correctamente la compilación fallará al intentar la carga.

Aquí todos gozamos de la máxima libertad para administranos el tiempo, faltaría más.

Yo creo que dedicar quince minutos sueltos cada día no es buena idea a menos que sean cosas puntuales como consultar dudas. A la hora de ponerse manos a la obra conviene esperar a tener el tiempo suficiente para poder concentrarse durante el tiempo necesario y por desgracia en la mayoría de las casas esos momentos son escasos.
(29-02-2016, 09:20 PM)Agamenon escribió: [ -> ][...]
Por eso no te agobies, ve pasito a pasito. Para aprender a programar arduino y su C lo veo bastante jodido.

En la escuela de informática aprendíamos con lenguajes como Pascal, Modula-2, y Pascal concurrent, por ser didáticos y servir al propósito de aprender a programar.

También aprendimos algo de C pero eso es porque el C se usa en el desarrollo de sistemas operativos como Unix, pero los profesores nos dejaban muy claro que no era un lenguaje idóneo para aprender.

El C está demasiado orientado a entenderse con la máquina, así que el código que resulta es muy eficiente.

Todo el mundo debería tener nociones de programación y en algunos centros educativos ya se enseña, pero si el profesor no es bueno puede ser un desastre.

A mi hijo en el colegio le enseñaron a programar usando el C como primer lenguaje de programación cuando era demasiado joven. El resultado es que jamás conseguí que mi hijo se interesara por la programación. Le enseñaron a odiar la programación.

Cuando sabes lo suficiente como para entender que hace el compilador y como genera código el C deja de ser odioso y se convierte en... algo poco simpático.

Pero hay cosas peores. En el lenguaje ensamblador (hay un lenguaje ensamblador para cada chip microprocesador) estás metiendo instrucciones relativas a las direcciones de memoria a los registros de la CPU, etc. y el aspecto es algo de este tipo:

[Imagen: olg.gif]

Mucha gente ha aprendido a programar de forma autodidacta, pero no es el método idóneo. Dependiendo del texto con el que tropieces te resultar realmente complicado avanzar. En especial cuando se trata de un lenguaje como el C

Si no se tienen nociones previas, es crucial que el primer libro sea bueno y te proporcione las nociones básicas de una forma adecuada para no adquirir vicios.

Por el contrario si ya tienes nociones en otro lenguaje te ayudará muchísimo a aprender el siguiente lenguaje. Algunas veces el camino largo, (pasar por otro lenguaje más fácil) suele dar mejores resultados a la larga.

Un buen lenguaje de programación no te incordia con cosas que no tienen que ver con la resolución del problema. Te ayuda a pensar de la manera más adecuada sin distraerte con detalles técnicos ajenos al problema.

En el aprendizaje de un primer lenguaje resulta muy complicado explicar cosas sin introducir en la explicación conceptos que aún no se han explicado, porque muchos conceptos están relacionados entre sí.
Intenta aprender python o PHP que no tienes que lidiar con tipos de variables y con la memoria y luego te metes en C
Que nooooo que no quiero entender todo el código....
Simplemente quería buscar donde cambiar los horarios de encendido y lo único que he conseguido es cambiar la hora.-pardon.gif
Pero esta claro que hay que echarle un rato. Por que en quince minutos como bien comenta Don Antonio no se puede hacer nada, también e leído parte del documento de testo, y no veo bien como montar las conexiones.

Por eso cuando tenga un buen rato me pondré a trastear, y si no puedo con el arduino pequeño lo hago con el arduino uno que si me lo reconoce, si consigo hacerlo funcionar lo probaría una temporada y luego lo pondría en la caja del acuario para programar el encendido de algunos componentes.

Ahora tengo con un programador de sera que no funciona muy bien a la hora de cambiar las programaciones.

De nuevo muchas gracias por vuestro esfuerzos no creáis que no lo valoramos por no estar montando el programador, pero no quiero estar haciendo preguntas que puedo resolver si le echo mas tiempo sin estar preguntando, cuando me líe seguro que si que freiré el post a preguntas de torpe.
Hola como os había anunciado ya he recibido el kit de iniciación, acá os dejo una foto, lo malo es que aún no tengo ni idea de que es cada cosa, pero bueno para eso son las prácticas. Una última cosa que quizás ya lo han hablado, algún manual en castellano???

[Imagen: 8I29kj4.jpg]
Pedro, para ir probando con el A Uno

Conecta el bus I2C entre el reloj DS3231 (patillas SDA, SCL ) y el Uno a los pines A4, A5 respectivamente.

Conecta los pines del Uno 4 a 7 (digitales) a la placa del relé

Alimenta desde el arduino desde V5 y GND a DS3231 y Reles (para pruebas de poco s min no hace falta poner la fuente, se alimentará desde el PC por el USB), obviamente a los pines V5 (o V+) y GND de ambos.

No es necesario que conectes nada a la salida de los reles, la placa lleva unos leds que te indicarán que reles se activan, y para pruebas vale.

En el PC, en el ide de Arduino en Herramientas > Placa selecciona el Arduino Uno

Conecta el USB desde el pc (espera o comprueba que reconozca la conexion USB del arduino) y prueba el programa que comenta Antonio PruLeds.ino.

Después puedes probar CAO_SETA_v1_0.ino que es el programa principal del PBAA.

De entrada abre el monitor serie (lupa arriba dcha) y pon en fecha/hora el reloj (la real o una que fijes para las pruebas)
Tecleando "a 29 02 16 23 10 00" (sin comillas y es a dd mm aa hh mm ss) e intro
También puede pulsar I e intro y ver un informe.

Posteriormente fíjate lo que comenta Antonio al principio del código y en la rutina void SetPinsProgram() que es donde se definen los pines a usar y la programación de los mismos.

Aparte de los ejemplos que incluye Antonio para probar, te dejo lo que tengo yo puesto como programador de tres luces

Código:
void SetPinsProgram(){
    // Activacion de los pines
    ProgPins.ConfigurarPin(4, HIGH); // luz 1
    ProgPins.ConfigurarPin(5, HIGH); // luz 2
    ProgPins.ConfigurarPin(6, HIGH); // reservado otro uso
    ProgPins.ConfigurarPin(7, HIGH); // luz noche

    // Crear pulsos programacion horaria
    ProgPins.CrearPulso(4, 14, 0, 0, 8, 0, 0); // Pin4 encender 2 pm durante 8 h - apaga 10 pm
    ProgPins.CrearPulso(5, 14, 30, 0, 8, 0, 0); // Pin5 encender 2:30 pm durante 8 h - apaga 10:30 pm
      //ProgPins.CrearPulso(6, 13, 30, 0, 8, 0, 0); // Pin6 encender 01:30 pm durante 8h  - apaga 09:30 pm
    ProgPins.CrearPulso(7, 12, 30, 0, 11, 30, 0); // Pin7 encender 12:30 pm durante 11:30 h - apaga 00:00 pm
    ProgPins.CrearPulso(7, 0, 0, 0, 1, 0, 0); // Pin7 encender 00:00 pm durante 1 h  - apaga 01:00 am
}

Ya ves lo sencillo que es establecer una programación horaria.



rbaby, en www.prometec.net encontras montajes y ejemplos en español de muchos de los modulos que te han llegado
Madre mía que pedazo de tema..... Como os lo estáis currando, lo he encontrado hace un rato de casualidad y ya llevo la mitad leído pero me muero de sueño, mañana me lo termino de leer entero y me pongo a buscar las cosas que me faltan (ya tengo un lío muy básico que me trajeron los reyes con un A uno)
Sois unos monstruos....
(29-02-2016, 11:16 PM)pedmar escribió: [ -> ]Que nooooo que no quiero entender todo el código....
Simplemente quería buscar donde cambiar los horarios de encendido y lo único que he conseguido es cambiar la hora.-pardon.gif
Pero esta claro que hay que echarle un rato. Por que en quince minutos como bien comenta Don Antonio no se puede hacer nada, también e leído parte del documento de testo, y no veo bien como montar las conexiones.

Por eso cuando tenga un buen rato me pondré a trastear, y si no puedo con el arduino pequeño lo hago con el arduino uno que si me lo reconoce, si consigo hacerlo funcionar lo probaría una temporada y luego lo pondría en la caja del acuario para programar el encendido de algunos componentes.

Ahora tengo con un programador de sera que no funciona muy bien a la hora de cambiar las programaciones.

De nuevo muchas gracias por vuestro esfuerzos no creáis que no lo valoramos por no estar montando el programador, pero no quiero estar haciendo preguntas que puedo resolver si le echo mas tiempo sin estar preguntando, cuando me líe seguro que si que freiré el post a preguntas de torpe.

Viene explicado en el apartado Programación de salidas pero el hecho de que tú estés todavía buscando donde está es en parte culpa mía porque me he limitado a decir que hay que editar el programa principal y parece que no ha quedado claro. En este caso se trata de CAO_SETA_v1_0.ino.

Tienes que entender que para los que ya sabemos, hay cosas que nos parecen tan elementales que se nos puede pasar explicarlas. Tienes que preguntar.

Te explico un poco el concepto. En un programa C o C++. Se puede fraccionar el programa en partes. Cada parte en irá un fichero que se compila por separado. Los detalles de como trabaja el compilador pueden ayudar a interpretar ciertos tipos de errores, pero de momento basta decir que la compilacion es un proceso complicado se hace en varias fases pero lo que te interesa saber ahora es que siempre hay una de esas partes que es la principal. Es la parte donde empieza el programa. En los programas de ordenador el programa principal empieza y acaba. En Arduino no acaba nunca. El programa principal de Arduino es aquel que tiene una función "void setup()" para inicializaciones y que se ejecuta una sola vez y otra "void loop()" que se ejecuta continuamente.

Está mejor explicado aquí.http://playground.arduino.cc/ArduinoNotebookTraduccion/Structure

Los programas de arduino están compuestos por un fichero con el programa principal con la estructura que acabo de comentar y tendrá la extensión “ino”. (Antes de la versión 1.x de Arduino se usaba la extensión “pde” para este programa principal). El programa principal siempre tendrá que situarse en una carpeta con el mismo nombre pero sin extensión. De esta forma, el IDE buscará en la carpeta de sketchbook y recorrerá todo el arbol de carpetas y subcarpetas buscando en las carpetas ficheros con el mismo nombre que la carpeta y con la extensión ".ino". En nuestro caso CAO_SETA_v1_0.ino, estará en:

└── sketchbook
├── CAO_SETA_v1_0
│   └── CAO_SETA_v1_0.ino

El resto de ficheros contienen funciones que, en última instancia, se ejecutan desde el programa principal.

Para lo de las conexiones yo intentaría primero hacer funcionar el ejemplo de PruLeds en una protoboard. Con eso ya vas pillando parte.

(29-02-2016, 11:22 PM)rbaby escribió: [ -> ]Hola como os había anunciado ya he recibido el kit de iniciación, acá os dejo una foto, lo malo es que aún no tengo ni idea de que es cada cosa, pero bueno para eso son las prácticas. Una última cosa que quizás ya lo han hablado, algún manual en castellano???

[Imagen: 8I29kj4.jpg]

Yo espero que en el CD ROM venga una copia del manual y que puedas usar el Google translator.

Yo aprendí el ingles técnico leyendo los manuales y practicando y los entiendo bien, pero mi nivel del Inglés en general continua siendo muy malo.

En este caso las partes más importantes del manual son dos:

1) Los programas.

2) Los esquemas de montaje.

Creo que incluso en Inglés te van a venir muy bien. Pregunta aquí cualquier duda.
(01-03-2016, 10:50 AM)Antonio Castro escribió: [ -> ]Yo espero que en el CD ROM venga una copia del manual y que puedas usar el Google translator.

Yo aprendí el ingles técnico leyendo los manuales y practicando y los entiendo bien, pero mi nivel del Inglés en general continua siendo muy malo.

En este caso las partes más importantes del manual son dos:

1) Los programas.

2) Los esquemas de montaje.

Creo que incluso en Inglés te van a venir muy bien. Pregunta aquí cualquier duda.
Hola Antonio, lamentablemente no, en el CD viene el diseño de los circuitos con Fritzing, y un pequeño video con el montaje listo, nada de paso a paso ni explicación de componentes, lo bueno del CD es que una vez entienda lo más básico me ayudará mucho. Justo ahora estoy haciendo una recopilación bibliográfica para comenzar, he encontrado muchos materiales interesantes. Gracias por su ofrecimiento!

He encontrado varios tutoriales para principiantes, si alguien los necesita se los puedo compartir en un FTP. Aprovecho e informo que si necesitáis espacio para compartir documentos, código, etc., os puedo habilitar espacio en mi FTP. Saludos
(29-02-2016, 11:16 PM)pedmar escribió: [ -> ]Que nooooo que no quiero entender todo el código....
Simplemente quería buscar donde cambiar los horarios de encendido y lo único que he conseguido es cambiar la hora.-pardon.gif
Pero esta claro que hay que echarle un rato. Por que en quince minutos como bien comenta Don Antonio no se puede hacer nada, también e leído parte del documento de testo, y no veo bien como montar las conexiones.

Por eso cuando tenga un buen rato me pondré a trastear, y si no puedo con el arduino pequeño lo hago con el arduino uno que si me lo reconoce, si consigo hacerlo funcionar lo probaría una temporada y luego lo pondría en la caja del acuario para programar el encendido de algunos componentes.

Ahora tengo con un programador de sera que no funciona muy bien a la hora de cambiar las programaciones.

De nuevo muchas gracias por vuestro esfuerzos no creáis que no lo valoramos por no estar montando el programador, pero no quiero estar haciendo preguntas que puedo resolver si le echo mas tiempo sin estar preguntando, cuando me líe seguro que si que freiré el post a preguntas de torpe.

Si te pillas un arduino mega te puedo ayudar a montarte CAO que es el proyecto interesante de verdad igual que lo tengo yo, que ya has visto que son mil cosas

(01-03-2016, 12:52 AM)ArturoS escribió: [ -> ]Pedro, para ir probando con el A Uno

Conecta el bus I2C entre el reloj DS3231 (patillas SDA, SCL ) y el Uno a los pines A4, A5 respectivamente.

Conecta los pines del Uno 4 a 7 (digitales) a la placa del relé

Alimenta desde el arduino desde V5 y GND a DS3231 y Reles (para pruebas de poco s min no hace falta poner la fuente, se alimentará desde el PC por el USB), obviamente a los pines V5 (o V+) y GND de ambos.

No es necesario que conectes nada a la salida de los reles, la placa lleva unos leds que te indicarán que reles se activan, y para pruebas vale.

En el PC, en el ide de Arduino en Herramientas > Placa selecciona el Arduino Uno

Conecta el USB desde el pc (espera o comprueba que reconozca la conexion USB del arduino) y prueba el programa que comenta Antonio PruLeds.ino.

Después puedes probar CAO_SETA_v1_0.ino que es el programa principal del PBAA.

De entrada abre el monitor serie (lupa arriba dcha) y pon en fecha/hora el reloj (la real o una que fijes para las pruebas)
Tecleando "a 29 02 16 23 10 00" (sin comillas y es a dd mm aa hh mm ss) e intro
También puede pulsar I e intro y ver un informe.

Posteriormente fíjate lo que comenta Antonio al principio del código y en la rutina void SetPinsProgram() que es donde se definen los pines a usar y la programación de los mismos.

Aparte de los ejemplos que incluye Antonio para probar, te dejo lo que tengo yo puesto como programador de tres luces

Código:
void SetPinsProgram(){
    // Activacion de los pines
    ProgPins.ConfigurarPin(4, HIGH); // luz 1
    ProgPins.ConfigurarPin(5, HIGH); // luz 2
    ProgPins.ConfigurarPin(6, HIGH); // reservado otro uso
    ProgPins.ConfigurarPin(7, HIGH); // luz noche

    // Crear pulsos programacion horaria
    ProgPins.CrearPulso(4, 14, 0, 0, 8, 0, 0); // Pin4 encender 2 pm durante 8 h - apaga 10 pm
    ProgPins.CrearPulso(5, 14, 30, 0, 8, 0, 0); // Pin5 encender 2:30 pm durante 8 h - apaga 10:30 pm
      //ProgPins.CrearPulso(6, 13, 30, 0, 8, 0, 0); // Pin6 encender 01:30 pm durante 8h  - apaga 09:30 pm
    ProgPins.CrearPulso(7, 12, 30, 0, 11, 30, 0); // Pin7 encender 12:30 pm durante 11:30 h - apaga 00:00 pm
    ProgPins.CrearPulso(7, 0, 0, 0, 1, 0, 0); // Pin7 encender 00:00 pm durante 1 h  - apaga 01:00 am
}

Ya ves lo sencillo que es establecer una programación horaria.



rbaby, en www.prometec.net encontras montajes y ejemplos en español de muchos de los modulos que te han llegado

No es necesario que metas la hora a mano Pedro, si estás usando la librería RTCLib que me imagino que sí para el reloj, tiene un método que coge la hora del ordenador (es decir, lo ejecutas una vez conectado por usb al ordenador para que coja la hora él solo) que es RTC.adjust(DateTime(__DATE__, __TIME__)); después de haber hecho el begin()

Como va con pila el reloj, una vez que has ejecutado una vez el código y el reloj se ha puesto en hora, puedes comentar esa línea en el código y volver a compilar, para que puedas arrancar arduino con el reloj sin estar conectado al ordenador y no se te vaya la hora.
Muchas gracias Arturo, leyendo tranquilamente es que he encontrado tu mensaje. Saludos

(01-03-2016, 12:52 AM)ArturoS escribió: [ -> ]rbaby, en www.prometec.net encontras montajes y ejemplos en español de muchos de los modulos que te han llegado
(01-03-2016, 11:26 AM)rbaby escribió: [ -> ][...]
He encontrado varios tutoriales para principiantes, si alguien los necesita se los puedo compartir en un FTP. Aprovecho e informo que si necesitáis espacio para compartir documentos, código, etc., os puedo habilitar espacio en mi FTP. Saludos

Me parece una muy buena idea.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29