¿Aún no conoces AMA?

Hazte socio de Acuariofilia Madrid Asociación.
ABIERTO EL PLAZO DE INSCRIPCIÓN: DEL 1 AL 15 DE JUNIO.

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
Aula Arduino para principiantes.
Respuestas: 1783    Visitas: 440325
#616
William bienvenido a este Aula de Arduino para principiantes.

Veo que tienes cuatro líneas de iluminación LED independientes que pueden ser controladas mediante PWM para usar dimeo en ella, con un Arduino Mega. Parece que en este momento no tienes un software apropiado porque te estás limitando a encender y apagar las luces con un programador conectado directamente a la fuente. ¿Cierto?

Yo estoy trabajando en un software llamado CAO1 que como mínimo implica usar tres elementos hardware insustituibles:
1) Un LCD 20x4 por bus I2C
2) Una botonera de 5 botones que va a una entrada analógica. (fácil de hacer)
3) Un pequeño disco piezoeléctrico como zumbador.

Estos tres elementos vienen siendo utitizados en un amplio conjunto de módulos que constituyen mi aplicación CAO1. Mi sistema es bastante flexible, salvo por los tres elementos que acabo de comentar. Estos tres componentes conforman el interfaz entre el sistema y los humanos que han de manejarlo. No son fácilmente sustituibles.

El sistema completo que estoy desarrollando (CAO1). Ha sido desarrollado para Arduino Mega 2560, y se hará público mañana aquí mismo y en ciberdroide.com/cao
Se podrá descargar la versión BETA.

Incluirá algo de documentación en un fichero 'Leame.odt' pero la documentación completa tardará algo más porque estoy editando un libro de unas 120 páginas con unas 25 imágenes en formato electrónico. Todo ello bajo licencia de uso Creative Commons Attribution-NonCommercial-ShareAlike.

De momento tienes una versión reducida de CAO1 llamada Dimmer1C que puedes descargar aquí: Dimmer1C.V1.2.zip

Contiene un documento 'Dimmer1C.odt' que contiene información suficiente para saber de que va y como instalarlo. Está limitado a un solo canal de dimeo y puede ser usado en Arduino UNO o Arduinos más potentes.

Si ves que necesitas algo diferente coméntalo y te ayudaré en lo que pueda. De hecho Dimmer1C fue desarrollado para una persona de aquí porque CAO1 le quedaba algo grande ya que no necesitaba tanto y no podía usarlo en su Arduino UNO.
#617
hola antonio gracias por responder mira te comento yo tengo 5 canales de 10 led cada uno esa imaj es para que quede mas o menos como es yo quiero por ahora claro jaja hacer que la pantalla tenga amanecer dia sol atardecer y luna si es posible claro y en la lcd me gustaría que me ponga en que face del dia estoy y la hora y si puedo hacer algo con los botones porque quiero poner también 3 DS18B20 Sensor de temperatura digital porque los ventiladores ahora mismo los tengo directo de la FA que tengo con el arduino yo no se mucho casi nada de arduino solo lo que voy viendo en el foro y en Internet
#618
CAO1 tiene 4 canales, en caso de que no fuera suficiente habría que modificar el módulo del dimmer y el de parámetros. Tiene para controlar sensores de temperatura DS18B20 y y sensor PhShied de Dorman Labs o sensores similares de pH. Se adapta bastante a tus necesidades salvo por lo del LCD que ha de ser 20x4. La botonera es fácil de hacer.
#619
ok pero eso que me dices de CAO1 a que te refieres ?
#620
(21-09-2014, 03:36 PM)william escribió: ok pero eso que me dices de CAO1 a que te refieres ?

Yo estoy poniendo aquí toda mi experiencia hardware y sobre todo software adquirida a lo largo del desarrollo de ese proyecto personal (CAO = Controlador de Acuarios por Ordenador).

La versión reducida (Dimmer1C) ya fue presentada aquí el 4 de Agosto y el 15 de agosto subií una segunda versión con las mejoras que surgieron de los comentarios de este foro.

Mañana publicaré aquí mismo la primera versión de CAO1 en estado BETA. La página del proyecto es esta:ciberdroide.com/cao/

Esta versión 1.0.0 BETA de CAO1 es la que lleva tiempo funcionando en mi acuario de 150 litros sin problemas.
#621
Aprovechando que hablas de tu acuario, puedes comentar algo del tipo de leds que colocaste?. Las plantas tienen suficiente luz?.

Saludos
#622
hola Antonio me baje la versión que dices pero eso para mi es un lio de códigos que no puedo comprender por falta de aprender yo quiero que mi pantalla tenga un par de cosas porque se que no tengo la experiencia para hacer tanto si me pueden echar una mano lo agradezco sino pos a seguir tratando de aprender
#623
(21-09-2014, 04:45 PM)xavi escribió: Aprovechando que hablas de tu acuario, puedes comentar algo del tipo de leds que colocaste?. Las plantas tienen suficiente luz?.

Saludos

Las plantas no van mal. Para plantas poco exigentes creo que es suficiente. Prefiero no sacar demasiadas conclusiones hasta dentro de varios meses porque aún no está suficientemente madurado. Las cianofitas están desapareciendo y han empezado a aparecer clorifitas. Los falsos planorbis las consumen, es un buen síntoma porque ese acuario lo tuve ciclando demasiado tiempo en oscuridad y creo que eso ha perjudicado el proceso de ciclado.

De todas formas, para acuarios de más de 150 litros creo que es mejor usar LEDs más potentes.

(21-09-2014, 06:50 PM)william escribió: hola Antonio me baje la versión que dices pero eso para mi es un lio de códigos que no puedo comprender por falta de aprender yo quiero que mi pantalla tenga un par de cosas porque se que no tengo la experiencia para hacer tanto si me pueden echar una mano lo agradezco sino pos a seguir tratando de aprender

Dime que cosas quieres que tenga tu pantalla.
Haz una lista y descríbeme todo lo que necesitas en tu Arduino.
#624
Hola otra ves mira yo te comento lo que voy aprendiendo de este foro y de Internet yo quiero que mi pantalla tena un amanecer día sol y atardecer y luna o sin luna y que con la lcd que tengo pueda decirme la hora y con los botones pueda ir viendo en que faces esta la pantalla y temperatura por ahora que es lo que voy mirando claro que me gustaira que pueda modificar cosas con la botonera pero se que eso es difícil de hacer

yo tengo todo montado de esta forma 5 canales que los tengo en los pines 2,3,4,5,6, el lcd en los pines 5v gnd y en los pines digitales
24, 23, 28, 27, 26, 25 el RTC a 5v gnd y a pin 20 , 21

por ahora tengo esto echo
#include <LiquidCrystal.h>
#include <Wire.h>
#define DS1307_I2C_ADDRESS 0x68

byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val)// Convierte BCD (binario decimal codificado) a números normales decimales
{
return ( (val/16*10) + (val%16) );
}

void setDateDs1307(byte second, // 0-59
byte minute, // 0-59
byte hour, // 1-23
byte dayOfWeek, // 1-7
byte dayOfMonth, // 1-28/29/30/31
byte month, // 1-12
byte year) // 0-99
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.write(decToBcd(second)); // 0 a bit 7 inicia el reloj
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour)); // Si usted quiere 12 hora am/pm usted tiene que poner el
// bit 6 (tambien tiene que cambiar readDateDs1307)

Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}

// Establece la fecha y el tiempo del ds1307

void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
// Resetea el registro puntero

Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

// Alguno de estos necesitan enmascarar porque ciertos bits son bits de control

*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f); // Need to change this if 12 hour am/pm
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}

LiquidCrystal lcd(24, 23, 28, 27, 26, 25);

void setup()
{
//RELOJ//
Wire.begin();
Serial.begin(9600);
lcd.begin(16,2); // DEfine pantalla LCD de 16x2
/*
second = 00;
minute = 32;
hour = 14;
dayOfWeek = 5;
dayOfMonth = 12;
month = 8;
year = 11;

setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
*/

//ILUMINACION//
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}

void loop()
{

getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); //Miramos la hora


lcd.setCursor(0,0);
if (dayOfMonth < 10) lcd.print("0");
lcd.print(dayOfMonth, DEC);
lcd.setCursor(3,0);
lcd.print("/");
lcd.setCursor(5,0);
if (month < 10) lcd.print("0");
lcd.print(month, DEC);
lcd.setCursor(8,0);
lcd.print("/");
if (year < 10) lcd.print("0");
lcd.print(year, DEC);

lcd.setCursor(0,1);
if (hour < 10) lcd.print("0");
lcd.print(hour, DEC);
lcd.setCursor(3,1);
lcd.print(":");
lcd.setCursor(5,1);
if (minute < 10) lcd.print("0");
lcd.print(minute, DEC);
lcd.setCursor(8,1);
lcd.print(":");
if (second < 10) lcd.print("0");
lcd.print(second, DEC);
Serial.print(" Dia de la semana:");
Serial.println(dayOfWeek, DEC);
switch (dayOfWeek)
{
case 1:
Serial.println(" Lunes");
break;
case 2:
Serial.println(" Martes");
break;
case 3:
Serial.println(" Miercoles");
break;
case 4:
Serial.println(" Jueves");
break;
case 5:
Serial.println(" Viernes");
break;
case 6:
Serial.println(" Sabado");
break;
case 7:
Serial.println(" Domingo");
break;
}

delay(1000); //Pausa de 0,1 segundo

}
#625
pero no se como se hace el tema de los dimeos ni el teclado en la lcd me sale la fecha y hora pero el dia no y los segundos van de dos en dos no se por que jajaj
#626
Tu estás usando unas librerias (LiquidCrystal.h, Wire.h) y sospecho que al igual que yo tampoco has intentado destripar su código para saber lo que hacen y como lo hacen porque no es necesario. Lo mismo te va a pasar con el 90% del software de CAO1 y para el otro 10% o menos tienes a mano al autor del código para sacarte de apuros.

Dices que no sabes porqué tu segundero va de dos en dos, pero yo tampoco lo sé. Confieso que no soy tan valiente como tú y yo a diferencia de ti no me he metido a manejar el RTC a bajo nivel usando la librería Wire directamente en mi programa. Tu estás manejando directamente el bus I2C.

Reconozco que yo me he hecho mi propio módulo para RTC, pero me he basado en la librería RTClib de JeeLabs http://news.jeelabs.org/code/

Tuve que hacerme mi módulo RTC par usar un formado de fecha español, y para añadir alguna cosilla más, pero lo de mandar comandos al I2C me fió de lo que hizo JeeLabs.

Tu programa te parece más sencillo que el mío, pero hace las cosas de una forma que yo no haría.

Tu planteamiento de hacer un programa monolítico (un solo bloque) me parece correcto para hacer pruebas y para aprender como funcionan las cosas, pero si lo que quieres es obtener algo manejable y fiable puede que tu concepto de la simplicidad termine metiéndote en laberintos de los que no puedas salir a poco que crezca tu código, cosa que suele pasar.

¿Cada cuanto tiempo vas a evaluar y actualizar el estado del dimmer para que las salidas se comporten como tú quieres? ¿Has pensado como interferirá el tiempo de ejecución de un proceso en el otro? Con esto solo quiero decirte que conceptualmente las cosas pueden parecer sencillas, pero en la práctica casi nunca lo son.

Si quieres continuar intentando con tu programa, como mínimo te recomiendo usar una buena librería como la RTClib de JeeLabs.

Te simplificará mucho el resto del trabajo a la hora de controlar el dimmer con el RTC.
#627
hola mira te comento yo e echo eso porque lo encontré para el reloj de tiempo real no tengo idea si hay mas programas ahora que tu me dices otro miro ese para saber llevo tres dias mirando y leyendo en internet y cambiando cosas para que funcione mi arduino como te comente yo quiero unas cosas básicas por lo menos por ahora para poder hacer que esto funcione pero no se como se hacen no paro de ver códigos por todos lados y todos distintos por eso entre en este foro porque veo que saben mucho del tema tu dime lo que tengo que ir mirando cambiando y yo lo ago sin problemas yo te comente lo que tengo ahora en casa comprado ya y montado
#628
(22-09-2014, 12:53 AM)william escribió: hola mira te comento yo e echo eso porque lo encontré para el reloj de tiempo real no tengo idea si hay mas programas ahora que tu me dices otro miro ese para saber llevo tres dias mirando y leyendo en internet y cambiando cosas para que funcione mi arduino como te comente yo quiero unas cosas básicas por lo menos por ahora para poder hacer que esto funcione pero no se como se hacen no paro de ver códigos por todos lados y todos distintos por eso entre en este foro porque veo que saben mucho del tema tu dime lo que tengo que ir mirando cambiando y yo lo ago sin problemas yo te comente lo que tengo ahora en casa comprado ya y montado

Son las 6:17, hoy me he levantado tempranito y voy con algo de prisa, pero a lo que me comentas te diré que ya me imaginaba que básicamente habías hecho eso y es la forma de aprender. Me puedo hacer una idea de tu reacción ante el volumen de código de Dimmer1C y CAO1 tiene más código aún. Hoy me toca liberar la primera versión de CAO1 (es una BETA) y estoy seguro de que mucha gente reaccionará exactamente como tú lo has hecho ante ese montón de líneas de código.

Es perfectamente comprensible pero aunque te cueste creerlo toda esa complicación/sofisticación o como quieras denominarlo tiene un por qué y no se trata de hacer muchas cosas, sino de lograr un sistema fiable, fácil de manejar y fácil de configurar. Estas facilidades son complicadas de conseguir pero no debes preocuparte por ello porque con un poco de guía te resultaría mucho más llevadero que cualquier otra cosa.

Te va a bastar tocar las cosas que te apetezca tocar porque tampoco has tocado las librerías que estás usando ¿verdad?

Si es por número de líneas, CAO1 tiene 6230 líneas (de momento).-fisch.gif
Si prefieres usar tu LCD de 16x2 para tu acuario con un sistema muy sencillito, podrías montar mi refrigerador de acuario que tiene solo 273 líneas de código. Veasé Refrigerador para acuarios realizado con Arduino.

Es un artículo de 2013, enlaza con un vídeo de demo. La sonda dió problemas durante un par de meses (ya hablaré de la hermeticidad de estas sondas sumergibles) pero corregí el problema.

Aún lo tengo funcionando y no tiene RTC, pero desde hace un año va como un reloj. -happy.gif
#629
hola te comento yo quiero que esto salga bien como tu dices dime que tengo que hacer para que la pantalla funcione que codigo tengo que poner -good.gif
#630
Pero tienes un LCD de 16x2 ¿No te está funcionando?

Usuarios navegando en este tema: 2 invitado(s)


Salto de foro: