Re: Tú puedes programar muy fácilmente tu driver con Arduino
Alguno sabe que driver lleva esta linterna y si es posible modificarlo?
Modificaciones, averías, reparaciones, piezas, repuestos...
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?
Soy capaz de modificar algun que otro codigo arduino, con copia de aqui... pega alla.. Pero hacero de cero...PacoA escribió:Vale. Pensaba que solo era que estuviera conectado mientras pulsabas.
Cuando pueda pongo un código.
//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);
}
Eso es para una linterna sin modos. Cuando se presiona un pulsador adicional al interruptor principal la linterna se apaga o se enciende.Bailer escribió:Con esto último que sería, ¿como la típica linterna de un boton para encender y otro para los modos?
Saludos!
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.
Es solo una idea, en DX venden unas luces así pero llevan 3 de 5mm para vada cosa y no parecen muy luminosas.maito escribió:Me interesa.
proyecto curioso...Bailer escribió:Es solo una idea, en DX venden unas luces así pero llevan 3 de 5mm para vada cosa y no parecen muy luminosas.maito escribió:Me interesa.
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.
cambiar el chip, verás que no es fácil.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!
Muy interesante caballeroPacoA 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...
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
}
© ForoLinternas