Evernoteで週末のToDoを管理しても、ToDoが減らない

Evernoteで週末のToDoを管理しても、ToDoが減らない

週末にやりたいこと

ブログを、書くようになって、週末にやりたいことが増えてる気がします。ネタ探しという意味でも、ブログ生活の環境整備?という意味でも、色々雑用ややりたいことが増えてます。

備忘録にEvernoteが活躍

週末になると気が抜けてやりたいことをつい忘れてしまいます。そうならないように、備忘録としてEvernoteというクラウドのノートサービスが活躍しています。以前の記事でも書きましたが、Evernoteは、セキュリティもバッチリなので気に入っています。

Evernoteのセキュリティ対策がヤバい

そこに、週末にしたいことが思いついたら、つらつらと書くようにしています。Androidのアプリもありますので、スマホでささっと入力しておきます。

いくつか備忘録から

その一覧からいくつかピックアップして最近やりたいことを説明したいと思います。

そのうちこのブログに詳細記事として登場するかも知れません。

ブログのサーバーを乗り換える

色々訳あって、このブログのサーバーを乗り換えたいと思ってます。乗り換える為の引っ越しの方法を検討しないといけません。Azureを使おうかなと思っていますが、もう少し検討したいところ。

Alexaを日本語化する

うちには、Amazon Echoがあります。最近はテレビでCMなどもやっていますのでご存知の方も多いかと思います。

スピーカーなのですが、アレクサ、と話しかけると色々やってくれます。音楽をインターネット経由でかけてくれたり、ネットにつながった電球をつけたり、消したりしてくれます。

しかし、うちのアレクサ、まだ日本で売ってない時にアメリカで買ったものなので、英語しか話せません。今は日本で発売されてるので、日本語化して使いたいので、その作業をしたいです。

うちにいるのは第1世代ですね。

Echo Plus (エコープラス) 第1世代 – スマートスピーカー with Alexa、ブラック

最近は、第2世代なのですね。

Echo (エコー) 第2世代 – スマートスピーカー with Alexa、チャコール

テレビCM

Ichigojamの工作

Ichigojamというのは、子供の学習用のパソコンです。これを使ったもので、ちょっと試したいアイデアがいくつかあります。先日、工作のネタの記事を書いたところ、結構反響がありましたので、別なネタでまた投稿しようと思っています。

IchigoJamの7セグLEDタイマーで16進数を学ぼう!

次のアイディアは、まだ練られていので、考えるところが週末にやりたい事です。

IchigoJam 組み立て済完成品 S

などなど。

でも、週末に時間が取れない上に、リストだけは大きくなっていってしまうので、困っています(笑)

IchigoJamの7セグLEDタイマーで16進数を学ぼう!

IchigoJamの7セグLEDタイマーで16進数を学ぼう!

7セグLEDとは?

IchigoJamは、プログラミング学習用の手のひらパソコンです。手のひらサイズの小さな基板でBASICのプログラミングの学習ができるすぐれものです。本日は、この手のひらパソコンに「7セグLED」をつないで、16進数の学習をしてみたいと思います。

「7セグLED」をというのは、7つのLEDがひとつのボックスに格納された電子部品です。7つあるLEDのうちどれとどれを光らせるかで、0〜9までの数字や、ABCDEFくらいまでのアルファベットを表現できる、便利な表示装置です。コンピュータが動き出した頃の初期には、いや、コンピューター以前の歴史があるかも知れません。このたった7つの独立した部品をそれぞれ個別に光らせることで、数字を表現しようなどと考えた人は、賢い人ですね。

写真では、7個の縦棒・横棒の他に右下に丸いポッチがありまして、ここも個別に光らせることができます。ですので、8個のLEDが付いていることになります。が、なぜか、7セグLEDって言います、この部品。

この「8」という数字。コンピュータの内部を語る上では、マジックワード。神秘の数字なのです。

例えば、この表示装置で、”4″という文字を表現するには、下の図で、OUT4, OUT3, OUT6, OUT5に示したLEDを光らせればいい訳です。

7セグLED PARA LIGHT C-551SRD
本日、学習に使用する7セグLED
7セグLEDで”4”を表現する
7セグLEDで”4″を表現

IchigoJamに電子部品をつなぐ

部品をつなぐには、ブレッドボードってのを使ってみました。そこに部品を並べます。IchigoJamと、LEDの間には適当に抵抗を噛ませています。

ポイントは、結線ですね。

IchigoJamの端子の仕様を見てみましょう。国野亘(Wataru KUNINO)さんという方がわかりやすいピン配置の説明をしてくださっていますので、こちらを参考にします。

IchigoJamのピン配列表

OUT端子やIN端子は設定によって、入出力の方向も変えることができますが、今回は、7個のLEDを光らせるだけなので、OUT1からOUT7を使います。

OUT7は基板に付いている赤い小さなLEDを光らるピンと共用のようです。なので、キーボードから以下のように打つと、基板のLEDが光りますが、この時、OUT7のピンもONになります。

LED 1

さて、OUT1〜OUT7をLEDにつなぐときは、どのようにつないでも構いません。後程算出する、16進数の”表示用コード”が変わってくるだけです。

つなぎ方が違っても、ソフトで光らせるパターンを簡単に変更ができる、というのはひとつのポイントです。

昔の人は「ハードウェア」、「ソフトウェア」と旨い事言ったものです。

今回はブレッドボードなので結線を間違えてもすぐに抜き差しして、入れ替えることができます。でも、本物の電気製品であれば、ハンダゴテ(古い!)で7セグLEDを本体とつないでしまいますよね。そうすると結線自体はすぐに変更できないから、ハードウェア(固い。すぐに変えられないってこと)と呼びます。一方、結線を間違えても、後でプログラムで数字を変更できます。光らせるLEDの組み合わせを後からいくらでも変更可能。これがソフトウェア(柔らかい。すぐに変えられるってこと)の仕事。

という訳で、私は、以下の図のように適当に結線してしまいました。

7_seg_ledとIchigoJamの結線
LEDのそれぞれをIchigoJamのどのOUT端子につないだかを示す

LEDをIchigoJam BASIC言語で光らせるには

IchigoJam BASICには、”OUT”というコマンドが用意されています。

OUT 数字1, 数字2

のように使います。例えば、私の場合、OUT3は真ん中の横線なので、”OUT 3,1″ で光り、”OUT 3,0″で消えます。

IchigoJamで7セグLEDの一つを表示
IchigoJamで7セグLEDの一つを表示。 OUT 3,1 を実行

これで、一つ一つのLEDをOn,Offすればいいので、OUT ○,1 とか OUT ○, 0を複数個並べて書けば、ご希望の文字を表示することができることがわかりました。

例えば、私の場合、先の”4″の表示であったように、OUT3, OUT4, OUT5, OUT6を光らせればいいので、

OUT 3,1

OUT 4,1

OUT 5,1

OUT 6,1

と、順番に実行すれば、”4″が表示されます。めでたしめでたし。

いえ、そうではありません。”4”という一つの文字を表示するのに4行もプログラムを書かないとならないのは、格好が悪いです。

複数のLEDを一発で光らせる方法

OUT 0と実行すると今まで光っていたものがすべて消えます。さっきの例だと、LEDがつながっているピンを指定して、例えば、OUT3につながっているLEDを消したい場合は、”OUT 3,0″としないと消せないのかと思います。

実は、OUTコマンドは、数字一つだけ指定して実行することができます。

OUT 3

と実行してみましょう。

あれ?LEDが2つ点灯します。一体、何が起こっているのでしょうか??

まずは”2進数”の登場

OUTコマンドは、数字が一つだけ指定すると、OUT1〜8のピンがONになる「組み合わせ」を指定していることになります。例えば、OUTの1と2をOn(光らせる)したい場合は、以下のようなオレンジ色の部分がを示したいと思います。

端子の番号

この図をちょっと数字で表してみます。一番の8の桁が0、つぎの7の桁も0、。。。2の桁が1、1の桁が1になっていればよいので、

00000011

という数字で表現できます。これがOUT端子の”2進数”表現という事になります。実は、これ、普通お金の計算などで使う数字でいうと3になります。10進数でいうと”3″です。

2進数は、0と1だけで表現された数字なので、

00000001=1

00000010=2

00000011=3

という感じになります(=の後が10進数の表現)。

なので、先ほどOUT 3というコマンドを実行すると、OUT1とOUT2の端子につながった、”2つ”のLEDが光った、ということになります。

では、”OUT 0″というコマンドは何を意味していたのでしょう?

これは2進数で言うと、

00000000

という番号を指定したことになります。つまり、ONになるLEDはひとつもない状態にしろ、ということで、7セグLEDのすべてのLEDが消灯する結果になります。

IchigoJam BASICでは、2進数は、”`”とい記号とを数字の前につけることで、表現します。

OUT `00000011

とコマンドを実行すると、OUT1とOUT2の端子につながった、2つのLEDが同時に点灯します。

一番最初の”4″を表示するためには、私の結線方法だと、OUT6,OUT5,OUT4,OUT3につながったLEDを同時に光らせればいいので、以下のパターンとなります。

7セグLEDで4を表示するパターン.png

オレンジ色のところを1にした2進数表現は00111100なので、以下のコマンドを実行するとめでたく、文字”4″が現れることになります。

OUT `00111100

いよいよ”16進数”の登場

16進数というのは、1,2,3,4,…と続いて、16個目の数字でひと桁、繰り上がるような数の表現方法です。でも、残念ながら数字は9までしかないので、9以降は、A,B,C,D,E,Fの6文字を使って表現するものです。

これが2進数と非常に相性がよく、順番にリストにしてみますと、以下のように4桁の0,1の2進数が、ちょうど16進数の1桁分に相当します。

2進数と16進数

ですので、8桁の2進数があれば、単純に、機械的に、2桁の16進数にマッピングすることができます。ちょっとやってみましょう。

先ほど、

OUT `00111100

は7セグLEDで”4″を表示させるためのコマンドでした。では、この2進数を、上位4桁と下位4桁に分けて、それぞれ上のテーブルの16進数で置き換えます。つまり、上位4桁0011→ 3、下位4桁1100→C。なので、16進数は3Cになります。

OUT #3C

は、先ほど同様、7セグLEDで”4″を表現させることができます。IchigoJam BASICの場合、16進数は頭に#記号を付けます。

さて、同様に、7セグLEDで表示させるパターンを16進数のコードで表してみましょう。わかりやすいように表にしてみました。

IchigoJamで7セグLEDを表示させるパターン
IchigoJamに送る16進数の表示用コードを計算する

例えば、私の結線では、7セグLEDで数字の”7”を光らせる為に光って欲しいのは、OUT7端子, OUT6端子, OUT5端子, OUT4端子につながったLEDです。上記の表で求めたように、16進数の表現で言うと#78です。従って、OUT #78というコマンドを実行すると、7セグLEDで”7″が現れます。

つまり、この表の、「基板に送る16進数」という列に書かれている#〇〇の16進数が、7セグLEDをどう光らせるかを表す「表示用のコード」になります。

先ほど、結線をするときに、どの端子にどのLEDをつなぐかは適当でいい、と言いました。要は、実際の結線に合せて、この表示用のコードを作りなおせば、どんな結線にしておいてもソフトを書き換えれば表示可能なのです。この柔軟性こそ、まさにソフトウェア。プログラミングで実現することなのです。

やっと、ここからプログラミングする

さて、以上が下準備です。ここからが本当のプログラミングです。

IchigoJam BASICには「配列」という変数の列が使えます。配列に入っている数字は、例えば、以下のように読み出せます。

PRINT [5]

これで、配列の5番目に入っている値が、IchigoJamの画面に表示されます。

配列に先ほどの16進数コードを、0から順番に入れておくと、例えば、先ほど表示の”7″をLEDで表現したい場合は、#78を基板に送ればいいことを説明しました(OUT #78を実行)。配列の7番目に、#78を入れておくことで、プログラムはこんな風に書けます。

OUT [7]

16進数の難しい表示コードを覚えていなくても、これならLEDに7を表示する事が一目瞭然です。わかりやすいです。ソフトウェアって素晴らしいです。

これが出来るようにするために、プログラムの最初に配列を”初期化”して置きます。以下のコードをプログラムの一番最初に実行します。

10 LET[0],#7B,#30,#67,#76,#3C,#5E,#5F,#78,#7F,#7C

最初の10はプログラムの行番号です。

RUN

と実行すると。それ以降、

OUT [7]

を打てば、7セグLEDに”7″が現れ、

OUT [3]

と打てば、7セグLEDに”3″が現れます。便利便利。


さて、ここでプログラムの初心者が混乱します。

OUT 0

と打つことと、

OUT [0]

と打つことの違いがわからなくなります。わかりますか?わかった人は混乱していない人です。

OUT 0はLEDを全部消すこと、OUT [0]は配列0番目の値を基板に送ることなので、配列の0番目に入っている#7Bを送ること、つまり LEDで “0”という文字を表示することです。

タイマーのプログラムを作る

タイマーと言ってもひとけたの数字しか表現できないので、1秒毎に数字がカウントアップして9まで言ったらゼロに戻るようなプログラムです。

Screenshot from 2018-10-07 18-13-30

For文で、0から9まで回して、OUT [I]でその数字の16進数コードを7セグLEDに送ります。

それをGotoでぐるぐる回すだけ。ほんとにそれだけです笑。

以上です。


電子工作ランキング

IchigoJam第一歩。EasierCAPビデオキャプチャで画面表示

IchigoJam第一歩。EasierCAPビデオキャプチャで画面表示

IchigoJamでプログラミング

数年前、当時小学生だった娘の夏休みの宿題に購入したIchigoJamという子供向けパソコンをまた動かしてみました。小学生のプログラミング教育の必須化を目の前に、MBAのクラスメートなどで、私の職業柄、プログラミングの先生をやったらどうかと言ってくる人がけっこういます。

最近のプログラミング学習って、ScratchみたいなGUIでプログラミングツールでお絵かきのようにするものが流行りです。コンピュータを動かす仕組みとしてのプログラミングの概念を勉強するのに、このようなツールは有効です。でも、私が思っているプログラミングとは結構違います。

私が子供の頃(30年くらい前)は、プログラミングといえば、キーボードからテキストを打ち込んで呪文のような文章をつらつらと書き上げて「RUN」と実行するようなもの。モニターも黒背景に白の文字とか緑の文字がつらつらと表示されるような代物でした。テキストを打ち込むだけなので、マウスなんてものはありません。当時はBASICというプログラミング言語が流行っていました。

IchigoJamは、そのBASICを学べる、子供の学習用の小さなコンピューターです。

Micro USBで電源を取り、キーボードを繋ぎ、モニターとしてビデオ端子のついたテレビに繋いで使います。

IchigoJamをパソコンにつなぐ
IchigoJamという小学生の学習向けコンピューター

パソコン画面に表示する為にEasierCAP購入

ビデオ端子付きテレビ、というのが曲者です。WindowsとかLinuxとか普通のパソコンにつなぐモニターはアナログのビデオ端子などはついていません。今時は4Kテレビなどでもついていないものが出てきているのではないでしょうか。

以前は、VHSの録画機とか、ビデオカメラなどでも普通についていた黄色のビデオ端子は、もはや過去の遺産になりつつあるのです。

わざわざ大画面テレビにしょぼいBASICのプログラミング画面を表示するのもナンセンス。そこで考えたのが、パソコン用のビデオキャプチャ。私は自宅ではLinux (Ubuntu 16.04)を使用しています。Linuxでも使えるビデオキャプチャを探してみました。

購入したのは、こちらの商品。Amazonで1,200円でした。


MINGCHANG EasierCap USB 2.0 dc60テレビDVD VHSビデオ S端子 キャプチャアダプタUSBビデオキャプチャ レコーディングアダプタAVI/JPG/BMP

 

 

 

USBポートにさして、黄色の端子にIchigoJamの出力を繋げば、WindowsとかLinuxなどのOSの上で、IchigoJamが使えます。

似たような商品はピンキリで色々あります。この商品は、EasyCapという商品がオリジナルであったようですが、その後海賊版が出まわり、もう何が本家なのだかわからない状態。Linuxで動くのだかどうだかもわかりませんでしたが、安いのでダメ元で購入してみました。

表示はVLC メディアプレーヤーで

EasierCapをUbuntuの本体に差し込むと、/dev/video0とか/dev/video1とか、というデバイスとして勝手に認識されました(抜き差ししたら名前が変わったよう)。

画面表示をするには、VLCメディアプレーヤーが便利そうです。

「メディア」メニューから、「キャプチャーデバイスを開く」を選択します。

VLC「メディア」メニューから「キャプチャーデバイスを開く」を選択
VLC「メディア」メニューから「キャプチャーデバイスを開く」を選択

表示されるダイアログボックスで、ビデオデバイス名のプルダウンメニューから所定のデバイスを選択します。EasierCAPが刺さって正しく認識すればここに/dev/video*というの表示され、選べるようになります。(*の部分は数字が来ますが、環境によって異なると思います)

Vlc キャプチャーデバイスの選択画面

「再生」を押すと、表示が始まります。こんな感じ。

IchigoJamをVLCで表示
IchigoJamをVLCで表示

早速BASICでプログラミング

早速BASICでプログラミングしました。上の画面キャプチャで表示されているプログラムは、IchigoJamの本体についた赤いLEDを10回点滅させるものです。

10行: 変数Aに1を代入

20行:もしAが10より大きくなったらプログラムを終了

30行:LED 1で表示

35行:30フレーム待つ。IchigoJamは60フレームで1秒なので、ここでは、0.5秒待つということになります。

40行:消す

45行:また0.5秒まつ

50行: Aに1を足す

60行: 20行目に戻る。50行に来るたびにAがひとつ増えるので、20行の実行は10回目にプログラム終了します。

で、RUNとキーボードで打って、「Enter」キーを押しますと。LEDがピカピカ光ります。

IchigoJamの画面を「レコーディング」してみました

VLCなら画面の「レコーディング」もできてしまいました。

VLCで表示しながら、レコーディングボタンを押すと、Ubuntuだと、ユーザの「Video」フォルダにaviファイルが作成されます。

 

 

電子工作ランキング