diff options
-rw-r--r-- | avr.cpp | 20 | ||||
-rw-r--r-- | avr.h | 3 | ||||
-rw-r--r-- | hardware.cpp | 2 | ||||
-rw-r--r-- | main.cpp | 8 |
4 files changed, 29 insertions, 4 deletions
@@ -19,13 +19,21 @@ int getButton() { } void waitForButton(int i) { - while(getButton() != CLAMP(0, i, 5)); + if(i <= 0) while(getButton() == 0); + else while(getButton() != CLAMP(1, i, 5)); + while(getButton() != 0); } void beep(unsigned long freq) { const int prescalers[7] = {1, 8, 32, 64, 128, 256, 1024}; + if(freq == 0) { + beepOff(); + return; + } + + for(int i = 0; i < 7; i++) { if(F_CPU/freq/2/prescalers[i] <= 256) { TCCR2 = (TCCR2&~0x07)|(i+1); @@ -39,5 +47,13 @@ void beep(unsigned long freq) { } void beepOff() { - TCCR2 &= ~0x07; + TCCR2 &= ~0x07; +} + +void ledOn() { + PORTA &= ~0x20; +} + +void ledOff() { + PORTA |= 0x20; } @@ -10,4 +10,7 @@ void waitForButton(int i); void beep(unsigned long freq); void beepOff(); +void ledOn(); +void ledOff(); + #endif diff --git a/hardware.cpp b/hardware.cpp index e652dda..8e25854 100644 --- a/hardware.cpp +++ b/hardware.cpp @@ -8,7 +8,7 @@ void initHardware() { - DDRA = 0x00; + DDRA = 0x20; PORTA = 0xFF; DDRB = 0xFF; @@ -48,10 +48,16 @@ int main() { Srf10 *srf10Last = srf10Left; - do { + do { lineSensorArray->update(); } while(!lineSensorArray->calibrate()); + ledOn(); + waitForButton(0); + ledOff(); + + sleep(4000); + navigation->setSpeed(DEFAULT_SPEED); while(true) { |