情報テクノロジー第5回 analogWriteで点滅させよ (PWM)

情報テクノロジー第5回目です。
今回でOUTPUTに関する一通りを終えて、次回からはセンサー類を使用して、INPUT系に馴染ませたいと思います。

例によって今回の課題(原文まま)


analogWrite(PWM)を使って、LEDの明るさを制御しよう。

PWMとは、パルス幅変調ともいう、0か1かのディジタル信号ではなく、0~255までの数値を刻んだ疑似アナログ信号のことである。0はLOW、255がHIGHに相当し、その間に信号の強さとして細かく段階分けする事が出来る。
aruduino uno では、PWMに対応したピンとして、3・5・6・9・10・11の6箇所が用意されている。

練習:下記のサンプルプログラムを読み解いて、回路を作成し、結果を映像で記録・提出せよ。
【LED_PMW】

#define LED_PIN 9
void setup(){
 pinMode(LED_PIN, OUTPUT);
}

void loop() {
 int i;
 for (i=0; i<256; i++){
  analogWrite(LED_PIN, i);
  delay(20);
 }
}

課題1:下記の条件を満たす動作を映像で記録・提出せよ。
練習問題は「LEDはゆっくり点灯し、すぐに消える」 という物であった。
課題1では、
「LEDはゆっくり点灯し、ゆっくり消灯する」を繰り返す挙動を実現せよ。

課題2(上級編):下記の条件を満たす動作を映像で記録・提出せよ。
課題1の挙動を、2つのLEDで実現せよ。

ただし、LED1とLED2は点灯、消灯を互いに逆の状態で行う物とする。
※LED1が点灯していく時間で、LED2は消灯する。


生徒たちは2年生でJavaScriptを使ったプログラミングに関して学んでいるが、
「i++」などの記載については一切の指導をしていない。
自分たちで意味を調べながら作成していた。
ただ、50分という時間では流石に短かったようで、(それでも課題1は出来ていた!)
上級編を時間内で完成させる事は出来ていなかった。

しかし、休み時間に突入しても全ての班(!)が粘り強く挑戦し、
1つの班では実装に成功していた。
※第6回の最初に紹介したいと思う。

例によって今回提出された動画を掲載しておきます。
※今回は個人情報保護のため、音声を削除しています。

情報テクノロジー第4回 信号機を作れ

急遽、授業変更で行われた4回目。
私が学校に居ないタイミングで発生しましたので、
生徒にはGoogleのclassroom内で課題を用意して完全に自習状態。
が、割と出来てました。大変うれしく思います。

課題:信号機を作れ

【指示した内容】※原文そのままです

複数のLEDを光らすことは前回習得している。
今回は、LED3個(できればRGB三色)を使用して信号機を再現せよ。

※提出方法については前回同様のこと。
※クラスルームのテクノロジーに参加していない者は、余裕があれば参加しておくこと。


ここまで。
なんだかんだ、第3回ではそれぞれの制御についてなどで口を出してしまいましたが、今回は完全に投げっぱなし。
提出された物をまた2つ程ご紹介します。

※今回の音声には生徒名などがありませんので、試しに加工無しでUP


2つめは面白いミスをしています。意図的なのか、プログラム班と回路班の意思疎通に齟齬が発生してしまったのか。
当日は学校におりませんでしたので、次に会うのが楽しみです。