Tú puedes programar muy fácilmente tu driver con Arduino

Modificaciones, averías, reparaciones, piezas, repuestos...

08 Jun 2013 17:55 por Pulpo del Retiro
<<

Jamás ve la oscuridad

Mensajes: 1120

Registrado: 15 Ene 2012

Re: Tú puedes programar muy fácilmente tu driver con Arduino

ufh, tema muy interesante, lo voy a seguir! :aplauso: :aplauso:
08 Jun 2013 18:36 por iluminatrix
<<

Tecnólogo LED

Mensajes: 462

Registrado: 28 Abr 2011

Ubicación: Zaragoza

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Menudo nivel!! :aplauso: :aplauso:
El poder está dentro de ti, búscalo, pero hazlo con una buena linterna.
08 Jun 2013 18:58 por Lfatman
<<
Avatar de Usuario

Moderador

Mensajes: 5550

Registrado: 01 Oct 2012

Ubicación: Salamanca

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Imagen

Impaciente por conocer la parte física. ¿Se mete el diver por el lector de DVD del ordenador? ¿Se alumbra con la linterna al puerto USB?

Felicidades por tan interesante tema y gracias por instruirnos.
08 Jun 2013 19:37 por Bailer
<<
Avatar de Usuario

Jamás ve la oscuridad

Mensajes: 1178

Registrado: 26 Ene 2012

Ubicación: Andalucía

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Bueno reciclo información por si ayuda, para programar hace falta un pequeño kit con lo basico este de ebay recomendado por PacoA tiene muchos componentes que pueden ser utilidad para el driver o para hacer experimentos propios. Aquíhay información para los quieran curiosear el tema.

En youtube hay muchos videos, desde gente con sistemas strobe :silbando: hasta manitas que domotizan su casa.
08 Jun 2013 20:36 por namberguan
<<
Avatar de Usuario

Moderador

Mensajes: 5103

Registrado: 25 Ene 2011

Ubicación: Barcelona

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Un trabajo y información dada digno de ser admirado :aplauso: :aplauso: Si señor

Del cual lo único que no comparto y puedo criticar es el titulo del Post
Se necesita tener un mínimo de nociones del electrónica y informática para poder realizarlo
De lo cual no poseo de hay que mi mas sincera enhorabuena :aplauso:
08 Jun 2013 20:45 por PacoA
<<

Tecnólogo LED

Mensajes: 204

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

d4n1 escribió:if (mode == 0) {mode = 0;} 

Eso???

De esa manera encenderá siempre como si tuviera la EEPROM vacía ¿no?
no. porque esa instrucción lo que hace es dejar a mode con un valor, 0, en el cual no hemos porgramado nada. Solo hay definidos mode = 1, mode = 2, y mode = 3.

PISTA:

Lo que hay que cambiar, para que siga cambiando de modo en pulsaciones cortas, pero, por ejemplo, arranque siempre en modo alto después de 3 segudnos, está aquí

if (primer2 == false) {
time_now = millis();
if ((time_now - time_on) > time_memory)
{EEPROM.write(1, mode);
primer2 = true;}
}
08 Jun 2013 20:47 por PacoA
<<

Tecnólogo LED

Mensajes: 204

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

antiparanoico escribió:
PacoA escribió:...
ya os contaré la parte física, como se programa. lo primero es que veais lo simple que es el código
Justo eso... Iba a preguntar: cómo se enchufa para programar (para meterle el código)?
es muy fácil, es una pinza que sujeta el chio... lo que estoy probando es si las piznas baratas son fiables. No hay que sacar el chip del driver. Se programa en menos de 5 segundos.

Pero dejadme que mejor el tuto que tengo y haga un video. También me pasa que la cámara de fotos que utilizo para hacer videos se queda sin batería enseguida, con pilas nuevas. es muy raro
08 Jun 2013 20:50 por PacoA
<<

Tecnólogo LED

Mensajes: 204

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

varamigue escribió:Pero si un driver ya incorpora la memoria tras un tiempo apagada, igualmente se puede reprogramar a tu gusto conservando esa memoria, pues ya lleva ese condensador, ¿no? el 105C que tipo de memoria tiene, ¿memoriza encendida, o apagada?
el 105c hace los mismo que ese programa. después de un tiempo encendida la linterna, la linterna se conecta en ese modo la próxima vez.

cuando ponga los modos ocultos veréis que se activan igual que el driver original.
08 Jun 2013 20:58 por joseabul
<<
Avatar de Usuario

Jamás ve la oscuridad

Mensajes: 1272

Registrado: 20 Oct 2012

Ubicación: Valencia

Re: Tú puedes programar muy fácilmente tu driver con Arduino

es muy fácil, es una pinza que sujeta el chip
¿entonces imagino que no es necesario sacar el driver del drop-in no? pos no,, no lo había leido sorry
08 Jun 2013 21:01 por PacoA
<<

Tecnólogo LED

Mensajes: 204

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

mientras explico como se hace la programación físicamente... aquí un par de pinzas para programar: la cara y la barata:

barata:
http://rover.ebay.com/rover/1/1185-5347 ... 1439.l2649

cara, y buena:

http://rover.ebay.com/rover/1/1185-5347 ... 1439.l2649

no hace falta desoldar el chip:
Imagen
08 Jun 2013 21:08 por PacoA
<<

Tecnólogo LED

Mensajes: 204

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

joseabul escribió:
es muy fácil, es una pinza que sujeta el chip
¿entonces imagino que no es necesario sacar el driver del drop-in no? pos no,, no lo había leido sorry
el chip está en la cara oculta del driver. la cara visible es donde hace contacto el positivo de la batería.

pero solo hay que sacar el driver del pill, sin desoldar el led. Normalmente los cable son suficientemente largos para que puedas girar el driver, para ver la cara oculta del mimso y ponerle la pinza al chip. todo el proceso es bastante rápido.
08 Jun 2013 21:12 por joseabul
<<
Avatar de Usuario

Jamás ve la oscuridad

Mensajes: 1272

Registrado: 20 Oct 2012

Ubicación: Valencia

Re: Tú puedes programar muy fácilmente tu driver con Arduino

ok gracias PacoA. :respeto:
08 Jun 2013 21:51 por antiparanoico
<<

Jamás ve la oscuridad

Mensajes: 7687

Registrado: 31 Oct 2011

Ubicación: ROU

Re: Tú puedes programar muy fácilmente tu driver con Arduino

PacoA escribió:es muy fácil, es una pinza que sujeta el chio... lo que estoy probando es si las piznas baratas son fiables. No hay que sacar el chip del driver. Se programa en menos de 5 segundos.

Pero dejadme que mejor el tuto que tengo y haga un video. También me pasa que la cámara de fotos que utilizo para hacer videos se queda sin batería enseguida, con pilas nuevas. es muy raro
Me imaginé que era con esas pinzas, pero no sé el resto. En la época del "debrickeo" de los WRT54G hice un cable y lo conectaba al paralelo de la comptadora... Pero ahora no traen paralelo. :elrisas:
If anything can go wrong, it will - Matter will be damaged in direct proportion to its value
Si algo puede salir mal, lo hará - La materia se daña en proporción directa a su valor
Una batería "protegida" te dejará a oscuras en el peor lugar y en el peor momento.
08 Jun 2013 21:58 por Bailer
<<
Avatar de Usuario

Jamás ve la oscuridad

Mensajes: 1178

Registrado: 26 Ene 2012

Ubicación: Andalucía

Re: Tú puedes programar muy fácilmente tu driver con Arduino

PacoA escribió:
if (primer2 == false) {
time_now = millis(500);
if ((time_now - time_on) > time_memory)
{EEPROM.write(1, mode = 1);
primer2 = true;}
}
Algo así? La idea sería que hay que programar como 2 órdenes, no? La primera tipo condición falsa para que encienda en alto pasado un tiempo y la segunda para que cambie de modo si el tiempo es menor que el tiempo para memorizar? :mpr:
08 Jun 2013 22:25 por PacoA
<<

Tecnólogo LED

Mensajes: 204

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Bailer escribió:
PacoA escribió:
if (primer2 == false) {
time_now = millis(500);
if ((time_now - time_on) > time_memory)
{EEPROM.write(1, mode = 1);
primer2 = true;}
}
Algo así? La idea sería que hay que programar como 2 órdenes, no? La primera tipo condición falsa para que encienda en alto pasado un tiempo y la segunda para que cambie de modo si el tiempo es menor que el tiempo para memorizar? :mpr:
casi. bastante aproximado. el código sería tan facil como esto

if (primer2 == false) {
time_now = millis();
if ((time_now - time_on) > time_memory)
{EEPROM.write(1, 1);
primer2 = true;}
}

fíjate que donde guardaba mode, ahora guarda 1. Es lo único a cambiar. Así pues, después de 3 segundos (time_memory), no guarda el modo actual (mode), guarda el modo 1, 1, que en este caso es el alto.
08 Jun 2013 23:27 por PacoA
<<

Tecnólogo LED

Mensajes: 204

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

he hecho un cutre video con el móvil para que se vea como se programa.

Cuando se enciende el led rojo es cuando se está programado el driver. Se ve horrible, pero de momento no tengo cámara:

09 Jun 2013 01:33 por Bailer
<<
Avatar de Usuario

Jamás ve la oscuridad

Mensajes: 1178

Registrado: 26 Ene 2012

Ubicación: Andalucía

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Muy interesante...aunque se me hace corto xD. Estare atento a los avances.

Usas un arduino uno?
Última edición por Bailer el 09 Jun 2013 13:20, editado 1 vez en total.
09 Jun 2013 03:02 por antiparanoico
<<

Jamás ve la oscuridad

Mensajes: 7687

Registrado: 31 Oct 2011

Ubicación: ROU

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Como viene la mano... Qué les parece una chincheta?
If anything can go wrong, it will - Matter will be damaged in direct proportion to its value
Si algo puede salir mal, lo hará - La materia se daña en proporción directa a su valor
Una batería "protegida" te dejará a oscuras en el peor lugar y en el peor momento.
10 Jun 2013 13:45 por PacoA
<<

Tecnólogo LED

Mensajes: 204

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Acabo de añadir en los posts #4 y #5 como se hace un modo programable. Repito aquí esos posts:

Ahora vamos a explicar como funciona un modo programable.

En un modo modo programable, el usuario elige la cantidad de luz que quiere tener en ese modo. Si has aprendido como se usa la memoria EEPROM te será muy fácil entenderlo. Si has llegado hasta aquí sin haberte "estudiado" los ejemplos anteriores, no lo vas a entender, pero no te desanimes que es fácil si primero aprendes lo anterior.

Lo que vamos a hacer es lo siguiente. Encendemos la linterna. A los tres segundos la linterna hace un parpadeo. En ese momento, si apagamos la linterna, la próxima vez que la encendamos la podremos programar.

En este vídeo se ve como funciona:



En un momento ponemos el código completo. Pero antes, la parte principal a entender es el siguiente bucle for:
for (byte valor=1; valor <= 255; valor= valor+3){
analogWrite(1, valor);
EEPROM.write(4,valor); delay(300); }
}
Lo que tenemos es un bucle que empieza con la variable valor = 1 y termina con valor = 255, que es la cantidad máxima de luz que hace la linterna. Los incrementos en el nivel de luz son de 3 en 3 (valor = valor + 3). Por lo que tendremos 1, 4, 7, 10, ... 255.

Se enciende la linterna con el nivel de luz = valor, con la instrucción analogWrite(ledpin, valor). Y la variable valor se guarda en la posición de memoria 4 de la EEPROM. Así que se puede recuperar la variable valor la próxima vez que encendamos la linterna. :sisi3:

A continuación espera delay(300), 0.3 segundos, y sigue el bucle. Así pues, si apagamos la linterna mientras hace el bucle, tendremos guardado el nivel de luz que queramos. Así de fácil es un modo programable gracias a la memoria no volátil EEPROM y a Arduino.
10 Jun 2013 13:46 por PacoA
<<

Tecnólogo LED

Mensajes: 204

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Aquí el código completo de una linterna con un modo programable, muy comentado:

//PROGRAMA LINTERNA SOLO CON UN MODO, PERO PROGRAMABLE
#include

#define ledpin 1

byte programar; //si programar = 0 no se programa el único modo que hay.
//si programar = 1 se haría la programación del modo, es decir, el usuario elige
//la cantidad de luz que quiere.

boolean hecho = false; //solo una vez el usuario puede elegir si quiere programar la linterna.
//Esto ocurre a los tres segundos de encender la linterna. Ver en el código el delay(3000)
//Hace falta esta variable para que se haga solo una vez.

byte nivel_luz; //valor de 0 a 255 que fija la cantida de luz que tendrá la linterna. Es
//un valor programable por el usuario


void setup() {

pinMode(ledpin, OUTPUT);
nivel_luz = EEPROM.read(4); //lee nivel de cantidad de luz, dese la posición 4 (memoria número 4)

if (nivel_luz == 0) {nivel_luz = 30;} //esta linea solo sirve la primera vez que se utilice
//la linterna despues de programarla. La primera vez despues de la programación toda la memoria eeprom
//vale 0, incluida la posición 4. Por tanto, la linterna no daría luz esa primera vez, nivel = 0.
//Para evitarlo fijamos un valor de salida igual a 30 si la memoria = 0.

programar = EEPROM.read(3); //lee si hay que programar la cantidad de luz desde la memoria número 3.
//Si el valor es 0 no hay que programar. //Si el valor es 1 el usuario elige la cantidad de luz

} // fin setup()


void loop() {

if (programar == 1) {//si programar = 1 entonces empieza la programación
EEPROM.write(3, 0); //No hay que programar proxima vez se encienda. Guarda programar = 0 en posición 3

//y ahora empieza el bucle FOR tal y como hemos epxlicado antes, el bucle sigue hasta apagar linterna
for (byte valor=1; valor <= 255; valor= valor+3){
analogWrite(1, valor);
EEPROM.write(4,valor); delay(300); }
}
else {
//si hemos llegado hasta aquí es porque no había que programar la linterna.
//así que ahora se enciende con el nivel porgramado

analogWrite(ledpin, nivel_luz); //enciende la linterna con el nivel_luz leído de la eeprom, memoria 3

if (hecho == false) {// esto solo se hace una vez, cuando hecho = false
delay(3000); //espera 3 segundos
hecho = true; // ya no lo hará más

//a continuación, después de tres segundos, apaga la linterna durante dos décimas.
// es decir, hace un parpadeo.
analogWrite(ledpin, 0); delay(200); analogWrite(ledpin, nivel_luz);

EEPROM.write(3, 1);//guarda hay que programar proxima vez. Guarda 1 en la posición 4
//si ahora apagamos la linterna, quedaría grabado que hay que programarla
delay(1500);

//pero después de 1.5 segundos, si no la hemos apagado, ahora guarda el valor 0, es decir
//guarda que no hay que programarla proxima vez se encienda.
//Es decir, tienes 1.5 segundos desde el parpadeo para apagarla si quieres programarla

EEPROM.write(3, 0);//guarda no hay que programar proxima vez que enciendas

}// fin hecho == false
}//fin else
}//fin loop()

Si tienes dudas pregunta

© ForoLinternas