オブジェ展のセンサー基板のプログラム
Dependencies: mbed
main.cpp@0:fdf06f89a412, 2017-01-29 (annotated)
- Committer:
- zgtk_r
- Date:
- Sun Jan 29 02:08:23 2017 +0000
- Revision:
- 0:fdf06f89a412
test;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zgtk_r | 0:fdf06f89a412 | 1 | #include "mbed.h" |
zgtk_r | 0:fdf06f89a412 | 2 | |
zgtk_r | 0:fdf06f89a412 | 3 | AnalogIn haru(dp13); |
zgtk_r | 0:fdf06f89a412 | 4 | AnalogIn natsu(dp11); |
zgtk_r | 0:fdf06f89a412 | 5 | AnalogIn aki(dp10); |
zgtk_r | 0:fdf06f89a412 | 6 | AnalogIn huyu(dp9); |
zgtk_r | 0:fdf06f89a412 | 7 | |
zgtk_r | 0:fdf06f89a412 | 8 | BusOut Out(dp26, dp28); |
zgtk_r | 0:fdf06f89a412 | 9 | |
zgtk_r | 0:fdf06f89a412 | 10 | DigitalOut LED(dp4); |
zgtk_r | 0:fdf06f89a412 | 11 | DigitalIn In(dp16); |
zgtk_r | 0:fdf06f89a412 | 12 | |
zgtk_r | 0:fdf06f89a412 | 13 | DigitalOut l(dp2); |
zgtk_r | 0:fdf06f89a412 | 14 | |
zgtk_r | 0:fdf06f89a412 | 15 | bool i = false; |
zgtk_r | 0:fdf06f89a412 | 16 | void Blinky(){ |
zgtk_r | 0:fdf06f89a412 | 17 | if(i){ |
zgtk_r | 0:fdf06f89a412 | 18 | i = false; |
zgtk_r | 0:fdf06f89a412 | 19 | l = 1; |
zgtk_r | 0:fdf06f89a412 | 20 | } |
zgtk_r | 0:fdf06f89a412 | 21 | else{ |
zgtk_r | 0:fdf06f89a412 | 22 | i = true; |
zgtk_r | 0:fdf06f89a412 | 23 | l = 0; |
zgtk_r | 0:fdf06f89a412 | 24 | } |
zgtk_r | 0:fdf06f89a412 | 25 | } |
zgtk_r | 0:fdf06f89a412 | 26 | int RoteTime = 0; |
zgtk_r | 0:fdf06f89a412 | 27 | int RoteCount = 0; |
zgtk_r | 0:fdf06f89a412 | 28 | int RoteCycle = 0; |
zgtk_r | 0:fdf06f89a412 | 29 | bool RoteType = false; //[f : 4分ローテ] [t : 10秒ローテ] |
zgtk_r | 0:fdf06f89a412 | 30 | uint16_t AutoSeason = 0; |
zgtk_r | 0:fdf06f89a412 | 31 | |
zgtk_r | 0:fdf06f89a412 | 32 | void CountFunc(){ |
zgtk_r | 0:fdf06f89a412 | 33 | if(RoteType){ |
zgtk_r | 0:fdf06f89a412 | 34 | if(RoteTime >= 6){ |
zgtk_r | 0:fdf06f89a412 | 35 | RoteCount++; |
zgtk_r | 0:fdf06f89a412 | 36 | RoteTime = 0; |
zgtk_r | 0:fdf06f89a412 | 37 | AutoSeason = RoteCount; |
zgtk_r | 0:fdf06f89a412 | 38 | } |
zgtk_r | 0:fdf06f89a412 | 39 | if(RoteCount >= 4){ |
zgtk_r | 0:fdf06f89a412 | 40 | RoteCount = 0; |
zgtk_r | 0:fdf06f89a412 | 41 | RoteTime = 0; |
zgtk_r | 0:fdf06f89a412 | 42 | AutoSeason = 0; |
zgtk_r | 0:fdf06f89a412 | 43 | RoteType = false; |
zgtk_r | 0:fdf06f89a412 | 44 | } |
zgtk_r | 0:fdf06f89a412 | 45 | }else{ |
zgtk_r | 0:fdf06f89a412 | 46 | if(RoteTime >= 4){ |
zgtk_r | 0:fdf06f89a412 | 47 | RoteTime = 0; |
zgtk_r | 0:fdf06f89a412 | 48 | AutoSeason = RoteCount; |
zgtk_r | 0:fdf06f89a412 | 49 | RoteCount++; |
zgtk_r | 0:fdf06f89a412 | 50 | } |
zgtk_r | 0:fdf06f89a412 | 51 | if(RoteCount >= 5){ |
zgtk_r | 0:fdf06f89a412 | 52 | RoteCount = 0; |
zgtk_r | 0:fdf06f89a412 | 53 | RoteTime = 0; |
zgtk_r | 0:fdf06f89a412 | 54 | AutoSeason = 0; |
zgtk_r | 0:fdf06f89a412 | 55 | RoteType = true; |
zgtk_r | 0:fdf06f89a412 | 56 | } |
zgtk_r | 0:fdf06f89a412 | 57 | } |
zgtk_r | 0:fdf06f89a412 | 58 | RoteTime++; |
zgtk_r | 0:fdf06f89a412 | 59 | } |
zgtk_r | 0:fdf06f89a412 | 60 | |
zgtk_r | 0:fdf06f89a412 | 61 | Ticker pi; |
zgtk_r | 0:fdf06f89a412 | 62 | |
zgtk_r | 0:fdf06f89a412 | 63 | Ticker Counter; |
zgtk_r | 0:fdf06f89a412 | 64 | /* |
zgtk_r | 0:fdf06f89a412 | 65 | int main() { |
zgtk_r | 0:fdf06f89a412 | 66 | int n = 0; |
zgtk_r | 0:fdf06f89a412 | 67 | pi.attach(&Blinky, 0.5); |
zgtk_r | 0:fdf06f89a412 | 68 | while (1){ |
zgtk_r | 0:fdf06f89a412 | 69 | if(In){ |
zgtk_r | 0:fdf06f89a412 | 70 | LED = 1; |
zgtk_r | 0:fdf06f89a412 | 71 | uint8_t out = 0; |
zgtk_r | 0:fdf06f89a412 | 72 | if(haru > 0.511){ |
zgtk_r | 0:fdf06f89a412 | 73 | out = 0; |
zgtk_r | 0:fdf06f89a412 | 74 | } |
zgtk_r | 0:fdf06f89a412 | 75 | else if(natsu > 0.440){ |
zgtk_r | 0:fdf06f89a412 | 76 | out = 1; |
zgtk_r | 0:fdf06f89a412 | 77 | } |
zgtk_r | 0:fdf06f89a412 | 78 | else if(aki > 0.388){ |
zgtk_r | 0:fdf06f89a412 | 79 | out = 2; |
zgtk_r | 0:fdf06f89a412 | 80 | } |
zgtk_r | 0:fdf06f89a412 | 81 | else if(huyu > 0.388){ |
zgtk_r | 0:fdf06f89a412 | 82 | out = 3; |
zgtk_r | 0:fdf06f89a412 | 83 | } |
zgtk_r | 0:fdf06f89a412 | 84 | Out = out; |
zgtk_r | 0:fdf06f89a412 | 85 | } |
zgtk_r | 0:fdf06f89a412 | 86 | else{ |
zgtk_r | 0:fdf06f89a412 | 87 | LED = 0; |
zgtk_r | 0:fdf06f89a412 | 88 | n++; |
zgtk_r | 0:fdf06f89a412 | 89 | if(n >= 40)n = 0; |
zgtk_r | 0:fdf06f89a412 | 90 | Out = n%10; |
zgtk_r | 0:fdf06f89a412 | 91 | } |
zgtk_r | 0:fdf06f89a412 | 92 | } |
zgtk_r | 0:fdf06f89a412 | 93 | } |
zgtk_r | 0:fdf06f89a412 | 94 | */ |
zgtk_r | 0:fdf06f89a412 | 95 | |
zgtk_r | 0:fdf06f89a412 | 96 | int main() { |
zgtk_r | 0:fdf06f89a412 | 97 | |
zgtk_r | 0:fdf06f89a412 | 98 | for(int i = 0; i < 50; i++){ |
zgtk_r | 0:fdf06f89a412 | 99 | l = 0; |
zgtk_r | 0:fdf06f89a412 | 100 | wait(0.2); |
zgtk_r | 0:fdf06f89a412 | 101 | l = 1; |
zgtk_r | 0:fdf06f89a412 | 102 | wait(0.2); |
zgtk_r | 0:fdf06f89a412 | 103 | } |
zgtk_r | 0:fdf06f89a412 | 104 | |
zgtk_r | 0:fdf06f89a412 | 105 | pi.attach(&Blinky, 0.2); |
zgtk_r | 0:fdf06f89a412 | 106 | Counter.attach(&CountFunc, 10); |
zgtk_r | 0:fdf06f89a412 | 107 | |
zgtk_r | 0:fdf06f89a412 | 108 | while (1){ |
zgtk_r | 0:fdf06f89a412 | 109 | LED = 1; |
zgtk_r | 0:fdf06f89a412 | 110 | if(haru < 0.3){ |
zgtk_r | 0:fdf06f89a412 | 111 | AutoSeason = 0b00; |
zgtk_r | 0:fdf06f89a412 | 112 | } |
zgtk_r | 0:fdf06f89a412 | 113 | if(natsu < 0.4){ |
zgtk_r | 0:fdf06f89a412 | 114 | AutoSeason = 0b01; |
zgtk_r | 0:fdf06f89a412 | 115 | } |
zgtk_r | 0:fdf06f89a412 | 116 | else if(aki < 0.3){ |
zgtk_r | 0:fdf06f89a412 | 117 | AutoSeason = 0b10; |
zgtk_r | 0:fdf06f89a412 | 118 | } |
zgtk_r | 0:fdf06f89a412 | 119 | |
zgtk_r | 0:fdf06f89a412 | 120 | else if(huyu < 0.226784){ |
zgtk_r | 0:fdf06f89a412 | 121 | AutoSeason = 3; |
zgtk_r | 0:fdf06f89a412 | 122 | } |
zgtk_r | 0:fdf06f89a412 | 123 | Out = ~AutoSeason; |
zgtk_r | 0:fdf06f89a412 | 124 | wait(2); |
zgtk_r | 0:fdf06f89a412 | 125 | } |
zgtk_r | 0:fdf06f89a412 | 126 | } |