回答例です。
課題1
AボタンとBボタンが同時に押されている間は「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 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 |
void setup() { pinMode(27, OUTPUT); //ROW2 pinMode(10, OUTPUT); //COL3 pinMode(PIN_BUTTON_A, INPUT_PULLUP); pinMode(PIN_BUTTON_B, INPUT_PULLUP); Serial.begin(115200); while (!Serial); } 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); } } int delay_time = 200; void loop() { if (digitalRead(PIN_BUTTON_A) == LOW && digitalRead(PIN_BUTTON_B) == LOW) { morse_s(); delay(600); morse_o(); delay(600); morse_s(); delay(1200); return; } else if (digitalRead(PIN_BUTTON_A) == LOW) { Serial.println("A Button!"); delay_time = 100; } else if (digitalRead(PIN_BUTTON_B) == LOW) { Serial.println("B Button!"); delay_time = 400; } else { delay_time = 200; } // LED ON digitalWrite(27, HIGH); digitalWrite(10, LOW); delay(delay_time); // LED OFF digitalWrite(27, LOW); digitalWrite(10, HIGH); delay(delay_time); } |
課題2
変数 delay_time のデバッグ。
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 |
void setup() { pinMode(27, OUTPUT); //ROW2 pinMode(10, OUTPUT); //COL3 pinMode(PIN_BUTTON_A, INPUT_PULLUP); pinMode(PIN_BUTTON_B, INPUT_PULLUP); Serial.begin(115200); while (!Serial); } int delay_time = 200; void loop() { if (digitalRead(PIN_BUTTON_A) == LOW) { Serial.println("A Button!"); delay_time = 100; } else if (digitalRead(PIN_BUTTON_B) == LOW) { Serial.println("B Button!"); delay_time = 400; } else { delay_time = 200; } Serial.print("delay_time = "); Serial.println(delay_time); // LED ON digitalWrite(27, HIGH); digitalWrite(10, LOW); delay(delay_time); // LED OFF digitalWrite(27, LOW); digitalWrite(10, HIGH); delay(delay_time); } |
シリアルモニタにはこのように変数 delay_time の値が表示されます。
課題3
シリアルプロッタにsin()(正弦波形)を表示する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <math.h> void setup() { Serial.begin(115200); while (!Serial); } double x = 0.0; void loop() { x += 0.1; double y = sin(x); Serial.println(y); delay(100); } |
このようになります。
コメント