ATTINY13A watchdog trigger module
*
https://hamboelektronik.com/how-to-program-attiny13-using-arduino/*
https://www.instructables.com/Updated-Guide-on-How-to-Program-an-Attiny13-or-13a/*
https://github.com/MCUdude/MicroCore


*
/*
ATTINY13A arduino pin
pin1 = RESET / A0 HIGH Voltage programming
pin2 = 3 / A3
pin3 = 4 / A2
pin4 = GND
pin8 = VCC
pin7 = 2 /A1/SCK
pin6 = 1 /MISO
pin5 = 0 /MOSI
*/
#define Q_OUT 4
#define A_SEL 0
#define B_SEL 1
#define Q_SEL 2
#define LED_FLASH 3
//-----------------------------------
#define CONFIG_1A 2
#if CONFIG_1A == 1
#define TIME_T0 5 // 5 วินาที
#define TIME_T1 10 // 10 วินาที
#define TIME_T2 20 // 20 วินาที
#define TIME_T3 60 // 60 วินาที
#define HIGH_DELAY 2000
#define LOW_DELAY 2000
#endif
#if CONFIG_1A == 2
#define TIME_T0 30 // 30 วินาที
#define TIME_T1 60 // 60 วินาที
#define TIME_T2 300 // 5 นาที
#define TIME_T3 600 // 10 นาที
#define HIGH_DELAY 2000
#define LOW_DELAY 2000
#endif
//-----------------------------------
uint8_t timer_setting = 0;
uint8_t output_setting = 0;
uint16_t delay_trig;
unsigned int loop_i;
void setup() {
pinMode(Q_OUT, OUTPUT);
pinMode(LED_FLASH, OUTPUT);
pinMode(A_SEL, INPUT_PULLUP);
pinMode(B_SEL, INPUT_PULLUP);
pinMode(Q_SEL, INPUT_PULLUP);
// state RESET / LED onoff 50mS
for(loop_i = 0; loop_i< 10; loop_i++) {
digitalWrite(LED_FLASH, LOW); // turn the LED on
delay(50); // wait for 50mS
digitalWrite(LED_FLASH, HIGH); // turn the LED off
delay(50); // wait for 50mS
}
if(digitalRead(A_SEL) == 1) { timer_setting |= 0x01; }
if(digitalRead(B_SEL) == 1) { timer_setting |= 0x02; }
switch(timer_setting) {
case 0: delay_trig = TIME_T0; break;
case 1: delay_trig = TIME_T1; break;
case 2: delay_trig = TIME_T2; break;
case 3: delay_trig = TIME_T3; break;
}
if(digitalRead(Q_SEL) == 1) {
digitalWrite(Q_OUT, LOW);
output_setting = 1;
} else {
digitalWrite(Q_OUT, HIGH);
}
}
void loop() {
for(loop_i = 0; loop_i< delay_trig ; loop_i++) {
digitalWrite(LED_FLASH, LOW); // turn the LED on
delay(500); // wait for 0.5 second
digitalWrite(LED_FLASH, HIGH); // turn the LED off
delay(500); // wait for 0.5 second
}
if( output_setting == 1) {
digitalWrite(Q_OUT, HIGH);
digitalWrite(LED_FLASH, LOW);
// state LED ON 2000 mS
// pulse = 220mS /cap 10uF
delay(HIGH_DELAY);
digitalWrite(Q_OUT, LOW);
delay(100);
}else {
digitalWrite(Q_OUT, LOW);
digitalWrite(LED_FLASH, HIGH);
// state LED OFF 2000 mS
// pulse = 220mS /cap 10uF
delay(LOW_DELAY);
digitalWrite(Q_OUT, HIGH);
delay(100);
}
}
*