mbed Geiger counter

Dependencies:   mbed NokiaLCD

Committer:
kanpapa
Date:
Sun Jun 05 06:08:07 2011 +0000
Revision:
0:72fdbcde2fa0
Child:
1:a03717f88919
beta version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kanpapa 0:72fdbcde2fa0 1 #include "mbed.h"
kanpapa 0:72fdbcde2fa0 2
kanpapa 0:72fdbcde2fa0 3 // LCD
kanpapa 0:72fdbcde2fa0 4 //#include "TextLCD.h"
kanpapa 0:72fdbcde2fa0 5 //TextLCD lcd( p24, p26, p27, p28, p29, p30 ); // rs, e, d0-d3
kanpapa 0:72fdbcde2fa0 6
kanpapa 0:72fdbcde2fa0 7 // OLED
kanpapa 0:72fdbcde2fa0 8 #include "MARMEX_OB_oled.h"
kanpapa 0:72fdbcde2fa0 9 MARMEX_OB_oled oled1( p5, p7, p27, p24, p26 ); // mosi, sclk, cs, rst, power_control
kanpapa 0:72fdbcde2fa0 10
kanpapa 0:72fdbcde2fa0 11 InterruptIn button(p29);
kanpapa 0:72fdbcde2fa0 12 DigitalOut beep(p30);
kanpapa 0:72fdbcde2fa0 13
kanpapa 0:72fdbcde2fa0 14 DigitalOut led(LED1);
kanpapa 0:72fdbcde2fa0 15 DigitalOut min(LED3);
kanpapa 0:72fdbcde2fa0 16 DigitalOut flash(LED4);
kanpapa 0:72fdbcde2fa0 17
kanpapa 0:72fdbcde2fa0 18 int total_cnt = 0;
kanpapa 0:72fdbcde2fa0 19 int cpm_cnt = 0;
kanpapa 0:72fdbcde2fa0 20 int cpm_old = 0;
kanpapa 0:72fdbcde2fa0 21
kanpapa 0:72fdbcde2fa0 22 //void splash_lcd(void) {
kanpapa 0:72fdbcde2fa0 23 // lcd.cls();
kanpapa 0:72fdbcde2fa0 24 // lcd.locate(0, 0);
kanpapa 0:72fdbcde2fa0 25 // lcd.printf("GM D3372 Counter");
kanpapa 0:72fdbcde2fa0 26 //}
kanpapa 0:72fdbcde2fa0 27
kanpapa 0:72fdbcde2fa0 28 void splash_oled(void) {
kanpapa 0:72fdbcde2fa0 29 oled1.background( 0x000000 );
kanpapa 0:72fdbcde2fa0 30 oled1.cls();
kanpapa 0:72fdbcde2fa0 31
kanpapa 0:72fdbcde2fa0 32 oled1.locate( 0, 0 );
kanpapa 0:72fdbcde2fa0 33 oled1.printf( "GMT D3372 Count" );
kanpapa 0:72fdbcde2fa0 34
kanpapa 0:72fdbcde2fa0 35 oled1.locate( 0, 1 );
kanpapa 0:72fdbcde2fa0 36 oled1.printf( "SPI = %s", MERMEX_OB_SPI_MODE_STR );
kanpapa 0:72fdbcde2fa0 37
kanpapa 0:72fdbcde2fa0 38 for (int s = 1 ; s < 8 ; s++) {
kanpapa 0:72fdbcde2fa0 39 oled1.fill(0, MARMEX_OB_oled::HEIGHT - (s * 10), MARMEX_OB_oled::WIDTH, 1, 0x000000ff);
kanpapa 0:72fdbcde2fa0 40 }
kanpapa 0:72fdbcde2fa0 41 }
kanpapa 0:72fdbcde2fa0 42
kanpapa 0:72fdbcde2fa0 43 void beep_on(void) {
kanpapa 0:72fdbcde2fa0 44 for (int i = 1; i < 100 ; i++) {
kanpapa 0:72fdbcde2fa0 45 beep = 1;
kanpapa 0:72fdbcde2fa0 46 wait_us(500);
kanpapa 0:72fdbcde2fa0 47 beep = 0;
kanpapa 0:72fdbcde2fa0 48 wait_us(500);
kanpapa 0:72fdbcde2fa0 49 }
kanpapa 0:72fdbcde2fa0 50 }
kanpapa 0:72fdbcde2fa0 51
kanpapa 0:72fdbcde2fa0 52 void flip() {
kanpapa 0:72fdbcde2fa0 53 led = !led;
kanpapa 0:72fdbcde2fa0 54 total_cnt++;
kanpapa 0:72fdbcde2fa0 55 cpm_cnt++;
kanpapa 0:72fdbcde2fa0 56 // lcd.locate(0, 1);
kanpapa 0:72fdbcde2fa0 57 // lcd.printf("Total:%d %d cpm", total_cnt, cpm_old);
kanpapa 0:72fdbcde2fa0 58 oled1.locate(0, 3);
kanpapa 0:72fdbcde2fa0 59 oled1.printf("Total:%d", total_cnt);
kanpapa 0:72fdbcde2fa0 60
kanpapa 0:72fdbcde2fa0 61 beep_on();
kanpapa 0:72fdbcde2fa0 62 }
kanpapa 0:72fdbcde2fa0 63
kanpapa 0:72fdbcde2fa0 64 int main() {
kanpapa 0:72fdbcde2fa0 65
kanpapa 0:72fdbcde2fa0 66 // int colorbar_width = MARMEX_OB_oled::WIDTH / 8;
kanpapa 0:72fdbcde2fa0 67
kanpapa 0:72fdbcde2fa0 68 //splash_lcd();
kanpapa 0:72fdbcde2fa0 69
kanpapa 0:72fdbcde2fa0 70 int x = 0;
kanpapa 0:72fdbcde2fa0 71
kanpapa 0:72fdbcde2fa0 72 splash_oled();
kanpapa 0:72fdbcde2fa0 73
kanpapa 0:72fdbcde2fa0 74 beep_on();
kanpapa 0:72fdbcde2fa0 75
kanpapa 0:72fdbcde2fa0 76 button.rise(&flip); // attach the address of the flip function to the rising edge
kanpapa 0:72fdbcde2fa0 77 while(1) {
kanpapa 0:72fdbcde2fa0 78 if (cpm_cnt != 0) {
kanpapa 0:72fdbcde2fa0 79 cpm_old = cpm_cnt;
kanpapa 0:72fdbcde2fa0 80 }
kanpapa 0:72fdbcde2fa0 81 cpm_cnt = 0;
kanpapa 0:72fdbcde2fa0 82 for (int i = 1; i < 60; i++) { // wait around, interrupts will interrupt this!
kanpapa 0:72fdbcde2fa0 83 flash = !flash; // 1sec
kanpapa 0:72fdbcde2fa0 84 wait(1);
kanpapa 0:72fdbcde2fa0 85 }
kanpapa 0:72fdbcde2fa0 86 min = !min; // 1min
kanpapa 0:72fdbcde2fa0 87 // lcd.locate(0, 1);
kanpapa 0:72fdbcde2fa0 88 // lcd.printf("Total:%d %d cpm", total_cnt, cpm_old);
kanpapa 0:72fdbcde2fa0 89 oled1.locate(0,4);
kanpapa 0:72fdbcde2fa0 90 oled1.printf("%d cpm", cpm_old);
kanpapa 0:72fdbcde2fa0 91
kanpapa 0:72fdbcde2fa0 92 //oled1.pixel(128 - x, 128 - (cpm_old * 10), 0x0000ff00);
kanpapa 0:72fdbcde2fa0 93 oled1.fill(x, MARMEX_OB_oled::HEIGHT - (cpm_old * 10), 1, (cpm_old * 10), 0x0000ff00);
kanpapa 0:72fdbcde2fa0 94 x++;
kanpapa 0:72fdbcde2fa0 95 if (x > MARMEX_OB_oled::WIDTH) { x = 0; }
kanpapa 0:72fdbcde2fa0 96 }
kanpapa 0:72fdbcde2fa0 97 }