Suga koubou
/
Geiger_Pachube
Geiger counter http://geigermaps.jp/Create/Tutorials/mbed_geiger/ja
main.cpp@0:5b2e60110d9b, 2011-04-15 (annotated)
- Committer:
- okini3939
- Date:
- Fri Apr 15 16:51:30 2011 +0000
- Revision:
- 0:5b2e60110d9b
Who changed what in which revision?
User | Revision | Line number | New 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 | } |