Taller de Arduino

Estado
Cerrado para nuevas respuestas.
12 Dic 2009
21
españa
Provincia
jaen
Y con respecto a lo de los 17v la fuente me da 12 estabilizados lo mismo que deveria dar la fuente del esquema de la pagina 139 lo unico que tendras que montar en serie tantos led como necesites para dar los 12v y ir montando en paralelo tantas series como necesites pero si la fuente pone que da 12v da 12v no te va a dar 32 pienso yo.
 

jmcadsl

Miembro Honorífico
17 Ene 2010
1.030
España
Provincia
Madrid
Zifu01, seguro que el TIP esta consumiendo algo, los transistores siempre consumen algo para funcionar.
Has medido el voltaje antes del TIP y despues del TIP y es la misma?¿?¿?¿

Otra cosa que puedes hacer es ver que amperaje le esta llegando a los leds.
Prueba con el tip y son el TIP, asi ves que "consume" el TIP.

PD: Me habia hecho un lio, al ver el esquema de la pagina 139 leds de 3W ...

Salu2
 
27 May 2011
32
JunÃ*n, Buenos Aires, Argentina
Provincia
Buenos Aires
jmcadsl te hago una consulta cuando cargo tu codigo, vs lo estas usando en un uno no? yo lo voy a usar en un mega el tema de la coneccion del reloj y demas lo conecto en el mismo pin que vs o uso los pines marcados en el mega para la entrada de reloj

saludos
 

jmcadsl

Miembro Honorífico
17 Ene 2010
1.030
España
Provincia
Madrid
Tienes que adaptar los pines al mega

Enviado desde mi GT-I9000 usando Tapatalk
 

jmcadsl

Miembro Honorífico
17 Ene 2010
1.030
España
Provincia
Madrid
Lucho antes de ponerte a crear tu controlador deberías por lo menos leerte los post de arduino. Si te fijas hay uno que habla de la conexión del reloj y como se debe conectar en el mega.

Si te vamos diciendo paso a paso donde tienes que conectar cada cable va a ser eterno y además no vas a llegar a entender como funciona realmente.

Ten paciencia . Busca y prueba y cuando veas que te vas a volver loco...pregunta. :)

Enviado desde mi GT-I9000 usando Tapatalk
 
1 Jul 2009
627
españa
Provincia
huelva
QUOTE=jmerino;796002]Botones Arriba/Abajo/MenuOK:
1k, 10k, 3.3k para los botones (utilizo tres botones en un pin analógico, por eso las resistencias)
Cable negro grueso = Positivo
Cable negro fino = Negativo
Cable naranja = Pin analógico del Arduino
3ada9381.jpg


En función de que botón se pulse se obtiene un valor, este valor se puede modifican cambiando los valores de las resistencias. Con las que he utilizado yo el código de los botones a declarar es el siguiente:

Mi codigo:
Código:
//Arduino UNO .. valores leidos de los botones con el UNO
int v_arriba = 318;
int v_abajo  = 93;
int v_menu   = 178;

Os dejo el menú que utilizo aunque adelanto que todavía no está terminado, pero ya hay bastante para adaptarlo a vuestras necesidades si lo creeis oportuno. Esta plagiado de PepePotamo (gracias).


Mi codigo:
Código:
void Menu(){
  int OPMENU = 1;
  int refrescarMENU = 1;
  int boton_pulsado;
  int NOSALIR = 0;
  //
  int peristaltica = 0;
  int rele = 0;
  //
  int p1 = EEPROM.read(ml_p1);
  int p2 = EEPROM.read(ml_p2);
  int p3 = EEPROM.read(ml_p3);
  int on  = EEPROM.read(luz_on);
  int off = EEPROM.read(luz_off);
  //
  LCD_Reset(1);
  setCur(3,1); Serial.print("CONFIGURACION");
  delay(1000);
  while (NOSALIR==0){
    wdt_reset();    //Watchdog
    boton_pulsado = analogRead(boton);

    if (boton_pulsado == v_arriba) {OPMENU--; delay(200); refrescarMENU=1; if (OPMENU==0) {OPMENU=8;}};
    if (boton_pulsado == v_abajo ) {OPMENU++; delay(200); refrescarMENU=1; if (OPMENU==9) {OPMENU=1;}};
  
    if ((OPMENU < 5)&&(refrescarMENU==1)){
      LCD_Reset(1);
      setCur(0,0); Serial.print("1.Comida 10min     "); if (OPMENU == 1) {Serial.print("<");};
      setCur(0,1); Serial.print("2.Cambio de agua   "); if (OPMENU == 2) {Serial.print("<");};
      setCur(0,2); Serial.print("3.Luz SUMP         "); if (OPMENU == 3) {Serial.print("<");};
      setCur(0,3); Serial.print("4.Calibrar PH      "); if (OPMENU == 4) {Serial.print("<");};
      refrescarMENU=0;
      delay(300);
    } else if ((OPMENU >= 5)&&(refrescarMENU==1)){
      LCD_Reset(1);
      setCur(0,0); Serial.print("5.Conf. Peristal.  "); if (OPMENU==5){Serial.print("<");};
      setCur(0,1); Serial.print("6.Cebar Peristal.  "); if (OPMENU==6){Serial.print("<");}; 
      setCur(0,2); Serial.print("7.Prueba Reles     "); if (OPMENU==7){Serial.print("<");};
      setCur(0,3); Serial.print("8.Salir            "); if (OPMENU==8){Serial.print("<");};
      refrescarMENU=0;
      delay(300);
    }
    if (boton_pulsado == v_menu) NOSALIR=1;
    }
    ////ACTUAR EN CONSECUENCIA DE LA OPCION PULSADA
    LCD_Reset(1);
    delay(300);
    
    switch (OPMENU){
      case 1:
        Aviso(6, 600);
        NOSALIR = 0;
        break;
      case 2:
        Aviso(7, 600);
        NOSALIR = 0;
        break;
      case 3:
        NOSALIR = 0;
        OPMENU  = 1;      
        while (NOSALIR==0){
          wdt_reset();    //Watchdog
          boton_pulsado = analogRead(boton);
          if (boton_pulsado == v_menu) {OPMENU++; delay(300); if (OPMENU==3) {NOSALIR=1;}};
  
          setCur(0,0); Serial.print("Luz SUMP config.:");
          setCur(0,2); Serial.print("1.Encendido: ");
          setCur(15,2); Serial.print(on); Serial.print("  ");
          setCur(0,3); Serial.print("2.Apagado:   ");
          setCur(15,3); Serial.print(off); Serial.print("  ");
          
          if (OPMENU == 1){
            setCur(19,2); Serial.print("<");
            setCur(15, 2);
            if (boton_pulsado == v_arriba){delay(300); on++;Serial.print(on);};
            if (boton_pulsado ==  v_abajo){delay(300); on--;Serial.print(on);};
            if (on < 0){on = 23;};
            if (on > 23){on = 0;};
            EEPROM.write(luz_on, on);
          } else {
            setCur(19,2); Serial.print(" ");
            setCur(19,3); Serial.print("<");
            setCur(15, 3);
            if (boton_pulsado == v_arriba){delay(300); off++;Serial.print(off);};
            if (boton_pulsado ==  v_abajo){delay(300); off--;Serial.print(off);};
            if (on < 0){on = 23;};
            if (on > 23){on = 0;};
            EEPROM.write(luz_off, off);
          } 
                   
        }
        break;
      case 4:
      
        break;
      case 5:
        NOSALIR = 0;
        OPMENU  = 1;  
        while (NOSALIR==0){
          wdt_reset();    //Watchdog
          boton_pulsado = analogRead(boton);
          if (boton_pulsado == v_menu) {OPMENU++; delay(300); if (OPMENU==4) {NOSALIR=1;}};
  
            setCur(0,0); Serial.print("Perist.config: 20:00");
            setCur(0,1); Serial.print("P1 ml x dia: ");
            setCur(15,1); Serial.print(p1); Serial.print("  ");
            setCur(0,2); Serial.print("P2 ml x dia:  ");
            setCur(15,2); Serial.print(p2); Serial.print("  ");
            setCur(0,3); Serial.print("P3 ml x dia:  "); 
            setCur(15,3); Serial.print(p3); Serial.print("  ");
            
          if (OPMENU == 1){
            setCur(19,1); Serial.print("<");
            setCur(15, 1);  
            if (boton_pulsado == v_arriba){delay(300); p1++;Serial.print(p1);};
            if (boton_pulsado ==  v_abajo){delay(300); p1--;Serial.print(p1);};
            EEPROM.write(ml_p1, p1);
          } 
          if (OPMENU == 2){
            setCur(19,1); Serial.print(" "); setCur(19,2); Serial.print("<");
            setCur(15, 2);
            if (boton_pulsado == v_arriba){delay(300); p2++;Serial.print(p2);};
            if (boton_pulsado ==  v_abajo){delay(300); p2--;Serial.print(p2);};
            EEPROM.write(ml_p2, p2);
          }
          if (OPMENU == 3){
            setCur(19,2); Serial.print(" "); setCur(19,3); Serial.print("<");
            setCur(15, 3);
            if (boton_pulsado == v_arriba){delay(300); p3++;Serial.print(p3);};
            if (boton_pulsado ==  v_abajo){delay(300); p3--;Serial.print(p3);};
            EEPROM.write(ml_p3, p3);
          } 
                   
        }
        break;
      case 6:
        NOSALIR = 0;
        OPMENU  = 1;  
        //Cebar peristalticas
        while (NOSALIR==0){
          wdt_reset();    //Watchdog
          boton_pulsado = analogRead(boton);
          if (boton_pulsado == v_menu) {
            delay(300); 
            if (peristaltica==0) {
              NOSALIR=1;
            }else{
              switch (peristaltica){
                case 1:
                  digitalWrite(peristaltica1, HIGH);
                  delay(5000);
                  digitalWrite(peristaltica1, LOW);
                  break;
                case 2:
                  digitalWrite(peristaltica2, HIGH);
                  delay(5000);
                  digitalWrite(peristaltica2, LOW);
                  break;
                case 3:
                  digitalWrite(peristaltica3, HIGH);
                  delay(5000);
                  digitalWrite(peristaltica3, LOW);
                  break;
              }
            }
          };
  
          setCur(0,0); Serial.print("Cebado Peristaltica");
          setCur(1, 2); Serial.print("Peristaltica "); setCur(15, 2); Serial.print(peristaltica); Serial.print(" ");
          setCur(0, 3); Serial.print("Salir=0");
          setCur(15,2);
            
          if (boton_pulsado == v_arriba){delay(300); peristaltica++;Serial.print(peristaltica);};
          if (boton_pulsado ==  v_abajo){delay(300); peristaltica--;Serial.print(peristaltica);};
          if (peristaltica == -1){peristaltica = 0;};
          if (peristaltica ==  4){peristaltica = 3;};
                   
        }
        break;  
      case 7:
        NOSALIR = 0;
        OPMENU  = 1;  
        //Prueba de reles
        while (NOSALIR==0){
          wdt_reset();    //Watchdog
          boton_pulsado = analogRead(boton);
          if (boton_pulsado == v_menu) {
            delay(300); 
            if (rele==0) {
              NOSALIR=1;
            }else{
              switch (rele){
                case 1:
                  digitalWrite(rele1, HIGH);
                  delay(5000);
                  digitalWrite(rele1, LOW);
                  break;
                case 2:
                  digitalWrite(rele2, HIGH);
                  delay(5000);
                  digitalWrite(rele2, LOW);
                  break;
                case 3:
                  digitalWrite(rele3, HIGH);
                  delay(5000);
                  digitalWrite(rele3, LOW);
                  break;
                case 4:
                  digitalWrite(rele4, HIGH);
                  delay(5000);
                  digitalWrite(rele4, LOW);
                  break;
              }
            }
          };
  
          setCur(0,0); Serial.print("Prueba de reles");
          setCur(8, 2); Serial.print("Rele "); setCur(15, 2); Serial.print(rele); Serial.print(" ");
          setCur(0, 3); Serial.print("Salir=0");
          setCur(15,2);
            
          if (boton_pulsado == v_arriba){delay(300); rele++;Serial.print(rele);};
          if (boton_pulsado ==  v_abajo){delay(300); rele--;Serial.print(rele);};
          if (rele == -1){rele = 0;};
          if (rele ==  5){rele = 4;};
                   
        }
        break;
      
    } 
    LCD_Reset(1);
    delay(300);   
}
[/QUOTE]

cuando inserto el codigo me sale el error "EEPROM"was not declares in this scope ¿ que ocurre? y a que pin analogico va ? esta puesto en el 2
 

jmcadsl

Miembro Honorífico
17 Ene 2010
1.030
España
Provincia
Madrid
Hasta cargado la librería epprom?

Enviado desde mi GT-I9000 usando Tapatalk
 
1 Jul 2009
627
españa
Provincia
huelva
Hasta cargado la librería epprom?

Enviado desde mi GT-I9000 usando Tapatalk
jmcadsl en principio dicha libreria esta en la carpeta librerias con sus sub-carpetas/write/read/clear. de todas formas al inicio del codigo inserte #include <EEPROM.h>
y me da el error ml_p1"was not declared in this scope
 
12 Sep 2010
445
España
Provincia
Barcelona (Sabadell)
Hola medina, al inicio del codigo se crean los valores de las eppron y se declaran con valores iniciales, despues se almacena la informacion cada vez que se modifica para utilizarla en el código.

te pongo aqui las declaraciones de mi código que creo que es el que estas utilizando.

//
// CONTROLADOR ACUARIO V0.1
//
//////////////////////////////////////////////////////////////////////////
#include <avr/io.h>
#include <avr/wdt.h>
#include <stdlib.h>
#include <EEPROM.h>
#include <Wire.h> //Esta es la libreria de comunicacion I2C
#include <OneWire.h> //temperatura
#include <DallasTemperature.h> //temperatura
#include <pitches.h> //Sonido

#define ONE_WIRE_BUS 6 //temperatura, pin de entrada
#define DS1307_I2C_ADDRESS 0x68 //reloj
#define CR 250
#define CD 1


//Variables para almacenar valores en la EEPROM de ARDUINO
int repo_dia = 1; //Aqui almacenaremos la cantidad de veces que llevamos de rellenado en un dia
int repo_mes = 2; //Aqui almacenaremos la cantidad de veces que llevamos de rellenado
int diames = 3; //Aqui almacenamos el dia del mes para hacer cambios en repo_dia
int ciclado = 99; //Aqui almacenamos las decenas de minutos que aumentaremos el diclado cada dia
int ml_p1 = 4; //Valor ml peristaltica1
int ml_p2 = 5; //Valor ml peristaltica2
int ml_p3 = 6; //Valor ml peristaltica3
int luz_on = 7; //Hora a la que se enciende la luz del sump
int luz_off = 8; //Hora a la que se apaga la luz del sump
 
Última edición:
1 Jul 2009
627
españa
Provincia
huelva
Hola medina, al inicio del codigo se crean los valores de las eppron y se declaran con valores iniciales, despues se almacena la informacion cada vez que se modifica para utilizarla en el código.

te pongo aqui las declaraciones de mi código que creo que es el que estas utilizando.
me pierdo jmerino
la verdad es que he provado con el reloj/rele/sonda temperatura /los botones como en tu esquema y todo eso me gustaria tenerlo en un menu pues es ahy donde quiero llegar estoy por leerme las 70 pag de la progamacion del arduino . en fin creo que esto es mas copmplicado de lo que yo esperaba
 
12 Sep 2010
445
España
Provincia
Barcelona (Sabadell)
medina, faltava la informacion en el post anterior, ya la he colocado. Comprueba que tienes ese codigo al inicio del programa principal y veras como te funciona.
 
1 Jul 2009
627
españa
Provincia
huelva
medina, faltava la informacion en el post anterior, ya la he colocado. Comprueba que tienes ese codigo al inicio del programa principal y veras como te funciona.
perdona compañero pegue 1º el codigo anterior luego pegue el del menu y me da error lcd_reset was not declared in this scope no se si es asi como se hace
 
12 Dic 2009
21
españa
Provincia
jaen
Estoy montando L&S REEF RETURN. por ahora tengo solo el arduino el lcd el reloj y botones estoy esperando los reles y sonda para la temperatura, y mi problema es que cuando paso la codificacion al arduino se me enciende el lcd pero no aparece nada ni dandole a los botones puede ser por no tener las dondas? otra pregunta en vez de t5 y led azules y blancos tengo todos los leds unidos a la misma linea asi podria apgarlos progresibamente? aun uqe no conecte los otros leds? muchas gracias.
 
9 Dic 2009
1.031
españa (jaen) ubeda
Provincia
jaen
hola lucho lee esta web () es mia jeje.
hay te explica bien lo principal.
reloj, pantalla lcd, botones y sonda de temperatura ademas de cada codigo.
espero que te sea de ayuda
 
9 Dic 2009
1.031
españa (jaen) ubeda
Provincia
jaen
no yo tengo ninguna serial asi q poco puedo ayudarte, leei k era mas complicado y demas asi
preferi gstarme el dinero en un mega yasi no tener problemas con los pines
 
12 Dic 2009
21
españa
Provincia
jaen
muxas gracias por intentarlo de todas maneras aver si se conecta jmcadsl y me lo puede solucionar :( jooo ya estoy fijandome en sus esplicaciones y intento seguir todo sus pasos y que me gusta muxo su proyecto. :) y seguro que encima es una tonteria lo que le pasa :)
 
Estado
Cerrado para nuevas respuestas.
Arriba