Geiger counter http://geigermaps.jp/Create/Tutorials/mbed_geiger/ja

Dependencies:   mbed

Committer:
okini3939
Date:
Fri Apr 15 16:51:30 2011 +0000
Revision:
0:5b2e60110d9b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:5b2e60110d9b 1 #include "mbed.h"
okini3939 0:5b2e60110d9b 2 #include "EthernetNetIf.h"
okini3939 0:5b2e60110d9b 3 #include "HTTPClient.h"
okini3939 0:5b2e60110d9b 4
okini3939 0:5b2e60110d9b 5 #define API_KEY "XXXXXXXX"
okini3939 0:5b2e60110d9b 6 #define FEED_ID "0000"
okini3939 0:5b2e60110d9b 7 #define GEIGER_PIN p10
okini3939 0:5b2e60110d9b 8
okini3939 0:5b2e60110d9b 9 EthernetNetIf eth;
okini3939 0:5b2e60110d9b 10 InterruptIn intcounter(GEIGER_PIN);
okini3939 0:5b2e60110d9b 11 volatile int count;
okini3939 0:5b2e60110d9b 12
okini3939 0:5b2e60110d9b 13 void interrupt_counter () {
okini3939 0:5b2e60110d9b 14 count ++;
okini3939 0:5b2e60110d9b 15 }
okini3939 0:5b2e60110d9b 16
okini3939 0:5b2e60110d9b 17 int get_counter () {
okini3939 0:5b2e60110d9b 18 int c;
okini3939 0:5b2e60110d9b 19 c = count;
okini3939 0:5b2e60110d9b 20 count = 0;
okini3939 0:5b2e60110d9b 21 return c;
okini3939 0:5b2e60110d9b 22 }
okini3939 0:5b2e60110d9b 23
okini3939 0:5b2e60110d9b 24 void init_counter () {
okini3939 0:5b2e60110d9b 25 count = 0;
okini3939 0:5b2e60110d9b 26 intcounter.fall(&interrupt_counter);
okini3939 0:5b2e60110d9b 27 }
okini3939 0:5b2e60110d9b 28
okini3939 0:5b2e60110d9b 29 void pachube (char *csv) {
okini3939 0:5b2e60110d9b 30 char uri[100];
okini3939 0:5b2e60110d9b 31 HTTPResult ret;
okini3939 0:5b2e60110d9b 32 HTTPText csvContent("text/csv");
okini3939 0:5b2e60110d9b 33 HTTPClient clientP;
okini3939 0:5b2e60110d9b 34
okini3939 0:5b2e60110d9b 35 clientP.setRequestHeader("X-PachubeApiKey", API_KEY);
okini3939 0:5b2e60110d9b 36 csvContent.set(csv);
okini3939 0:5b2e60110d9b 37 strcpy(uri, "http://api.pachube.com/v1/feeds/");
okini3939 0:5b2e60110d9b 38 strcat(uri, FEED_ID);
okini3939 0:5b2e60110d9b 39 strcat(uri, ".csv?_method=put");
okini3939 0:5b2e60110d9b 40 ret = clientP.post(uri, csvContent, NULL);
okini3939 0:5b2e60110d9b 41
okini3939 0:5b2e60110d9b 42 if (ret != HTTP_OK && ret != HTTP_PROCESSING) {
okini3939 0:5b2e60110d9b 43 // error
okini3939 0:5b2e60110d9b 44 }
okini3939 0:5b2e60110d9b 45 }
okini3939 0:5b2e60110d9b 46
okini3939 0:5b2e60110d9b 47 int main() {
okini3939 0:5b2e60110d9b 48 Timer timer;
okini3939 0:5b2e60110d9b 49 int i;
okini3939 0:5b2e60110d9b 50 char buf[10];
okini3939 0:5b2e60110d9b 51
okini3939 0:5b2e60110d9b 52 eth.setup();
okini3939 0:5b2e60110d9b 53 init_counter();
okini3939 0:5b2e60110d9b 54
okini3939 0:5b2e60110d9b 55 timer.start();
okini3939 0:5b2e60110d9b 56 while (1) {
okini3939 0:5b2e60110d9b 57 i = get_counter();
okini3939 0:5b2e60110d9b 58 sprintf(buf, "%d", i);
okini3939 0:5b2e60110d9b 59 pachube(buf);
okini3939 0:5b2e60110d9b 60
okini3939 0:5b2e60110d9b 61 while (timer.read() < 60) wait(1);
okini3939 0:5b2e60110d9b 62 timer.reset();
okini3939 0:5b2e60110d9b 63 }
okini3939 0:5b2e60110d9b 64 }