esbrittl
Geocacher
Das Teil blinkt eben (fürs menschliche Auge) nur siebenmal (davon einmal doppelt so lange, nämlich ca. 400 ms), weil das eine Ausschalten nur Mikrosekunden dauert. Es fehlt ein delay(200).
Und ja, eine Schleife verkürzt den Code hier erheblich:
C++:for (int i=0; i<8; i++){ digitalWrite (PIN_LED, HIGH); delay (200); digitalWrite (PIN_LED, LOW); delay (200); }
C++:
#include <avr/sleep.h>
#include <avr/power.h>
#define PIN_LED PCINT4
#define PIN_BUTTON PCINT3
int zaehler=0;
ISR (PCINT0_vect) {}
void setup()
{
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_BUTTON, INPUT_PULLUP);
// pin change interrupt
PCMSK |= bit (PIN_BUTTON);
GIFR |= bit (PCIF); // clear any outstanding interrupts
GIMSK |= bit (PCIE); // enable pin change interrupts
}
void loop()
{for (int zaehler = 1; zaehler < 7; zaehler = zaehler + 1)
{
digitalWrite (PIN_LED, HIGH);
delay (200);
digitalWrite (PIN_LED, LOW);
delay (200);
goToSleep();
}
void goToSleep()
{ set_sleep_mode(SLEEP_MODE_PWR_DOWN);
ADCSRA = 0; // turn off ADC
power_all_disable(); // power off ADC, Timer 0 and 1, serial interface
sleep_enable();
sleep_cpu();
sleep_disable();
power_all_enable(); // power everything back on
}
exit status 1
'goToSleep' was not declared in this scope
Siehst Du, da hapert es mit meinem Verständnis.
Zuletzt bearbeitet von einem Moderator: