// // hello.BIKE.44.c // // BIKE_ACCELEROMETER // // set lfuse to 0x7E for 20 MHz xtal // // Nicole Wang // 12.16.12 // Neil Gershenfeld // 11/14/10 // // (c) Massachusetts Institute of Technology 2010 // Permission granted for experimental and personal use; // license for commercial sale available from MIT. // // Awesome resource: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=56429&start=0 #include #include #include #include #include // #include "lcd.h" // >> usr/local/CrossPack-AVR-20120217/avr/include #include #define F_CPU 20000000 #define output(directions,pin) (directions |= pin) // set port direction for output #define set(port,pin) (port |= pin) // set port pin #define clear(port,pin) (port &= (~pin)) // clear port pin #define pin_test(pins,pin) (pins & pin) // test for port pin #define bit_test(byte,bit) (byte & (1 << bit)) // test for bit set #define bit_delay_time 100 // bit delay for 9600 with overhead #define bit_delay() _delay_us(bit_delay_time) // RS232 bit delay #define half_bit_delay() _delay_us(bit_delay_time/2) // RS232 half bit delay #define char_delay() _delay_ms(10) // char delay #define LCD_port PORTA #define LCD_direction DDRA #define DB7 (1 << PA0) #define DB6 (1 << PA1) #define DB5 (1 << PA2) #define DB4 (1 << PA3) #define E (1 << PA4) #define RS (1 << PA5) #define LED_port PORTB #define LED_direction DDRB #define LED_pin_out (1< 128) { // set(LED_port, LED_pin_out); // } else { // clear(LED_port, LED_pin_out); // } count++; if (val > 511 || val < 506) { if (sw == 0) { timer = count; track[count_track] = timer; count_track++; if (count_track >=5) { count_track = 0; sw = 1; } count = 0; } else { sw = 0; } } // // go to zero position // lcd_putcmd(0); lcd_putcmd(DB5); // // print first line from flash // static char line1[] PROGMEM = "Current Speed: "; // "Hello to"; lcd_putstring((PGM_P) line1); // // move to second line // lcd_putcmd(DB7+DB6); lcd_putcmd(0); // // print second line from flash // // sprintf(buffer, "%d", val); // lcd_putstring2(buffer); // 20MHz / 1024 = 19531.25Hz >> 0.0000512 seconds >> 0.0512 ms // At 35 mph, the bike travels at ~616 inches/second or ~7.25 // revolutions per second. int sum = 0; int avgCount = 0; int i; for (i = 0; i