本日はメンバーが集まってオフィスで電気の勉強をしました。
ITと電気は密接に関係しています。
電気がないとパソコンも携帯も動きません。
例えば、IoTの分野ではIT企業としてはソフトウェアの部分を担当しますが
機械や電気等のハード的な知識も、基本的な事柄については理解をしておく必要があります。
全体を把握することで、クライアントの要求に対して最も良い解を導くことが出来る為です。
本当に必要な機能は、ハード的に解決すべきかソフト的に解決すべきか、状況に応じて判断しなければいけません。
入り口としては、arduinoを利用した簡単な電子工作です。
今更arduinoについての説明は不要かと思いますが、arduinoは電子回路初心者にもとっつきやすく、どちらかというとプログラムの占めるウェイトが大きい為、プログラマーにとっても分かりやすい教材です。
最も簡単なLチカ(プログラムにとってのHello Worldです)から始まり
小さな液晶ディスプレイへ、文字の表示までを行いました。
ここではマイコンとは何か、世の中とどう関連しているのか、そしてソフトウェアはどのように関連するのかを学びました。
コメントは手抜きしてますが、ソースと作った回路を公開します。
回路は写真では全体を把握出来ないと思いますが、ボタンを押している間、文字を表示するようなプログラムです。ちなみに液晶の右下にある光センサーは液晶の輝度を変化させる為に使用しています。
#include <LiquidCrystal.h>
LiquidCrystal lcd = LiquidCrystal(5, 6, 7, 8, 9, 10, 11);
const int BUTTON =2;
boolean state = false;
int val = 0;
short c=0x20; // 文字コード用の変数定義
int i=0;
int j=0;
void setup() {
lcd.begin(2,16);
lcd.clear();
lcd.print("Hello World!");
lcd.setCursor(3,1);
lcd.print("Let's Test!!");
delay(3000);
lcd.clear();
}
void loop() {
val = digitalRead(BUTTON);
if (val == HIGH) {
showDisplay();
}
if (c>0xff) {
c = 0x20;
}
}
void showDisplay() {
// LCDが持っている文字を表示
j = (i/16)%2;
lcd.setCursor(i%16,j); // 表示位置をセット
lcd.write(c); // 1文字表示
delay(100); // 100ミリ秒表示する
++i; // 表示カラム位置を更新
++c;
}
次に、そもそも電気とは何かについて、電磁気学科出身のメンバーから電気についての基本を教わりました。
発電所から家庭までの電気の流れの仕組みや、交流と直流の違いから始まり
磁場と電子の関係まで、結構複雑な内容ですが、大まかな内容はメンバーで共有できたと思います。
(量子力学的な分野の細かい話にも踏み込んだのですが、この辺りはちょっと難しかったですね^^;)
最初にも書いた通り、プログラマーにとっても電気や電子や機械や化学等、ちょっと畑が違うけど
関係なくも無い分野について、知識を深めることも大切です。
そして、何より知らない事を知るのは楽しいですよね。
自分と違う分野の知識を得る事で、何かヒラメキがあるかもしれません。

