オブジェ展のセンサー基板のプログラム

Dependencies:   mbed

Committer:
zgtk_r
Date:
Sun Jan 29 02:08:23 2017 +0000
Revision:
0:fdf06f89a412
test;

Who changed what in which revision?

UserRevisionLine numberNew 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 }