more coments and fixed a bug in crazymoves-mode

This commit is contained in:
bigalex 2012-10-07 16:30:28 +02:00
parent 84bf510e36
commit b2a807e5f2

View File

@ -20,9 +20,10 @@
#define MODE4 4 #define MODE4 4
#define NUM_MODES 5 #define NUM_MODES 5
uint8_t OpMode = MODE0; //Operation mode uint8_t OpMode = MODE2; //Operation mode
bool ModeChanged = true; bool ModeChanged = true;
// check if mode should be changed (one of the buttons long pressed)
void modeswitch_poll(void) { void modeswitch_poll(void) {
if (btn_state(BTNST_LUP, BTN_LEFT)) { if (btn_state(BTNST_LUP, BTN_LEFT)) {
//opmode - //opmode -
@ -40,27 +41,28 @@ void modeswitch_poll(void) {
} }
; ;
// MODE0 sound detection
void do_mode0(void) { void do_mode0(void) {
static timer_t mytimer; static timer_t mytimer;
static uint16_t maxval; static uint16_t maxval; //maximum of ADC values read during the las timer interval
static uint16_t lastmaxval; static uint16_t lastmaxval; //maximum of values during last timer interval
uint16_t curval; uint16_t curval; //current value on D5 (one pin of the piezo,the other is on GND)
static bool signaling; static bool signaling; //are we currently signaling (beeping, blinking etc...)
static bool sound_on; static bool sound_on; //should sound be on when signaling
static bool motor_on; static bool motor_on; //should motor be on when signaling
if (ModeChanged) { if (ModeChanged) { //init after mode change
timer_set(&mytimer, 10);
maxval = 0; maxval = 0;
lastmaxval = 000;
ModeChanged = false; ModeChanged = false;
signaling = false; signaling = false;
sound_on = true; sound_on = true;
motor_on = true; motor_on = true;
init_mic(); init_mic();
maxval = 0; timer_set(&mytimer, 10);
}; };
// single measurement // single ADC measurement
curval = ADCW; // read result curval = ADCW; // read result
maxval = (curval > maxval) ? curval : maxval; maxval = (curval > maxval) ? curval : maxval;
@ -134,8 +136,8 @@ void do_mode2(void) {
static timer_t mytimer; static timer_t mytimer;
uint8_t max = 50; uint8_t max = 50;
uint8_t min = 5; uint8_t min = 5;
uint16_t maxfreq = 6000; uint16_t maxfreq = 5000;
uint16_t minfreq = 2000; uint16_t minfreq = 1000;
if (ModeChanged) { if (ModeChanged) {
ModeChanged = false; ModeChanged = false;