Paso 12: Programa el ATtiny
1 Descargar este archivo: https://github.com/damellis/attiny/zipball/Arduino1
2 descomprimir y poner el "attiny" carpeta en la carpeta de "hardware", donde tha Arduino está instalado en su PC. La ruta de acceso tiene este aspecto: documentos > Arduino > hardware > attiny > (otros archivos descargados... etc.)
3 iniciar la aplicación de Arduino y abre el ArduinoISP del archivo > menú de ejemplos
4 cargar el sketch en Arduino Uno.
5 cambie la configuración siguiente:
6 Compruebe la ATtiny85 (8 Mhz) casilla de verificación en las herramientas > menú tablero.
7 Compruebe el: "Arduino como ISP" en las herramientas > menú de programador.
Conexiones de pines:
ATtiny:: Arduino Uno
1 :: 10
5 :: 11
6 :: 12
7 :: 13
4 :: GND
8 :: 5V
Descargar el archivo adjunto y subir mi código a su ATtiny85!
Características de código:
Si desea cambiar el valor de la entrada del disparador, luego cambiar el "800" tengo algo entre 0 a 1023 (0 es 0.00V, como 5.00V 1023).
En caso de que usted quiere cambiar el período de iluminación, cambie mi "2000" a todo lo que quieras. 2000 en mi caso corresponde a 15 segundos.
Modo de reposo
Lo ATtiny está programado para minimizar el consumo de energía. No sólo se enciende sólo si el multímetro está encendido, pero cuando funciona, entra en modo sleep mientras espera la señal de entrada. Esto es permitido por la funcionalidad de watchog. Los ATtiny "duerme" para 128 milisegundos y "despierta" sólo para comprobar el valor de entrada. Si no es alta va a dormir otra vez, de lo contrario se activa la salida durante 15 segundos y después de eso tirns apagado y despues anda a dormir. Esto ahorra mucha energía ya que cuando el micricontroller está en modo de reposo, consume sólo 0,5 microamperios. Esto es 200 veces menos comparado con el habitual.
Código del programa
_________________________________________________________________________________________
#include < avr/sleep.h >
#include < avr/wdt.h >
#ifndef cbi
#define cbi (sfr, bits) (_SFR_BYTE(sfr) & = ~_BV(bit))
#endif
#ifndef OSE
#define OSE (sfr, bits) (_SFR_BYTE(sfr) | = _BV(bit))
#endif
f_wdt boolean volátiles = 1;
int button_in = 3; pasador duro 2 ATtiny85
iluminación int = 4; duro pin 3 en ATtiny85
Configurar Instrictions
void setup() {}
pinMode (button_in, entrada);
pinMode (iluminación, salida);
setup_watchdog(3); Tiempo para dormir: sueño de 128ms aproximadamente
0 = 16ms, 1 = 32ms, 2 = 64ms, 3 = 128ms, 4 = 250ms, 5 = 500ms 6 = 1 sec, 7 = 2 seg, 8 = 4 seg, 9 = 8 seg.
}
Bucle principal del programa
void loop() {}
Si (f_wdt == 1) {/ / espere tiempo vigilante está establecido cuando se produce una temporización
f_wdt = 0; restablecer la bandera
//
if(analogRead(button_in) > 800) {//Reads el valor de la entrada y lo compara con el valor de disparo: 0 a 1023
digitalWrite (iluminación, alta); Indicadores luminosos de
Delay(2000); Retraso de la iluminación
digitalWrite (iluminación, baja); LED apagado
}
Ahora ponga el sistema a dormir
system_sleep();
}
}
del sistema en el estado de sueño
sistema se despierta cuando está agotado wtchdog
void system_sleep() {}
CBI(ADCSRA,Aden); interruptor análogo a Digitalconverter
set_sleep_mode(SLEEP_MODE_PWR_DOWN); modo de reposo se encuentra aquí
sleep_enable();
sleep_mode(); Sistema duerme aquí
sleep_disable(); Sistema continúa ejecución aquí cuando agotado el tiempo de vigilancia
SBI(ADCSRA,Aden); interruptor analógico on Digitalconverter
}
0 = 16ms, 1 = 32ms, 2 = 64ms, 3 = 128ms, 4 = 250ms, 5 = 500ms
6 = 1 sec, 7 = 2 seg, 8 = 4 seg, 9 = 8 seg.
void setup_watchdog (int ii) {}
bb de bytes;
int ww;
Si ii (ii > 9) = 9;
BB = ii y 7;
Si bb| (ii > 7) = (1 << 5);
BB| = (1 << WDCE);
WW = bb;
MCUSR & = ~ (1 << WDRF);
Iniciar secuencia de tiempo
WDTCR | = (1 << WDCE) | (1 << WDE);
definir el nuevo valor de tiempo de espera vigilante
WDTCR = bb;
WDTCR | = _BV(WDIE);
}
Interrumpir el servicio del perro guardián / se ejecuta cuando agotado el tiempo de vigilancia
{ISR(WDT_vect)}
f_wdt = 1; establecer el indicador global
}