#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#define LED_PIN 0 // Pin connected to the load
const unsigned long tenSeconds = 10000; // 10 seconds in milliseconds
const unsigned long threeSeconds = 3000; // 3 seconds in milliseconds
volatile unsigned long timer = 0; // Variable to store elapsed milliseconds
void setup() {
pinMode(LED_PIN, OUTPUT);
// No need for specific clock setup for this code
}
void loop() {
// Turn on LED (pin 0 HIGH)
digitalWrite(LED_PIN, HIGH);
// Delay for 3 seconds
delay(threeSeconds);
// Turn off LED (pin 0 LOW)
digitalWrite(LED_PIN, LOW);
// Reset timer
timer = 0;
// Enter sleep mode with power down (all peripherals disabled)
while (timer < tenSeconds) {
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // Set sleep mode to power down
sleep_enable(); // Enable sleep mode
sei(); // Enable interrupts (important for waking up)
sleep_cpu(); // Enter sleep mode
sleep_disable(); // Disable sleep mode (wakes up from interrupt)
}
}
// Interrupt Service Routine (ISR) - This function gets called whenever Timer 0 overflows
ISR(TIM0_OVF_vect) {
timer += 255; // Increment timer by milliseconds based on timer overflow
}
Output returns (wiring.c.o (symbol from plugin): In function __vector_5': (.text+0x0): multiple definition of __vector_5') How can I solve this problem?