mbed Geiger counter

Dependencies:   mbed NokiaLCD

Committer:
kanpapa
Date:
Sun Jun 05 06:16:31 2011 +0000
Revision:
1:a03717f88919
Parent:
0:72fdbcde2fa0
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 // OLED
kanpapa 0:72fdbcde2fa0 4 #include "MARMEX_OB_oled.h"
kanpapa 0:72fdbcde2fa0 5 MARMEX_OB_oled oled1( p5, p7, p27, p24, p26 ); // mosi, sclk, cs, rst, power_control
kanpapa 0:72fdbcde2fa0 6
kanpapa 0:72fdbcde2fa0 7 InterruptIn button(p29);
kanpapa 0:72fdbcde2fa0 8 DigitalOut beep(p30);
kanpapa 0:72fdbcde2fa0 9
kanpapa 0:72fdbcde2fa0 10 DigitalOut led(LED1);
kanpapa 0:72fdbcde2fa0 11 DigitalOut min(LED3);
kanpapa 0:72fdbcde2fa0 12 DigitalOut flash(LED4);
kanpapa 0:72fdbcde2fa0 13
kanpapa 0:72fdbcde2fa0 14 int total_cnt = 0;
kanpapa 0:72fdbcde2fa0 15 int cpm_cnt = 0;
kanpapa 0:72fdbcde2fa0 16 int cpm_old = 0;
kanpapa 0:72fdbcde2fa0 17
kanpapa 0:72fdbcde2fa0 18 void splash_oled(void) {
kanpapa 0:72fdbcde2fa0 19 oled1.background( 0x000000 );
kanpapa 0:72fdbcde2fa0 20 oled1.cls();
kanpapa 0:72fdbcde2fa0 21
kanpapa 0:72fdbcde2fa0 22 oled1.locate( 0, 0 );
kanpapa 0:72fdbcde2fa0 23 oled1.printf( "GMT D3372 Count" );
kanpapa 0:72fdbcde2fa0 24
kanpapa 0:72fdbcde2fa0 25 oled1.locate( 0, 1 );
kanpapa 0:72fdbcde2fa0 26 oled1.printf( "SPI = %s", MERMEX_OB_SPI_MODE_STR );
kanpapa 0:72fdbcde2fa0 27
kanpapa 0:72fdbcde2fa0 28 for (int s = 1 ; s < 8 ; s++) {
kanpapa 0:72fdbcde2fa0 29 oled1.fill(0, MARMEX_OB_oled::HEIGHT - (s * 10), MARMEX_OB_oled::WIDTH, 1, 0x000000ff);
kanpapa 0:72fdbcde2fa0 30 }
kanpapa 0:72fdbcde2fa0 31 }
kanpapa 0:72fdbcde2fa0 32
kanpapa 0:72fdbcde2fa0 33 void beep_on(void) {
kanpapa 0:72fdbcde2fa0 34 for (int i = 1; i < 100 ; i++) {
kanpapa 0:72fdbcde2fa0 35 beep = 1;
kanpapa 0:72fdbcde2fa0 36 wait_us(500);
kanpapa 0:72fdbcde2fa0 37 beep = 0;
kanpapa 0:72fdbcde2fa0 38 wait_us(500);
kanpapa 0:72fdbcde2fa0 39 }
kanpapa 0:72fdbcde2fa0 40 }
kanpapa 0:72fdbcde2fa0 41
kanpapa 0:72fdbcde2fa0 42 void flip() {
kanpapa 0:72fdbcde2fa0 43 led = !led;
kanpapa 0:72fdbcde2fa0 44 total_cnt++;
kanpapa 0:72fdbcde2fa0 45 cpm_cnt++;
kanpapa 0:72fdbcde2fa0 46 oled1.locate(0, 3);
kanpapa 0:72fdbcde2fa0 47 oled1.printf("Total:%d", total_cnt);
kanpapa 0:72fdbcde2fa0 48
kanpapa 0:72fdbcde2fa0 49 beep_on();
kanpapa 0:72fdbcde2fa0 50 }
kanpapa 0:72fdbcde2fa0 51
kanpapa 0:72fdbcde2fa0 52 int main() {
kanpapa 0:72fdbcde2fa0 53
kanpapa 0:72fdbcde2fa0 54 int x = 0;
kanpapa 0:72fdbcde2fa0 55
kanpapa 0:72fdbcde2fa0 56 splash_oled();
kanpapa 0:72fdbcde2fa0 57
kanpapa 0:72fdbcde2fa0 58 beep_on();
kanpapa 0:72fdbcde2fa0 59
kanpapa 0:72fdbcde2fa0 60 button.rise(&flip); // attach the address of the flip function to the rising edge
kanpapa 0:72fdbcde2fa0 61 while(1) {
kanpapa 0:72fdbcde2fa0 62 if (cpm_cnt != 0) {
kanpapa 0:72fdbcde2fa0 63 cpm_old = cpm_cnt;
kanpapa 0:72fdbcde2fa0 64 }
kanpapa 0:72fdbcde2fa0 65 cpm_cnt = 0;
kanpapa 0:72fdbcde2fa0 66 for (int i = 1; i < 60; i++) { // wait around, interrupts will interrupt this!
kanpapa 0:72fdbcde2fa0 67 flash = !flash; // 1sec
kanpapa 0:72fdbcde2fa0 68 wait(1);
kanpapa 0:72fdbcde2fa0 69 }
kanpapa 0:72fdbcde2fa0 70 min = !min; // 1min
kanpapa 0:72fdbcde2fa0 71 oled1.locate(0,4);
kanpapa 0:72fdbcde2fa0 72 oled1.printf("%d cpm", cpm_old);
kanpapa 0:72fdbcde2fa0 73
kanpapa 0:72fdbcde2fa0 74 oled1.fill(x, MARMEX_OB_oled::HEIGHT - (cpm_old * 10), 1, (cpm_old * 10), 0x0000ff00);
kanpapa 0:72fdbcde2fa0 75 x++;
kanpapa 0:72fdbcde2fa0 76 if (x > MARMEX_OB_oled::WIDTH) { x = 0; }
kanpapa 0:72fdbcde2fa0 77 }
kanpapa 0:72fdbcde2fa0 78 }