Página 5 de 6

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

Publicado: 02 Sep 2013 15:00
por npir
Otra que sería interesante modificar seria la new 898, el modo strobo sobra y falta un modo medio.

Alguno sabe que driver lleva esta linterna y si es posible modificarlo?

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

Publicado: 02 Sep 2013 15:38
por Bailer
npir escribió:Otra que sería interesante modificar seria la new 898, el modo strobo sobra y falta un modo medio.

Alguno sabe que driver lleva esta linterna y si es posible modificarlo?

Abrir esa linterna es un asunto delicado, he visto gente que la abierto por problemas y han sudado. Pero vamos, que se puede abrir solo digo que es dificil. Ahora de driver ni idea

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

Publicado: 03 Sep 2013 06:37
por fermintm
PacoA escribió:Vale. Pensaba que solo era que estuviera conectado mientras pulsabas.

Cuando pueda pongo un código.
Soy capaz de modificar algun que otro codigo arduino, con copia de aqui... pega alla.. Pero hacero de cero...

Gracias!!!

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

Publicado: 06 Sep 2013 14:37
por PacoA
ESTO DEBERÍ8A SERVIR COMO PROGRAMA BÁSICO DE UNA LINTERNA CON PULSADOR

//PROGRAMA LINTERNA CON PULSADOR

#define ledpin 1
#define pulsador 2
//en pulsador ponemos la estrella del 105c
//que se conectará al pulsador. Puede ser 2, 3 o 4
//Ojo la estrella debe tener una resistencia de 10k conectada
//a masa


void setup() {


pinMode(ledpin, OUTPUT); //ledpin, que es 1, es salida digital
pinMode(pulsador, INPUT); //pulsador es entrada digital
}


void loop() {

if (digitalRead(pulsador) == HIGH) {analogWrite(ledpin, 255);}
else {analogWrite(ledpin, 0);};
}

Imagen

Importante. Hay que conectar la salida del pulsador a una de las tres estrellas del 105c. Hay que poner el número en su #define correspondiente. Y en esa estrella hay que poner una resistencia de 10K conectada a masa. De 1/4 de watio sobra.

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

Publicado: 06 Sep 2013 21:50
por PacoA
el programa de antes es demasiado sencillo. Solo enciende la linterna cuando mantienes presionado el pulsador.

Para que cambie de estado cada vez que lo pulsas algo como esto:
//PROGRAMA LINTERNA CON PULSADOR

#define ledpin 1
#define pulsador 2
//en pulsador ponemos la estrella del 105c
//que se conectará al pulsador. Puede ser 2, 3 o 4
//Ojo la estrella debe tener una resistencia de 10k conectada
//a masa
boolean estado = false; //indica si la linterna esta encendida
//true cuando encendida. false cuando apagada

void setup() {


pinMode(ledpin, OUTPUT); //ledpin, que es 1, es salida digital
pinMode(pulsador, INPUT); //pulsador es entrada digital
}


void loop() {

if (digitalRead(pulsador) == HIGH) {
     if (estado == false) {analogWrite(ledpin, 255); estado = true;}
else {analogWrite(ledpin, 0); estado = false;};
}
delay(500);
}

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

Publicado: 07 Sep 2013 12:08
por Bailer
Con esto último que sería, ¿como la típica linterna de un boton para encender y otro para los modos?

Saludos!

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

Publicado: 07 Sep 2013 20:33
por PacoA
Bailer escribió:Con esto último que sería, ¿como la típica linterna de un boton para encender y otro para los modos?

Saludos!
Eso es para una linterna sin modos. Cuando se presiona un pulsador adicional al interruptor principal la linterna se apaga o se enciende.

Se sobreentende que la linterna tiene su propio interruptor para desconectar la bateria.

Lo que se puede hacer es:

programar un modo que sirva para que el pulsador haga eso... es decir encender o pagar cada vez que se presione.

Simplemente con el interruptor principal cambias los modos. Y cuando quieras utilizar el pulsador, lo pones en ese modo, modo pulsador. El c´odigo paar ese modo pulsador ser´ia el de arriba.

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

Publicado: 08 Sep 2013 01:59
por Bailer
Que curioso se parece a las de doble filamento, como las luces de los coches.

Estaría bien para hacer las luces de freno de una bici como en los videos de youtube jeje.

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

Publicado: 08 Sep 2013 15:21
por maito
Bailer escribió:Que curioso se parece a las de doble filamento, como las luces de los coches.

Estaría bien para hacer las luces de freno de una bici como en los videos de youtube jeje.

Me interesa.

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

Publicado: 09 Sep 2013 13:30
por Bailer
maito escribió:Me interesa.
Es solo una idea, en DX venden unas luces así pero llevan 3 de 5mm para vada cosa y no parecen muy luminosas.

Lo suyo sería hacer algo un poco más potente aprovechando la info de Paco para usar un par de drivers, uno para los intermitentes y otro simulando un led de doble filamento para el freno y posición.

Cotilleando parece que lo mejor sería un microcontrolador para todo (tutorial youtube) pero de momento la parte electrónica está bloqueada.

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

Publicado: 09 Sep 2013 13:56
por PacoA
Bailer escribió:
maito escribió:Me interesa.
Es solo una idea, en DX venden unas luces así pero llevan 3 de 5mm para vada cosa y no parecen muy luminosas.

Lo suyo sería hacer algo un poco más potente aprovechando la info de Paco para usar un par de drivers, uno para los intermitentes y otro simulando un led de doble filamento para el freno y posición.

Cotilleando parece que lo mejor sería un microcontrolador para todo (tutorial youtube) pero de momento la parte electrónica está bloqueada.
proyecto curioso...

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

Publicado: 09 Sep 2013 17:11
por manredu
He leido el tema por encima y Pacoa y yo ya estuvimos comentando algo en mi post... basicamente estoy demasiado liado de trabajo y creo que soy demasiado viejo para aprender otro lenguaje de programación (bastante tengo que estoy con el CCS de microchip) y que conste que soy defensor de microchip a muerte, pero bueno le daremos una oportunidad al Atmel.

AL lio, hace poco me compre un frontal para la bici, y como no me puedo estar quieto y solo traia modos de encender luz pues lo modifique para que me diera tantos por ciento.

Foto del paciente:

Imagen


Lo primero que me sorprendio del driver es que siempre esta energizado y entonces se cambia de modo / apaga con un pulsador, con el led apagado aunque el microprocesador estuviera energizado el consumo era de microamperios, y me puse a pensar, pero leches que micro es este ?????

EN la linea de los chinos los valores estan borrados, pero por el patillaje (lleva la alimentación en la pata 1 y 8 ) se me antojo que podia ser microchip, para mi decepción no lo es, y creo que atmel tampoco pues estos llevan la alimentación en la 4 y la 8.

Foto del elemento:

Imagen

Al final hice una placa nueva con un pic y 2 mosfet de los serios, pues lo que lleva esto es una patata para alimentar a 3 XML, no me calente mucho mas la cabeza lo programe a salto de mata con 4 modos+apagado y a subir con la bicie parriba.... bueno eso parecia de dia...

Pero al lio que estoy metiendo mucho offtopic,

En la bici y dando pedales se me ocurrio como hacer las memorias con tiempo de apagado, nos olvidamos de condensadores ni historias, lo unico es que como no conozco arduino pues no sere capaz de hacerlo para este driver, pero si saco tiempo todo se andara.

LA solución es, el microprocesador siempre alimentado, y encenderlo y apagarlo/memorias con un pulsador, para evitar que consuma mucha energia, tenemos que meterlo en sleep con lo cual el el pulsador tendra que ir conectado a una interrupción para que salga de sleep.

Cuando el micro esta en sleep consume microamperios, por lo que en principio podria pasar meses sin que a las baterias les pasara nada.

LA secuencia sería:

1 se detecta pulsación
2 se apaga el led
3 se espera el tiempo de cambio de modo entonces:
3.1 si se vuelve a pulsar antes del fin del tiempo se cambia de modo
3.2 si no se pulsa tras acabar el tiempo se graba el modo y se pasa a sleep.

4 El micro se queda en sleep hasta la espera de interrupción.

Esto hay que traducirlo a arduino (si es que se puede que no se) y con eso se conseguiria.

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

Publicado: 10 Sep 2013 07:53
por fermintm
Gracias por el codigo. Ahora toca esperar la llegada de las pinzas para programar el chip. ;)

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

Publicado: 10 Sep 2013 14:11
por PacoA
En Arduino se puede poner el micro en sleep... aunque yo nunca lo he hecho. Pero en arduino.cc hay ejemplos. En ese caso el consumo en sleep es ridículo. Pero incluso sin entrar en sleep, dada la gran capacidad de las baterías, y el bajo consumo de esos chips, no creo que sea un problema.

Pero si ya le ponemos tantas cosas al código hay que pasarse Attiny85, que tiene 8K.

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

Publicado: 19 Sep 2013 19:52
por Feguar
Llevo un tiempo sin entrar pero al ver este post me he animado a toquetear las linternas que tenía apartadas desde hacía un tiempo. Voy a aprovechar que tengo un par de Attiny85 para desoldarle el Attiny13 al 105C y ponerle uno de estos, a ver si consigo también modificar una cosilla para ahorrar algunos bytes.

¡Muchas gracias por el post PacoA!

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

Publicado: 20 Sep 2013 13:56
por PacoA
Feguar escribió:Llevo un tiempo sin entrar pero al ver este post me he animado a toquetear las linternas que tenía apartadas desde hacía un tiempo. Voy a aprovechar que tengo un par de Attiny85 para desoldarle el Attiny13 al 105C y ponerle uno de estos, a ver si consigo también modificar una cosilla para ahorrar algunos bytes.

¡Muchas gracias por el post PacoA!
cambiar el chip, verás que no es fácil.

El Attiny85 es ligeramente más grande. No es imposible, pero no es fácil.

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

Publicado: 21 Sep 2013 22:38
por Feguar
El problema no fue cambiarlo, tarde poco en desoldar el antiguo y despegarlo (tenía un poco de pegamento), el problema lo tengo en que no me lo reconoce el arduino. Ya las otras veces que había programado el 85 habia tenido estos problemas, así que seguiré trasteando hasta que lo consiga.

EDITO:
Ya conseguí programar el Attiny85, creo que el problema era que tenía soldada la estrella, la desoldé y pude cargarle el programa sin problemas. Para el 85 puedes ponerle lo que quieras al sketch con toda la memoria que tiene de "sobra", seguiré atento al hilo.
EDITO2:
En el código comentado del post 3, el de los modos con memoria, te falta el después del include. En el sketch sin comentarios sí está bien.

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

Publicado: 23 Sep 2013 18:07
por PacoA
No puedo poner EEPROM.h

Ya he tenido varias problemas similares. Cuando importo el código desde el arduino, con la opción para foro, con colores, para que quede bonito, a veces se genera un código html que hace cosas raras. En este caso, aunque ponga EEPROM.h> no aparece después en el foro.

Yo tengo desarrollado un driver que se puede programar mediante bluetooth, desde el móvil o desde el pc, y que cabe en una linterna pequeña tipo C8, incluso más pequeña.... solo me faltan cuatro cosas... pero hace meses que lo tengo abandonado.

Pero ya funciona seguro, lo he probado fuera de la linterna, el alcance es muy bueno... y puedes programar todo...

a ver si me pongo las pilas... joder...

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

Publicado: 25 Sep 2013 05:04
por fermintm
PacoA escribió:No puedo poner EEPROM.h

Ya he tenido varias problemas similares. Cuando importo el código desde el arduino, con la opción para foro, con colores, para que quede bonito, a veces se genera un código html que hace cosas raras. En este caso, aunque ponga EEPROM.h> no aparece después en el foro.

Yo tengo desarrollado un driver que se puede programar mediante bluetooth, desde el móvil o desde el pc, y que cabe en una linterna pequeña tipo C8, incluso más pequeña.... solo me faltan cuatro cosas... pero hace meses que lo tengo abandonado.

Pero ya funciona seguro, lo he probado fuera de la linterna, el alcance es muy bueno... y puedes programar todo...

a ver si me pongo las pilas... joder...
Muy interesante caballero

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

Publicado: 30 Sep 2013 23:44
por Feguar
He estado buscando y he encontrado una función para algunos micros de Atmel (el código que pongo es solo para los Attiny25/45/85) que usando su voltaje de referencia (1.1V±10%) se puede saber a que voltaje está siendo alimentado. Con esta función se podría hacer que el driver cortara la alimentación cuando la batería bajara de cierto voltaje y así también se pueden usar las baterías sin protección.

Yo lo he estado probando con un Attiny85, una fuente regulable y dos led, uno se enciendía cuando la alimentación estaba por encima de 3.6V y el otro parpadeaba si el voltaje era inferior y funcionaba bien. Pongo la función con los comentarios del creador por si a alguien le interesa (referencia).
long readVcc()
{
ADMUX = _BV(MUX3) | _BV(MUX2);

delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring

uint8_t low = ADCL; // must read ADCL first - it then locks ADCH
uint8_t high = ADCH; // unlocks both

long result = (high3600) //Por encima de 3.6V, enciende el led2
{
digitalWrite(led2, HIGH);
}
else //Por debajo de 3.6V, se apaga led1 y parpadea led1
{
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
delay(1000);
digitalWrite(led1, LOW);
delay(1000);
}
}

long readVcc()
{
ADMUX = _BV(MUX3) | _BV(MUX2);

delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring

uint8_t low = ADCL; // must read ADCL first - it then locks ADCH
uint8_t high = ADCH; // unlocks both

long result = (high<<8) | low;

result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
return result; // Vcc in millivolts
}