test

Dependencies:   SoftPWM mbed

Committer:
yamaguchii
Date:
Sun Oct 16 09:28:20 2016 +0000
Revision:
4:a1a1c077ff52
Parent:
3:7bd806354a83
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
h_nakanishi 0:6aabaf00a6e9 1 #include "mbed.h"
h_nakanishi 0:6aabaf00a6e9 2 #include "SoftPWM.h"
h_nakanishi 0:6aabaf00a6e9 3
h_nakanishi 0:6aabaf00a6e9 4 #define LED_ON 1
h_nakanishi 0:6aabaf00a6e9 5 #define LED_OFF 0
h_nakanishi 0:6aabaf00a6e9 6
h_nakanishi 0:6aabaf00a6e9 7 #define TIME_10ms 1
h_nakanishi 0:6aabaf00a6e9 8 #define TIME_20ms 2
h_nakanishi 0:6aabaf00a6e9 9 #define TIME_30ms 3
h_nakanishi 0:6aabaf00a6e9 10 #define TIME_40ms 4
h_nakanishi 0:6aabaf00a6e9 11 #define TIME_50ms 5
h_nakanishi 0:6aabaf00a6e9 12 #define TIME_100ms 10
h_nakanishi 0:6aabaf00a6e9 13 #define TIME_200ms 20
h_nakanishi 0:6aabaf00a6e9 14 #define TIME_500ms 50
h_nakanishi 0:6aabaf00a6e9 15
h_nakanishi 0:6aabaf00a6e9 16 static Ticker flipper; // Tick Timer
h_nakanishi 0:6aabaf00a6e9 17
h_nakanishi 0:6aabaf00a6e9 18 static DigitalOut ledu(LED_USER); // LED-User
h_nakanishi 0:6aabaf00a6e9 19 static SoftPWM ledr(LED_RED); // LED-Red
h_nakanishi 0:6aabaf00a6e9 20 static SoftPWM ledg(LED_GREEN); // LED-Green
h_nakanishi 0:6aabaf00a6e9 21 static SoftPWM ledb(LED_BLUE); // LED-Blue
h_nakanishi 0:6aabaf00a6e9 22
h_nakanishi 0:6aabaf00a6e9 23 static unsigned int syscnt_u; // SystemCounter for LED-User
h_nakanishi 0:6aabaf00a6e9 24 static unsigned int syscnt_r; // SystemCounter for LED-Red
h_nakanishi 0:6aabaf00a6e9 25 static unsigned int syscnt_g; // SystemCounter for LED-Green
h_nakanishi 0:6aabaf00a6e9 26 static unsigned int syscnt_b; // SystemCounter for LED-Blue
h_nakanishi 0:6aabaf00a6e9 27
h_nakanishi 0:6aabaf00a6e9 28 volatile static unsigned int flg_ledu; // LED-User Flag
h_nakanishi 0:6aabaf00a6e9 29 volatile static unsigned int flg_ledr; // LED-Red Flag
h_nakanishi 0:6aabaf00a6e9 30 volatile static unsigned int flg_ledg; // LED-Green Flag
h_nakanishi 0:6aabaf00a6e9 31 volatile static unsigned int flg_ledb; // LED-Blue Flag
h_nakanishi 0:6aabaf00a6e9 32
h_nakanishi 0:6aabaf00a6e9 33 void flip() {
h_nakanishi 0:6aabaf00a6e9 34 // Check 500ms for LED-User
h_nakanishi 0:6aabaf00a6e9 35 syscnt_u++; // increment SystemCounter for LED-User
h_nakanishi 0:6aabaf00a6e9 36 if( syscnt_u >= TIME_500ms ){
h_nakanishi 0:6aabaf00a6e9 37 flg_ledu++;
h_nakanishi 0:6aabaf00a6e9 38 syscnt_u = 0;
h_nakanishi 0:6aabaf00a6e9 39 }
h_nakanishi 0:6aabaf00a6e9 40
h_nakanishi 0:6aabaf00a6e9 41 // Check 10ms for LED-Red
h_nakanishi 0:6aabaf00a6e9 42 syscnt_r++; // increment SystemCounter for LED-Red
h_nakanishi 0:6aabaf00a6e9 43 if( syscnt_r >= TIME_10ms ){
h_nakanishi 0:6aabaf00a6e9 44 flg_ledr++;
h_nakanishi 0:6aabaf00a6e9 45 syscnt_r = 0;
h_nakanishi 0:6aabaf00a6e9 46 }
h_nakanishi 0:6aabaf00a6e9 47
h_nakanishi 0:6aabaf00a6e9 48 // Check 20ms for LED-Green
h_nakanishi 0:6aabaf00a6e9 49 syscnt_g++; // increment SystemCounter for LED-Green
h_nakanishi 0:6aabaf00a6e9 50 if( syscnt_g >= TIME_20ms ){
h_nakanishi 0:6aabaf00a6e9 51 flg_ledg++;
h_nakanishi 0:6aabaf00a6e9 52 syscnt_g = 0;
h_nakanishi 0:6aabaf00a6e9 53 }
h_nakanishi 0:6aabaf00a6e9 54
h_nakanishi 0:6aabaf00a6e9 55 // Check 30ms for LED-Blue
h_nakanishi 0:6aabaf00a6e9 56 syscnt_b++; // increment SystemCounter for LED-Blue
hiroshi_nakanishi 2:33d29976d861 57 if( syscnt_b >= TIME_30ms ) {
h_nakanishi 0:6aabaf00a6e9 58 flg_ledb++;
h_nakanishi 0:6aabaf00a6e9 59 syscnt_b = 0;
h_nakanishi 0:6aabaf00a6e9 60 }
h_nakanishi 0:6aabaf00a6e9 61 }
h_nakanishi 0:6aabaf00a6e9 62
h_nakanishi 0:6aabaf00a6e9 63 int main() {
hiroshi_nakanishi 3:7bd806354a83 64
hiroshi_nakanishi 3:7bd806354a83 65
yamaguchii 4:a1a1c077ff52 66 printf("test\n");
hiroshi_nakanishi 3:7bd806354a83 67
hiroshi_nakanishi 1:21371da39168 68 // メイン関数
h_nakanishi 0:6aabaf00a6e9 69 ledu = LED_OFF; // LED-User Off
h_nakanishi 0:6aabaf00a6e9 70
h_nakanishi 0:6aabaf00a6e9 71 ledr.period_ms(10); // Set PWM Period 10ms
h_nakanishi 0:6aabaf00a6e9 72 ledr = 0.0f; // Set LED-Red Duty
h_nakanishi 0:6aabaf00a6e9 73
h_nakanishi 0:6aabaf00a6e9 74 ledg.period_ms(10); // Set PWM Period 10ms
h_nakanishi 0:6aabaf00a6e9 75 ledg = 0.0f; // Set LED-Green Duty
h_nakanishi 0:6aabaf00a6e9 76
h_nakanishi 0:6aabaf00a6e9 77 ledb.period_ms(10); // Set PWM Period 10ms
h_nakanishi 0:6aabaf00a6e9 78 ledb = 0.0f; // Set LED-Blue Duty
h_nakanishi 0:6aabaf00a6e9 79
h_nakanishi 0:6aabaf00a6e9 80 flg_ledu = 0; // Initialize LED-User Flag
h_nakanishi 0:6aabaf00a6e9 81 flg_ledr = 0; // Initialize LED-Red Flag
h_nakanishi 0:6aabaf00a6e9 82 flg_ledg = 0; // Initialize LED-Green Flag
h_nakanishi 0:6aabaf00a6e9 83 flg_ledb = 0; // Initialize LED-Blue Flag
h_nakanishi 0:6aabaf00a6e9 84
h_nakanishi 0:6aabaf00a6e9 85 syscnt_u = 0; // Initialize System Counter for LED-User
h_nakanishi 0:6aabaf00a6e9 86 syscnt_r = 0; // Initialize System Counter for LED-Red
h_nakanishi 0:6aabaf00a6e9 87 syscnt_g = 0; // Initialize System Counter for LED-Green
h_nakanishi 0:6aabaf00a6e9 88 syscnt_b = 0; // Initialize System Counter for LED-Blue
h_nakanishi 0:6aabaf00a6e9 89
h_nakanishi 0:6aabaf00a6e9 90 unsigned int cntr = 0; // Initialize LED-Red Counter
h_nakanishi 0:6aabaf00a6e9 91 unsigned int cntg = 0; // Initialize LED-Green Counter
h_nakanishi 0:6aabaf00a6e9 92 unsigned int cntb = 0; // Initialize LED-Blue Counter
h_nakanishi 0:6aabaf00a6e9 93
h_nakanishi 0:6aabaf00a6e9 94 int cntrd = 1; // Set LED-Red Counter Direction +1
h_nakanishi 0:6aabaf00a6e9 95 int cntgd = 1; // Set LED-Green Counter Direction +1
h_nakanishi 0:6aabaf00a6e9 96 int cntbd = 1; // Set LED-Blue Counter Direction +1
h_nakanishi 0:6aabaf00a6e9 97
h_nakanishi 0:6aabaf00a6e9 98 unsigned int flg_ledu_last = 0; // Initialize LED-User Flag (last value)
h_nakanishi 0:6aabaf00a6e9 99 unsigned int flg_ledr_last = 0; // Initialize LED-Red Flag (last value)
h_nakanishi 0:6aabaf00a6e9 100 unsigned int flg_ledg_last = 0; // Initialize LED-Green Flag (last value)
h_nakanishi 0:6aabaf00a6e9 101 unsigned int flg_ledb_last = 0; // Initialize LED-Blue Flag (last value)
h_nakanishi 0:6aabaf00a6e9 102
h_nakanishi 0:6aabaf00a6e9 103 flipper.attach_us(&flip, 10000); // TickerTime Set 10ms
h_nakanishi 0:6aabaf00a6e9 104
h_nakanishi 0:6aabaf00a6e9 105 while(1) {
h_nakanishi 0:6aabaf00a6e9 106
h_nakanishi 0:6aabaf00a6e9 107 //----- LED User -----
h_nakanishi 0:6aabaf00a6e9 108 if(flg_ledu_last != flg_ledu) { // Has LED-User Flag been Changed?
h_nakanishi 0:6aabaf00a6e9 109 flg_ledu_last = flg_ledu; // Save current value
h_nakanishi 0:6aabaf00a6e9 110 ledu =!ledu; // Invert LED-User
h_nakanishi 0:6aabaf00a6e9 111 }
h_nakanishi 0:6aabaf00a6e9 112
h_nakanishi 0:6aabaf00a6e9 113 //----- LED Red -----
h_nakanishi 0:6aabaf00a6e9 114 if(flg_ledr_last != flg_ledr) { // Has LED-Red Flag been Changed?
h_nakanishi 0:6aabaf00a6e9 115 flg_ledr_last = flg_ledr; // Save current value
h_nakanishi 0:6aabaf00a6e9 116
h_nakanishi 0:6aabaf00a6e9 117 if(cntr == 0) cntrd = 1; // Set Direction(+1)
h_nakanishi 0:6aabaf00a6e9 118 if(cntr >= 127) cntrd = -1; // Set Direction(-1)
h_nakanishi 0:6aabaf00a6e9 119 cntr += cntrd; // Increment/Decrement Counter
h_nakanishi 0:6aabaf00a6e9 120 ledr = (float)cntr / 128; // Set LED-Red Duty
h_nakanishi 0:6aabaf00a6e9 121 }
h_nakanishi 0:6aabaf00a6e9 122
h_nakanishi 0:6aabaf00a6e9 123 //----- LED Green -----
h_nakanishi 0:6aabaf00a6e9 124 if(flg_ledg_last != flg_ledg) { // Has LED-Green Flag been Changed?
h_nakanishi 0:6aabaf00a6e9 125 flg_ledg_last = flg_ledg; // Save current value
h_nakanishi 0:6aabaf00a6e9 126
h_nakanishi 0:6aabaf00a6e9 127 if(cntg == 0) cntgd = 1; // Set Direction(+1)
h_nakanishi 0:6aabaf00a6e9 128 if(cntg >= 127) cntgd = -1; // Set Direction(-1)
h_nakanishi 0:6aabaf00a6e9 129 cntg += cntgd; // Increment/Decrement Counter
h_nakanishi 0:6aabaf00a6e9 130 ledg = (float)cntg / 128; // Set LED-Green Duty
h_nakanishi 0:6aabaf00a6e9 131 }
h_nakanishi 0:6aabaf00a6e9 132
h_nakanishi 0:6aabaf00a6e9 133 //----- LED Blue -----
h_nakanishi 0:6aabaf00a6e9 134 if(flg_ledb_last != flg_ledb) { // Has LED-Blue Flag been Changed?
h_nakanishi 0:6aabaf00a6e9 135 flg_ledb_last = flg_ledb; // Save current value
h_nakanishi 0:6aabaf00a6e9 136
h_nakanishi 0:6aabaf00a6e9 137 if(cntb == 0) cntbd = 1; // Set Direction(+1)
h_nakanishi 0:6aabaf00a6e9 138 if(cntb >= 127) cntbd = -1; // Set Direction(-1)
h_nakanishi 0:6aabaf00a6e9 139 cntb += cntbd; // Increment/Decrement Counter
h_nakanishi 0:6aabaf00a6e9 140 ledb = (float)cntb / 128; // Set LED-Blue Duty
h_nakanishi 0:6aabaf00a6e9 141 }
h_nakanishi 0:6aabaf00a6e9 142
h_nakanishi 0:6aabaf00a6e9 143 wait_us(1);
h_nakanishi 0:6aabaf00a6e9 144 }
h_nakanishi 0:6aabaf00a6e9 145 }