情報テクノロジー 第?回

今年はMicrobitを使って、共生社会やsociety5.0をテーマとしながら
「身体的な障害を持つ人でも、コミュニケーションが取れるデバイスを作ろう」 を行っていました。
※なんと今年は被験者・協力者もいます

ある班の、自作キーボードを使用したアイディアが大分形になってきたので、少し紹介したいと思います。
※自作キーボードとは、キーボードの形や、ボタンの個数、大きさ、ボタンの種類(EnterやA,B..)などを自由に作れるデバイスです

※なお、この版のアイディアはMicrobitでは限界を迎えたため、急遽別のマイコン(Pro micro)を使用することにしました。


【条件】
左半身しか動かない、喋る事が出来ない人に、コミュニケーションを可能とするデバイスを作る

【使用したもの】
自作キーボード:[shiro] https://yushakobo.jp/shop/shiro/
ソースコード(Ver0.1):https://github.com/asami-hoge/shiro_toggle/blob/master/keymap.c

まだ生徒達の葛藤は続いておりますが、一足先に出来栄えを載せておきたいと思います。
現時点での状況ですが、このあとどれくらいブラッシュアップできるのかが楽しみです。


※今回の取り組みを進める中で、自作キーボード界隈、特にこのキットを販売してくださった遊舎工房さん
また、私の知識不足を支えてくれ、ご指導いただきました Discord鯖 “Self-Made Keyboards in Japan” の
@s-showさん、@shelaさん、@hsgwさん、@takashiskiさん、@hyoshihara04さんに深く感謝申し上げます。

これから被験者の方と打ち合わせながら、より良いものへとPDCAを回しながら、生徒たちと取り組みたいと思います。
取り急ぎ、ご報告まで。

情報テクノロジー 作品紹介編 3~4

時間が空いてしまいました。
前回お伝えした通り、1学期の授業で出来たものを随時UPしていこうかと。
動画の提出(角度)に失敗していますが、まあ内容はわかるだろうという事で。


その3
「遮光センサーを利用して、暗い道などでは足元を照らす」 作品とのこと。
LEDの光量やセンサーの感度は特に気にしていません。
仕組みが出来ていればOKとしています。(構造理解・問題解決)


その4
「スイッチを押して人を呼ぶ」 作品とのこと。
「肢体不自由を始めとしたハンディキャップを抱えた人たちをターゲットに、IoTの側から目指す共生社会」(?)
私の中で確固たる説明が出来ていないのが問題ですが、なんにせよこのようなテーマで進めている内容なので、出来れば人感センサーとか、バリアフリーを目指して発展させてほしいと思わせる作品です。
どちらかというと、音にこだわっちゃったね・・・。いや問題ありませんけども!

情報テクノロジー 第11~14?回 1学期終わっちゃいました。(2)

引き続き、生徒たちの作品を紹介していきたいと思います。

続いては超音波センサー。
「目の見えない人が、何かに衝突する前に、音で知らせてくれる」ガジェットです。

今年のコンセプトは、
「肢体不自由など、特別支援を要する人をターゲットとしたガジェット開発」です。

距離や設置方法、その他いろいろと反省点は多いところですが、
PDCAのサイクル数によってはかなり良くなるんじゃないでしょうか?
期待しています。

情報テクノロジー 第11~14?回 1学期終わっちゃいました。

教育実習を始めとして、様々な諸事情により。
一切更新できずに一学期の内容を終えてしまいました・・・。
ナンテコッタイ。

せめて、生徒たちの作品を紹介していきたいと思います。(※あくまで紹介だけ)


1学期の成果物を提出せよ
「**センサー」を使って、「**を動かした」という成果物を提出せよ。


まずは「揺れたかどうかを視覚的に判断する」為のガジェットです。
まあ、言ったもん勝ちみたいなもんですが、昨今の情勢にマッチしたアイディアなんじゃないかなあと思っています。
よくよく見ると、画面に「揺れを検知しました」なんて出力してるあたりが細かいですね。

2学期からどのように発展するのか楽しみです。

情報テクノロジー 第10回 スイッチを使おう(3)完結編

最後のダメ押しで、
1.理解していて、発展課題に取り組む組
2.再度説明が必要で、復習課題に取り組む組

に分けて実施しました。次回からは少人数で、様々なテーマでPDCA回しながら開発をさせてみたいと思います。
※実はテーマとして、肢体不自由など特別支援系のユーザーにとって、使いやすいデバイス開発 という物があります。
※パラリンピックにも掛けさせて貰って、特別支援学校と連携しながら進めたいなって。形になったら持って行こうかと。

以下原文


スイッチ最終回です。
次回からは、更に小さな班(2名程度)に分かれて、課題をクリアしていきましょう。

【最終課題】
Step3.歩道などに設置されている、押しボタン式の信号を作ってみよう。

フロー(流れ)
 赤→ ボタンを押す → 青(10秒) → 青点滅(1秒間隔で3回) → 赤
————————————————————————————————————————————————-
提出物
完成したSTEPのソースコードの写真 と 映像
(STEP2も含めて提出しましょう)

※班員の番号を全員分、記載しておくこと。
————————————————————————————————————————————————-
参考資料

【前回のSTEP2:プログラムの場合】
void setup() {
pinMode(7,INPUT) ; //スイッチに接続ピンをデジタル入力に設定
pinMode(13,OUTPUT) ; //LEDに接続ピンをデジタル出力に設定
}

void loop() {
if (digitalRead(7) == HIGH) { //スイッチの状態を調べる

//スイッチON
//5回繰り返し
digitalWrite(13,HIGH) ; //LEDを点灯
delay(500)
digitalWrite(13,LOW) ; //LEDを消灯
delay(500)
//5回繰り返し
digitalWrite(13,HIGH) ; //LEDを点灯
delay(500)
digitalWrite(13,LOW) ; //LEDを消灯
delay(500)
} else {
//スイッチOFF

digitalWrite(13,LOW) ; //LEDを消灯
}
}


あえてForやWhileは使っていません。
自分達の知識で、どこまでたどり着けるのかをはかっています。
提出された物を適当にピックアップ。なんだかんだ、出来てますね。

情報テクノロジー第9回  スイッチを使おう(2)

第8回では授業展開に失敗し、イマイチ教育的効果というか、
「学んだ」という手応えにかけるので再度実施しました。ゴメンよ生徒。

前回同様に班を変えた上で、班員の一部だけではなく、
全員が理解して取り組めるよう解説を入れました。

以下原文


・スイッチの動作を理解しよう。
・プログラムの意味を理解しよう。

2つをあわせて、下記の動作を実現しよう。

Step2.スイッチを押したら、LEDを5秒点滅させよう。
 (押していないときは光っていても、消えていても良い)

Step3.歩道に設置されている、押しボタン式の信号を作ってみよう。
フロー(流れ)
 赤→ ボタンを押す → 青(10秒) → 青点滅(1秒間隔で3回) → 赤

提出物
完成したSTEPのソースコードの写真 と 映像

参考資料

【前回のSTEP1:プログラムの場合】
void setup() {
pinMode(2,INPUT) ; //スイッチに接続ピンをデジタル入力に設定
pinMode(13,OUTPUT) ; //LEDに接続ピンをデジタル出力に設定
}
void loop() {
if (digitalRead(2) == HIGH) { //スイッチの状態を調べる
digitalWrite(13,HIGH) ; //スイッチが押されているならLEDを点灯
} else {
digitalWrite(13,LOW) ; //スイッチが押されていないならLEDを消灯
}
}

【スイッチの動作説明】
※添付画像参照
 タクトスイッチは4本のリード線(端子)が出ていますが、写真の様に足が出ている側面の方向同し(3と4)がボタンを押した場合につながります。

 押していない状態では(1と3)(2と4)がつながっています。

※(1と2)または(3と4)はつながっていない。
※実質的には、押すと全て(1,2,3,4)がつながります。


添付画像は他サイトの物を引用しましたんで、ここでは省略致します。
今回は解説したせいか、全員がスイッチの仕組みとプログラムを理解した上で取り組めていたようです。
以下提出動画の一部。


この、大人目線では本当に些細な気遣いが、授業ではいかに重要なのかを再度痛感させられました・・・。
もう!失敗は!しないんだから!!!!!

情報テクノロジー第8回  スイッチを使おう(1)

再度、班をシャッフルさせ、全員の理解度を確認しました。
内容としては、タクトスイッチとLEDの物理的な連動と、プログラムでの制御です。

以下原文


Step1.スイッチを押している時だけ、LEDを光らせよう
(プログラムで制御しなくても良い)

Step2.スイッチを押したら、LEDを5秒点滅させよう。
 (押していないときは光っていても、消えていても良い)

提出物

Step1.2のソースコードの写真 と 映像
Step3まで行った班は、それも提出すること。

参考資料
http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/SWtoLED/SWtoLED.htm
http://www.seminar.aizu.or.jp/1-arduino-switch/
など


STEP1では、接点さえ理解できれば豆電球を光らせる小学校の実験と同一です。
STEP2への布石だったのですが、問題の出し方が悪かったようで・・・「全滅」

何と一時間をコレで無駄にしてしまいました。
最後までヒントを渋った私も悪いのですが・・・思いつけるように誘導してあげればよかった・・・。

終了時にネタばらしをしたら、こぞって休み時間で完成させておりました。
抵抗など一切使わない状態ですが、一応提出物を添付しておきます。

情報テクノロジー第7回 超音波センサーの理解

前回、超音波センサーを使ってみたわけですが、
いまいち理解度が要求水準まで来ていないようなので、今一度使ってみました。

どうせだったらと、今までの班をバラして今一度取り組ませたのですが、
やはり連携から始まると難しいみたいです。

また、ソースコードに対する理解もやはり不足している模様。

うーーーーーーん。

でもこの指導方法は続けたいとおもう。
(細かく教えないandわからない所は自分たちで調べるand困り切ってたら助けに入る)

例によってG-suiteの原文です。


超音波センサー 第2回
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【今日やる事】
課題1
距離がはかれている時に、LEDを光らせてみましょう

課題2
距離が一定数(50㎝とか)以上近付いた場合、LEDを光らせてみましょう

————————————-
【提出物】
課題1,2の動画と、ソースコードの画像を提出しましょう。


提出されたものがコチラ。
だいたいどの班もこんな感じで終わってしまいました。
今回の授業を自己採点するなら、ギリギリ30点ですかね・・・。
生徒たちには申し訳ないことをしました。

情報テクノロジー第6回 センサーを使ってみよう。

社情や情科も進んではいるんですが更新が追いつかず。
Webベースで授業すると自分でも振り返ったり、まとめるのが楽で良いなあ(本音
コレはおそらく生徒も一緒だと思います。

G-suite、なかなかどうして良いのでは!?


さて、第6回です。
今まではArduinoの使い方、出力の仕方、PWMについて、を学びましたので、
次は入力です。主に超音波センサーの信号を受信してみよう、という物でした。
例によって、課題をそのまま記載します。
サンプルコードは
http://deviceplus.jp/hobby/entry016/ さんの物を参考に一部加工したものです。


超音波センサーを使ってみよう。
【sensor】
#define trigPin 2
#define ehoPin 3

double Duration = 0; //受信した間隔
double Distance = 0; //距離
void setup() {
Serial.begin( 9600 );
pinMode( echoPin, INPUT );
pinMode( trigPin, OUTPUT );
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite( trigPin, HIGH ); //超音波を出力
delayMicroseconds( 10 ); //
digitalWrite( trigPin, LOW );
Duration = pulseIn( echoPin, HIGH ); //センサからの入力
if (Duration > 0) {
Duration = Duration/2; //往復距離を半分にする
Distance = Duration*340*100/1000000; // 音速を340m/sに設定
Serial.print(“Distance:”);
Serial.print(Distance);
Serial.println(” cm”);
}
delay(500);
}

まずは実装!!

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
課題1
距離が測定できている時に、LEDを光らせてみましょう

課題2
距離が一定数(50㎝とか)以上近付いた場合、LEDを光らせてみましょう


ここまででした。
今回はプログラム班と回路班を入れ替え、相互に教え合いながら作業させました。
※普段4~6名の各グループ内で役割分担をしている
※プログラムと回路それぞれ2~3人ずつの配置

流石に最初は難航し、お互いがお互いに思うようにいかずモヤモヤしていたようですが、15分もしたら完全に熱中して真剣に取り組んでおりました。

しかし、流石に時間ロスが大きく、課題1までが限界だったようです。
休み時間も使いましたが、課題2まで終わった班は皆無でした。
※まあ、IF文をきちんと復習していない所為でもある。

彼らが2年時に既習しているのはJavaScript,
今使っているのはC++。

そりゃあスンナリいかないよね。

でもいいんです。
色々ぶつかって、間違えに間違え尽くして、学習していただきたい。

なお、今回一番多く見られたミスは、
「pulseIn」のIが大文字ではなく小文字だったり、Lの小文字だったりしたことです。
私としてはコピペでも良いと言っているのに・・・。
まあでも、コレで次は間違えないね!

最後に例のごとく、提出された動画を載せておきます。
「距離が測れていると分かるように撮影しなさい」
と言いましたが、時間も無い中でなかなか難しかったようです。

うーん、撮影も惜しい!

情報テクノロジー第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回の最初に紹介したいと思う。

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