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


Modificaciones, averías, reparaciones, piezas, repuestos...
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.d4n1 escribió:if (mode == 0) {mode = 0;}
Eso???
De esa manera encenderá siempre como si tuviera la EEPROM vacía ¿no?
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.antiparanoico escribió:Justo eso... Iba a preguntar: cómo se enchufa para programar (para meterle el código)?PacoA escribió:...
ya os contaré la parte física, como se programa. lo primero es que veais lo simple que es el código
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.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?
¿entonces imagino que no es necesario sacar el driver del drop-in no? pos no,, no lo había leido sorryes muy fácil, es una pinza que sujeta el chip
el chip está en la cara oculta del driver. la cara visible es donde hace contacto el positivo de la batería.joseabul escribió:¿entonces imagino que no es necesario sacar el driver del drop-in no? pos no,, no lo había leido sorryes muy fácil, es una pinza que sujeta el chip
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.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
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?PacoA escribió:
if (primer2 == false) {
time_now = millis(500);
if ((time_now - time_on) > time_memory)
{EEPROM.write(1, mode = 1);
primer2 = true;}
}
casi. bastante aproximado. el código sería tan facil como estoBailer escribió: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?PacoA escribió:
if (primer2 == false) {
time_now = millis(500);
if ((time_now - time_on) > time_memory)
{EEPROM.write(1, mode = 1);
primer2 = true;}
}
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.for (byte valor=1; valor <= 255; valor= valor+3){
analogWrite(1, valor);
EEPROM.write(4,valor); delay(300); }
}
Si tienes dudas pregunta
//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()
© ForoLinternas