情報テクノロジー第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つめは面白いミスをしています。意図的なのか、プログラム班と回路班の意思疎通に齟齬が発生してしまったのか。
当日は学校におりませんでしたので、次に会うのが楽しみです。

情報テクノロジー第3回 複数のLEDを点滅させよ

今回からG-suiteのClassroomを利用して作業の効率化や定着を図る。
前回は抵抗を使わずにLEDをダメにしてしまうこともあったので、抵抗は使ってね、と指示を出す。
ただし抵抗の種類は用意せず、応用の利く種類を1つ用意して余計な悩みを除去しておく。

課題「複数のLEDを点滅させよ。」

【指示した内容】
手法は問わない。
1.500msecの感覚で2つ以上のLEDを点滅させなさい。
//プログラム班:Google等で、Arduino LED点滅 などで検索すればソースコードは出てくる。
//回路班:プログラム班が指定したPINで点滅するように配線しなさい。 また、今回より「抵抗を使用」すること。

2.その様子を代表者1名がアップロードせよ。
//スマートフォンで撮影し(5~10秒程度)、アップロード。難しいようであれば、動画撮影のみでもよい。
(次回以降、直接見ます。)
※アップロード時には、何班の動画なのかわかるようにコメントをつけること。

評価基準(レベル):
1.複数のLEDを点滅させている
2.LEDを独立制御しているとわかる回路
3.LEDを独立制御しているとわかるプログラム
4.動画提出時に、上記の要素をわかりやすく判断できる工夫

※「何班」なのかわかるようにアップロードしている事。


で、出てきた動画がこちら。(※生徒の声が入っておりますので、音声を消しています)

投げっぱなしでも割と完成で来ているのかな、と思います。
いくら情報コースの3年とはいえ、新しい言語、新しいハードで、特に何も教えることなく自分たちで調べて作ってますからね。
50分授業ですので、あまり悩むようであれば助けに入りますが、教えたいのをグッと我慢しながら彼らを見守りたいと思います。

情報テクノロジー第2回 LEDを点滅させよ

俗にいう、Lチカです。
テクノロジー選択者は今年度13名でしたので、最初は4,4,5の3班に別れて取り組ませています。

さらに班の中でも、プログラム班と回路班に分かれ、前者はC++を基にしたArduino言語について、後者はブレッドボードや抵抗などについて学んでいます。
暫くして活動に慣れだしたら、役割を反転させ、その後班も作り直したり、などを行いますが。3~4回目まではチュートリアルみたいなもんですね。

【指示した内容】

プログラム班へ
1.setupとloopの仕組みについて説明
2.pinMode,digitalwriteについて説明
3.delayについて説明

あとは点滅できるように頑張れ。必要ならググれ。プログラムの勉強ではない(あくまで活用がメイン)ので、コピペ推薦。
むしろどんどんコピペして、効率を出せ。試行錯誤を繰り返せ。 

回路班へ
1.+と-について簡単に説明
2.GNDについて説明
3.ブレッドボードの仕組みについて説明

LEDは消耗品だからどんどん壊せ。壊れたらゴミ箱に捨ててね。
抵抗や回路なんかはググれ。LEDの向き(アノード、カソード)はこうね。
煙吹きそうな時は止めます。USB電源からとってれば大抵は問題ないけど、危ないって言われたらすぐにやめてね。
じゃあ、GANBARE。

全体宛
班員で協力しよう。時間に暇が出来た人は、次の作業を考えて調べておこう。
例えば、ArduinoとPCの接続方法とかね。 「Arduino LED 点滅」なんかで調べればいっぱい出てくるんだから
時間内に終わることを目標に頑張ろう。 さあ始め!

荒っぽく見えますが、実際にこのような内容で指示をしています。
※(乱文にはなっています。実際の口調はもう少し丁寧です)

情報テクノロジー第1回

私の勤務する高校では、全日制、普通科、「情報コース」が設けられていて、3年生では情報テクノロジーを選択制で開講している。
なお、情報科の中でもマイナーであろう教科なので説明しておくと、学習指導要領には
情報産業を支える情報テクノロジーの基礎的な知識と技術を習得させ,実際に活用する能力と態度を育てる。と、記載されている。

指導要領にもあるが、情報テクノロジーでは「(1)ハードウェア,(2)ソフトウェア,(3)情報システム」の内容を取り扱い、
「指導に当たっては,学校や生徒の実態に応じて,適切な情報技術を選択し,実習を中心にして扱うこと。」
および
「指導に当たっては,具体的な事例を通して,情報技術の歴史的な変遷及び国際標準や業界標準となっている技術について扱うこと。」が重要視されている。

さて、具体的な内容。
以前は1学期にハードウェア、2学期にソフトウェア、3学期に情報システムを指導していたが、2年目には当時の校長をはじめ様々な所と相談し、現在私は通年でArduinoを教材とした指導を行っている。
つまり、Arduinoという組込系ハードウェアに、C++風のArduino言語(ごくごくまれにS4Aを使用するが、生徒もArduino言語の方が扱いやすいようだ)、そして利用していく中で通信の仕組みやプロトコルに触れている。

とまあ、そのような解説をして第1回目を終えた。
2回目以降はガリガリとコーディングさせ、試行錯誤させ、最終的には課題とPDCAぶん回しでやりたい放題やるんだ!!!!!!!