回答例
課題1
右下のLEDを点滅させる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void setup() { pinMode(28, OUTPUT); //ROW3 pinMode(4, OUTPUT); //COL2 } void loop() { // LED ON digitalWrite(28, HIGH); digitalWrite(4, LOW); delay(200); // LED OFF digitalWrite(28, LOW); digitalWrite(4, HIGH); delay(200); } |
課題2
モールス信号の「SOS」を光らせる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
void setup() { pinMode(27, OUTPUT); //ROW2 pinMode(10, OUTPUT); //COL3 } void morse_s() { for(int i=0;i<3;i++){ // LED ON digitalWrite(27, HIGH); digitalWrite(10, LOW); delay(200); // LED OFF digitalWrite(27, LOW); digitalWrite(10, HIGH); delay(200); } } void morse_o() { for(int i=0;i<3;i++){ // LED ON digitalWrite(27, HIGH); digitalWrite(10, LOW); delay(400); // LED OFF digitalWrite(27, LOW); digitalWrite(10, HIGH); delay(200); } } void loop() { morse_s(); delay(600); morse_o(); delay(600); morse_s(); delay(1200); } |
課題3
左上のLEDから順に、無限にLEDをオンする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
// ROW,COLそれぞれGPIO番号を定義する #define ROW1 26 #define ROW2 27 #define ROW3 28 #define COL1 3 #define COL2 4 #define COL3 10 #define COL4 23 #define COL5 24 #define COL6 25 #define COL7 9 #define COL8 7 #define COL9 6 // 5x5のLEDアレイに対応してGPIO番号を配列で持つ char LEDARRAY[5][5][2] = { { {ROW1, COL1}, {ROW2, COL4}, {ROW1, COL2}, {ROW2, COL5}, {ROW1, COL3} }, { {ROW3, COL4}, {ROW3, COL5}, {ROW3, COL6}, {ROW3, COL7}, {ROW3, COL8} }, { {ROW2, COL2}, {ROW1, COL9}, {ROW2, COL3}, {ROW3, COL9}, {ROW2, COL1} }, { {ROW1, COL8}, {ROW1, COL7}, {ROW1, COL6}, {ROW1, COL5}, {ROW1, COL4} }, { {ROW3, COL3}, {ROW2, COL7}, {ROW3, COL1}, {ROW2, COL6}, {ROW3, COL2} } }; void setup() { // 全てのピンをOUTPUTで宣言 pinMode(ROW1, OUTPUT); pinMode(ROW2, OUTPUT); pinMode(ROW3, OUTPUT); pinMode(COL1, OUTPUT); pinMode(COL2, OUTPUT); pinMode(COL3, OUTPUT); pinMode(COL4, OUTPUT); pinMode(COL5, OUTPUT); pinMode(COL6, OUTPUT); pinMode(COL7, OUTPUT); pinMode(COL8, OUTPUT); pinMode(COL9, OUTPUT); // 全部オフする for (int i=0; i<5; i++) { for (int j=0; j<5; j++) { led_off(i, j); } } } // (x,y)のLEDをオンする void led_on(int x, int y) { digitalWrite(LEDARRAY[x][y][0], HIGH); digitalWrite(LEDARRAY[x][y][1], LOW); } // (x,y)のLEDをオフする void led_off(int x, int y) { digitalWrite(LEDARRAY[x][y][0], LOW); digitalWrite(LEDARRAY[x][y][1], HIGH); } void loop() { for (int i=0; i<5; i++) { // 下向きに移動 for (int j=0; j<5; j++) { // 右向きに移動 led_on(i, j); // オンして delay(200); led_off(i, j); // オフする } } } |
コメント