This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.

Nombre de usuario
  

Contraseña
  





Estadísticas del foro
» Miembros: 14,789
» Último miembro: LocoPorLaBici
» Temas del foro: 11,107
» Mensajes del foro: 111,664

Estadísticas totales

Últimos temas
Ruido ender 3
Foro: General
Último mensaje por: AguacateFurioso
Hace 1 hora
» Respuestas: 0
» Vistas: 14
Instalando Marlin para EN...
Foro: Impresoras
Último mensaje por: JOSELUIS54
Hace 3 horas
» Respuestas: 12
» Vistas: 98
Limpieza y curado de piez...
Foro: General
Último mensaje por: bertosbd
Ayer, 08:16 PM
» Respuestas: 0
» Vistas: 39
Impresora Geeetech, probl...
Foro: General
Último mensaje por: Simemart
Ayer, 03:07 PM
» Respuestas: 1
» Vistas: 36
Pantalla con rayas cuando...
Foro: Anycubic
Último mensaje por: kodzuki
Ayer, 03:06 PM
» Respuestas: 1
» Vistas: 320
SKR E3Dip en Ender 3v2
Foro: Firmware y Software
Último mensaje por: Simemart
Ayer, 02:59 PM
» Respuestas: 15
» Vistas: 175





















 
  ¿Mejor alternativa a pronterface?
Enviado por: Pepo - 19-08-2013, 10:39 PM - Foro: Firmware y Software - Respuestas (8)

Hola.

Hoy se me ha parado de repente 2 veces la impresion. No veas que movida, porque en principio pense que se me habia petado la ramps. Es el puñetero pronterface (MAC) que se queda pillado y despues no conecta con la ramps. Hay que matar el proceso y desenchufar el USB.

¿Cual es la mejor alternativa a pronterface?

Saludos


Mi blog sobre Arduino


  Insoladora Homemade
Enviado por: Triggerr - 19-08-2013, 09:06 PM - Foro: Electrónica - Respuestas (41)

FINALIZADA

Bueno, edito la primera pagina para dejar un poco el resumen de todo, para empezar un video del funcionamiento:




Una fotos:

[Imagen: IMG_20130914_185030_zps1a2e5d98.jpg]

[Imagen: IMG_20130914_185026_zpsf813a618.jpg]

[Imagen: IMG_20130914_182656_zps6c56630b.jpg]

[Imagen: IMG_20130914_182645_zpsc34e15c9.jpg]

[Imagen: IMG_20130914_182638_zps0badfac8.jpg]


Codigo:

Código:
//Insoladora V1.0

//Librerias
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Bounce.h>

//Caracteres
byte uparrow[8] = {        //Flecha hacia arriba
    B00100,
    B01110,
    B10101,
    B00100,
    B00100,
    B00100,
    B00100,
    B00100
};
byte downarrow[8] = {    //Flecha hacia abajo
    B00100,
    B00100,
    B00100,
    B00100,
    B00100,
    B10101,
    B01110,
    B00100
};

//LCD
LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display

//Botones
Bounce UP = Bounce(2,100);        //Pin 2 para boton UP
Bounce DOWN = Bounce(3,100);        //Pin 3 para boton DOWN
Bounce START = Bounce(4,100);        //Pin 4 para boton START
Bounce STOP = Bounce(5,100);        //Pin 5 para boton STOP

//Salidas
#define RELE 6
#define BUZ 8

//Variables
long segundos = 0;    //Variable para los segundos
long minutos = 0;    //Variable para los minutos
long segundosactual = 0; //Variable para temporizacion
long segundostotal = 0; //Segundos a temporizar
long segundosviejo = 0; //Tope de segundos para el FOR
long contador = 0;
long multiplo = 1;

void setup() {
  // put your setup code here, to run once:
  //PINES
  pinMode(RELE, OUTPUT);
  pinMode(BUZ, OUTPUT);
  //Iniciamos el LCD
  lcd.init();
  lcd.backlight();                     //Iniciamos la retroiluminacion
  lcd.setCursor(0,0);                //Situamos el cursor al inicio
  lcd.print("Insoladora V1.0");        //Imprimimos mensaje inicial
  lcd.setCursor(5,1);                //        
  lcd.print("L1llo5");                //
  delay(2000);                        //Esperamos 2 segundos con el mensaje
  lcd.clear();                        //Limpiamos la pantalla

  //Registro Caracteres
  lcd.createChar(1, uparrow);
  lcd.createChar(2, downarrow);
}

void loop()
{
    // put your main code here, to run repeatedly:
    //Leemos el tiempo guardado
    segundos=EEPROM.read(1);
    minutos=EEPROM.read(2);
    do{
        lcd.setCursor(0,0);
        lcd.print("Tiempo:");
        //Actualizamos los botones
        UP.update();
        DOWN.update();
        //Imprimimos la flechas en pantalla
        lcd.setCursor(15,0);
        lcd.write(1);
        lcd.setCursor(15,1);
        lcd.write(2);
        //Imprimos los segundos y minutos
        imprimir(segundos,minutos);             //Imprimimos los minutos y segundos iniciales
        if (UP.risingEdge())                    //Comprobamos si se ha pulsado el interruptor UP
        {
            segundos=segundos+10;                //Sumamos 10 segundos en cada pulsacion
            if(segundos > 50)                    //Si los segundos pasan del 50, sumamos un minutos y reiniciamos los segundos
            {
                minutos=minutos+1;
                segundos=0;
                imprimir(segundos,minutos);        //Imprimimos
            }
        imprimir(segundos,minutos);                //Si no pasamos de 50 segundos los minutos no varian
        }
        else if (DOWN.risingEdge())                //Si pulsamos el boton DOWN
        {
            segundos=segundos-10;                //Restamos 10 segundos en cada pulsacion
            if(segundos < 0)                    //Si los segundos son menores que 0, restamos un minuto y ponemos los segundos a 50
            {
                minutos=minutos-1;                
                segundos=50;
                if(minutos<0)                    //Evitamos que los minutos puedan ser negativos
                {
                    minutos=0;                    //Ponemos a cero el contador
                    segundos=0;                    //
                }
                imprimir(segundos,minutos);        //Imprimimos
            }
            imprimir(segundos,minutos);            //Si no ocurre ni minutos negativos ni resta de los mismos imprimimos
        }
        START.update();
    }while (!START.risingEdge()||segundos==0&&minutos==0); //Mientras no se pulse START o sean cero los minutos y segundos se repite el bucle
    //Pantalla de Inicio
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("INICIANDO....");
    //Guardado en EEPROM
    saveseg(segundos);
    savemin(minutos);
    buzzer(2);
    delay(1000);
    lcd.clear();
    //Cuenta atras
    segundosactual=millis();                //Guardamos los millis en los que nos encontramos
    segundosviejo=millis();                    //Guardamos en otra variable
    segundostotal=(minutos*60+segundos);    //Calculamos los segundos totales que hay que temporizar
    lcd.setCursor(0,0);                        
    lcd.print("Insolando:");                //Imprimimos un mensaje de INSOLANDO
    while (segundosactual/1000<=segundosviejo/1000+segundostotal)    //Cuenta atras, mientras segundos actual, sea mas pequeño que la suma de los que teniamos mas los que necesitamos, repetimos el bucle
    {
        STOP.update();                //Actualizamos el estado del boton STOP
        if(STOP.risingEdge())        //Si pulsamos el boton stop paramos el bucle
        {
            digitalWrite(RELE, LOW);    //Ponemos a cero la salida del rele
            lcd.clear();
            //Ponemos a cero las variables
            segundosactual = 0;
            segundostotal = 0;
            segundosviejo = 0;
            contador = 0;
            multiplo = 1;

            break;                        //Salimos del while
        }                    
        digitalWrite(RELE, HIGH);        //Activamos el rele
        contador=segundosactual-segundosviejo;    //Calculamos la diferencia entre segundos viejo y nuevo
        if (contador>1000*multiplo)                //Cuando llege a 1000ms(1 segundo) restamos tiempo
        {
            if (segundos<=0)                    //Si los segundos son menores que 0 bajamos minutos
            {
                minutos=minutos-1;                    //Restamos un minuto
                segundos=59;                        //Seteamos los segundos a 59
                cuentaatras(segundos,minutos);        //Imprimimos
            }else
                {
                    segundos=segundos-1;                //Restamos segundos si no son menores que 0
                    cuentaatras(segundos,minutos);
                }
            multiplo=multiplo+1;                    //Empleamos multiplo, para ir aumentando de un segundo en un segundo la diferencia entre tiempos, y asi poder contar cada segundo
        }
        segundosactual=millis();        //Renovamos la variable millis
    }
    //////FIN DEL CONTEO
    digitalWrite(RELE, LOW); //Desactivamos el rele
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("FINALIZADO");//Mostramos mensaje de finalizado
    buzzer(1);                //Melodia de final
    lcd.clear();            
    //Ponemos a cero las variables
    segundosactual = 0;
    segundostotal = 0;
    segundosviejo = 0;
    contador = 0;
    multiplo = 1;    
    //Volvemos al tiempo guardado
    segundos=EEPROM.read(1);
    minutos=EEPROM.read(2);
}

//Funcion Imprimir
void imprimir(int seg,int minu)
{
if(minutos<10) //Si los minutos son menores de 10 situamos la cifra mas a la derecha
{
    lcd.setCursor(11,0);
    lcd.print(segundos);
    lcd.setCursor(10,0);
    lcd.print(":");
    lcd.setCursor(8,0);
    lcd.print("0");
    lcd.setCursor(9,0);
    lcd.print(minutos);
}
else
{    
    lcd.setCursor(11,0);
    lcd.print(segundos);
    lcd.setCursor(10,0);
    lcd.print(":");
    lcd.setCursor(8,0);
    lcd.print(minutos);
}
}

//Funcion imprimir cuenta atras, situacion correcta de los segundos
void cuentaatras(int seg, int minu)
{
    if(minutos<10&&segundos>=10) //Si los minutos son menores de 10 situamos la cifra mas a la derecha y los segundos mayores que 10
    {
        lcd.setCursor(13,0);
        lcd.print(segundos);
        lcd.setCursor(12,0);
        lcd.print(":");
        lcd.setCursor(10,0);
        lcd.print("0");
        lcd.setCursor(11,0);
        lcd.print(minutos);
    }else if(minutos>=10&&segundos>=10)
        {    
            lcd.setCursor(13,0);
            lcd.print(segundos);
            lcd.setCursor(12,0);
            lcd.print(":");
            lcd.setCursor(10,0);
            lcd.print(minutos);
        }
    if(minutos<10&&segundos<10) //Si los minutos son menores de 10 situamos la cifra mas a la derecha, los segundos menores que 10
    {
        lcd.setCursor(13,0);
        lcd.print("0");
        lcd.setCursor(14,0);
        lcd.print(segundos);
        lcd.setCursor(12,0);
        lcd.print(":");
        lcd.setCursor(10,0);
        lcd.print("0");
        lcd.setCursor(11,0);
        lcd.print(minutos);
    }else if(minutos>=10&&segundos<10)
        {    
            lcd.setCursor(13,0);
            lcd.print("0");
            lcd.setCursor(14,0);
            lcd.print(segundos);
            lcd.setCursor(12,0);
            lcd.print(":");
            lcd.setCursor(10,0);
            lcd.print(minutos);
        }
}

//Funciones Lectura y Grabado EEPROM
void saveseg(int segundos)
{
    int saveseg=0;
    saveseg=EEPROM.read(1);    //Leemos los segundos guardados
    if (saveseg!=segundos)    //Si los segundos guardados no coinciden con los nuevos volvemos a guardar
    {
        EEPROM.write(1,segundos);    //Guardamos
        lcd.setCursor(0,1);            
        lcd.print("Saved");            //Imprimimos para verificar el guardado
    }
}

void savemin(int minutos)
{
    int savemin=0;            
    savemin=EEPROM.read(2);    //Leemos los minutos guardados
    if (savemin!=minutos)    //Si los minutos guardados no coinciden con los nuevos volvemos a guardar
    {
        EEPROM.write(2,minutos);    //Guardamos
        lcd.setCursor(0,1);
        lcd.print("Saved");            //Imprimimos para verificar el guardado
    }    
}

//Funcion BUZ
void buzzer(byte melodia)
{
    switch (melodia)
    {
        case 1:                            //Melodia al finalizar la cuenta
        digitalWrite(BUZ, HIGH);
        delay(1000);
        for (int i = 0; i<10; i++)
        {
            digitalWrite(BUZ, HIGH);
            delay(200);
            digitalWrite(BUZ, LOW);
            delay(50);
        }
        break;                            //Melodia al iniciar la cuenta
        case 2:
        digitalWrite(BUZ, HIGH);
        delay(250);
        digitalWrite(BUZ, LOW);
        break;
    }
}

Resumen;

Bueno, para empezar la insoladora esta echa en MDF, la parte superior es de un viejo escaner, los flourescentes son normales, ya que me costaba encontrar UV, en un futuro puede que los cambie. La insoladora esta controlada por un arduino MICRO, una pantalla LCD conectada por I2C, 4 pulsadores, un rele pilotado por una salida digital y un transistor 2n3905 (Valen la mayoria de NPNs), un BUZZER, y como componentes auxiliares una fuente de 15V compacta, y un LM7809 para alimentar el arduino.

Bueno, despues de pasar el verano sin hacer demasiado, toca ponerse las pilas, vamos a ver si sacamos adelante una insoladora, la idea es aprovechar la parte superior de una impresora multifuncion y hacer la parte inferior en madera (MDF), por ahora nose si usare luz normal o tubos UV, pero lo primero tengo que acabar la estructura, para mañana espero tener todo ya montado.

[Imagen: IMG_20130819_220206_zps82885dfc.jpg]

[Imagen: IMG_20130819_220233_zps714394db.jpg]

[Imagen: IMG_20130819_220254_zps13b138b1.jpg]

Tenia ojeados unos tubos UV a muy buen precio:

http://todoelectronica.com/tubo-fluoresc...c017dc571b


  Elección de electrónica y motores
Enviado por: jusalyso - 19-08-2013, 10:23 AM - Foro: Fresadoras CNC - Respuestas (25)

Quería abrir este tema para que cada uno cuente su experiencia con su electrónica y motores ya pondré mi post cuando tenga algo de tiempo


  Curso de electrónica en coursera
Enviado por: DiegoLale - 18-08-2013, 11:46 PM - Foro: Electrónica - Respuestas (1)

Mañana... bueno... hoy :roto2: empieza en coursera un curso de electrónica que puede que a alguno le interese, yo ya estoy "enrolado" aunque el inglés es algo durillo para mí, pero a ver si se anima mas gente.
Aquí va el enlace: https://www.coursera.org/course/circuits
Saluditos.


  Arduino + RC AFHDS
Enviado por: xerif - 18-08-2013, 02:01 PM - Foro: Arduino - Respuestas (4)

Hola a todos.

Tengo una emisora de 4ch de otros proyectos de aeromodelismo. Estoy buscando informacion de como leer este tipo de emisoras con arduino, pero por desgracia no encuentro informacion al respecto.

Las especificaciones de mi emisora en concreto son:

*RF range: 2.40 - 2.48356 GHz
*Bandwidth: 500 KHz
*Band sum: 160
*RF power: less than 20 dBm
*2.4GHzsystem: AFHDS
*Modulation: FHSS
*ANT length: 26 mm
*RX Sensitivity: -105dBm


Agradeceria informacion al respecto, a poder ser en castellano.

Gracias de antemano.

Si encuentro algo lo ire posteando por aqui.