From ff653faa602668f52f1cd760ef712fd2df283bab Mon Sep 17 00:00:00 2001 From: Luis Rodil-Fernandez Date: Fri, 23 Sep 2022 18:48:12 +0200 Subject: [PATCH] first commit --- README.md | 8 +++ chirpbot.ino | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 180 insertions(+) create mode 100644 README.md create mode 100644 chirpbot.ino diff --git a/README.md b/README.md new file mode 100644 index 0000000..f250ca8 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Chirpbot + +It chirps, it's electronic, it's the chirpbot. + +Feed with sun. +Sleeps at sunset. + + diff --git a/chirpbot.ino b/chirpbot.ino new file mode 100644 index 0000000..03778ee --- /dev/null +++ b/chirpbot.ino @@ -0,0 +1,172 @@ +// https://www.youtube.com/watch?v=tVwQ8cb8HbQ +// ATtyny85 chirping and sleep + +int analogPin = 3; + +///////////// +#include +void setup() { + pinMode(PB4, OUTPUT); //BEEP + pinMode(PB3, INPUT); // ANALOG INPUT FOR RANDOM +// randomSeed(analogRead(0)); + randomSeed(analogRead(PB3)); + setup_watchdog(7); //8 seconds +} + +///////////// +void loop() { + sleep(); +} + +///////////// +void sleep() { + + digitalWrite (PB4,LOW); + ADCSRA &= ~_BV(ADEN); // ADC off + set_sleep_mode(SLEEP_MODE_PWR_DOWN); + sleep_enable(); // Sets the Sleep Enable bit in the MCUCR Register (SE BIT) + sei(); // Enable interrupts + sleep_cpu(); // sleep + +// cli(); // Disable interrupts +// sleep_disable(); // Clear SE bit +// sei(); // Enable interrupts + + +} + +// Watchdog Interrupt Service / is executed when watchdog timed out +ISR(WDT_vect) { + cli(); // Disable interrupts + sleep_disable(); // Clear SE bit + sei(); + + // BEGIN: this is where sound is generated + tweet(2, 1); + //chirp(); + // END: this is where sound is generated + +// setup_watchdog(random(5)+4); // add by tez +// randomSeed(analogRead(analogPin)); + setup_watchdog(random(5)+random(3) + 2); // add by tez +} + +// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms +// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec +void setup_watchdog(int ii) { + byte bb; + int ww; + if (ii > 9 ) ii=9; + bb=ii & 7; + if (ii > 7) bb|= (1<<5); + bb|= (1<300) delayMicroseconds(i); + //else delayMicroseconds ((400-i)); + digitalWrite (PB4,LOW); + delayMicroseconds(i); + //if(i>300) delayMicroseconds(i); + //else delayMicroseconds ((400-i)); + //delayMicroseconds (i); + } + } + delay(chirp_delay); + chirp_delay=chirp_delay*0.75; + } +} + +///////////// +void lowChirp(int intensity, int chirpsNumber){ + int i; + int x; + + int reptimes = random(1, 2); //random(100, 300); + + for(int veces=0; veces<=chirpsNumber; veces++){ + for (i=0; i80; i--) + for (i=i_hi; i>i_lo; i--) + { + int xrep = random(1,9); + for ( x=0; x0; i--) + { + for (int x=0; x