なでしこ、ユーザーさんにも、やさしい電子工作会のレポート。
先日、11月25日に、南港で電子工作の勉強会を実施しました。
IoTと言うキーワードに絡んでいる工作ならば、何を創作しても良いと言うゆるい工作会です。
参加者は、私AIを含め、4名で、全員が、粗、初心者と言って良いでしょう。
何故、工作系の勉強会を、自身で開くことになったか?
私は、マイコン教室に数回通ってみて、思ったことは、
『オームの法則使って』
と言う先生の言葉と、私が知っているオームの法則が別次元の物なのです。
平たく言えば、計算式が頭にあっても、何に使うのかどう使うのか?
実際に電子パーツで基板上でやってみると、全く手が動かせなかったのです。
恥を忍んで、なんとか、オーム法則を現実世界で使えるようになりました(笑
このような事が、以降も、次々に起こりました。
その都度、解ったふりをするか、お手上げですと白旗を振って、
講師の方の話をイチイチ止めべきか、その判断さえも難しいのです^^;
なるほど、Lチカやって、電子工作からオサラバって人が多い理由も解ったような気がしました。
私も、Lチカやりたいわけでも無いし、ここまででもサッパリ解らないのに、
次回も参加するべきだろうか?などと思っていたひとりです。
そこで、初心者同士ならば、抵抗なく、
お互いの疑問を口に出し、マイペースで勉強が薦められるのでは
無いかと言う発想から、集まりを企画しました。
電子工作を習う以前の勉強会です。
励まし合ったり、解ったことをその場で出力し教え合ったり、
モチベーション維持や独学効率化のための、ゆるい会です。
これ以前も、2回ほど、小さな、勉強会を行なっていましたが、
なんと今回は、チャットから知り合った、新人さんや、なでしこのベテランユーザーさんにも参加頂けました。
なでしこユーザーさんは、流石は、プログラマーさんです。
サクッと初級問題をこなして、残りの時間で、
123DCircuitと言う、WEBアプリ回路シュミレーターで、赤外線通信の基礎的な部分の回路を
自力で、サクッと作ってしまいました。
次の段階でやるべき、赤外線通信回路の、マイコン制御は流石に、
時間が足りず、次回の課題と言うことになったようですが、恐るべき、想定外のハイペースです。
逆に、赤外線通信難しいだろうなと手を出して無かった私にも勇気を頂くことが出来ました。
サクッと、出来るかどうかは別ですが・・・。
他の方は、ドローンに興味があるようで、初めての方からは、ドローンを飛ばすのに、なぜ、LED点灯を
するの?と言う疑問が聴こえてきました。
実は、この質問に、一言で返すことは至難の業です、
相手がプログラマーさんならば、Hello Worldですよと言ってしまえば楽なんですが・・・。
でも、なんと答えればよいのでしょうかね〜。解る方、是非遊びにいらして下さい。
Lチカは、全てに共通する基礎の通過点ですよ。
と、答えましたが、恐らく納得はされてませんでしたね〜。
なんでLチカ?なんでLチカ?そんなことが頭を過ぎっていたでしょう。
私自身は、会場のプリンターの設定と戦って個人課題ススメられませんでしたが、
残りのみなさんは、作業をススメて、マイコンを使わないでのLEDの点灯は、みなさんclearです。
次回の共通課題部分は、マイコンを使った場合と、使わない場合のLED点滅を行う予定です。
それを、比較してもらうことで、非プログラマーさんにも、マイコンがどういうのもか、理解いただけるのでは無いかと思います。
もちろん、この会では共通課題をクリアすれば後は自由です。
サクッと共通課題を数分で終わって、どんどんと先に進んで貰えばそれに
越したことがありません、ペースは問わないのでお好きなように!
ちなみに、私の個人課題は、簡易的な使い勝手の良い、3Dプリンターをつくることと、
なでしこを使ってマイコンを制御をお手軽にすることです。
開発環境をなでしこでつくる、
なでしこ文法をマイコンプログラムにコンバートしたり、コンパイルする。
まだ、最終的に有効な手段を模索中です。
やはり、マイコンプログラミングが、なでしこのプログラミングのように、
サクッとつくれるようになれば、電子デバイスの敷居がもっと低く、身近になる筈です。
今のペースで行くと、いつになるやらですが、ご興味のある方は、是非、遊びに来てください。
参加希望、お問い合わせは、メール
mediatec22あっとまーくmsn.com
AIまで、ご連絡をお待ちしております♪
追記
工作会は、参加者全員での、自主運営方式なので、
各自にあった若干のお手伝い作業をお願いしております。
基本的には、完全独学方式+助け合いとなりますが、講師的な人が居ることも稀にあります。
初心者向けに講師して下さるかたは大歓迎です。
平日開催の場合は、無料会場を使わせてもらうので、
掛かる費用は、今のところ当日、レンタルするパーツなどの購入費用、200円程度で、参加頂いてます。
※持ってきて頂く物は、ノートパソコン、筆記用具程度です。
【10行プログラミング】数当てゲーム
最近はAndroid使う機会が増えWindows触る機会が減った。
それに比例してなでしこでプログラミングする機会も減ってしまいました。
Javaを少しやるとなでしこの有り難味がよく解る。
10行でゲームが書けてしまうなでしこはやっぱり凄いと改めて痛感。
母艦=`数当ゲーム`。窓とはエディタ。H=0。Dとは整数。 Aとは配列=(`0123456789`を文字列分解して配列シャッフル)。 窓のキー押した時は〜 (窓の押された仮想キー=13)ならば、 T=窓を`%.4d`で形式指定。B=T。 4回、I=回数-1。D=A[I]。B=BのDを`★`に置換。 (Tを文字列分解してそれ[I]=D)ならば、H=H+1。 B=Bで`★`の出現回数-H。窓=``。 (H=4)ならば、`正解`と言って終わる。 T&タブ&H&`個当たり`&B&`個惜しい`と表示。H=0。B=0。
4桁の数字をヒントを元に当てるヒットアンドブローゲームです。
遊び方、
(重複しない)4桁の数値を入力します。
当たりの数は、数字の場所が合っている数です。
惜しいの数は、場所の並びが違う数字の数です。
4つの数字を当てると正解と表示されゲームクリアとなります。
5,6回くらいの入力で当てれば上級者です。
コードについて、
コードは10行で収める為に解り辛くなってすみません。
形式指定している部分は、エディタ部品に入力した先頭の0が潰れてしまうため
苦肉の策です。
インデントは、トリッキーになってますが、動けばよいと言うことで。
その他、
なでしこのTCP関連やメール送受信関連などを使って改造すれば、対戦オンラインゲームにもなる。
もっと簡単にオンライン対戦化するならば、DropBox等で回答のテキストを共有すると言う手もある。それならば、あと10行程度書き足せばできそう。
忘れな草をなでしこでハックしてみる
NHKの番組テストの花道で
「もう忘れない! 中高生からの記憶法」と言う回で面白い記憶法が紹介されてました。
植物の忘れな草の図形をうまくつかっています。
なかなか、理に適ったよさそうな方法です。
早速、簡単な活用アプリを作ってみました。
どうせならば、
"なでしこの絵を図形にしてとも考えましたが絵を描くのが面倒"
だったので、
NHKのサイトに忘れな草の図のダウンロードがあったのでそのまま使わせてもらいました。
アプリの起動には二枚の画像が必要になります。
http://www.nhk.or.jp/hanamichi/p2013/130506.html
ここから、以下の画像を2枚をダウンロードして、
http://www.nhk.or.jp/hanamichi/ref/p2013/130506_dl_1.jpg
http://www.nhk.or.jp/hanamichi/ref/p2013/130506_dl_2.jpg
それを、以下のコードを保存したフォルダと同じ階層にコピーして準備完了です。
詳しい使い方は記事の最後を見てください。
尚、
なでしこを知らない方は"日本語プログラミング言語なでしこ"で検索してみてください
このようなアプリが1時間程度でも作れてしまう凄い言語です。
母艦=`わすれなさそう` 母艦のX=デスクトップX。母艦のY=デスクトップY+20。母艦のW=1200。母艦のH=900。 忘れな草とは忘れな草図。 忘れな草の画像=母艦パス&`130506_dl_1.jpg` 描方画像=母艦パス&`130506_dl_2.jpg` 保存用写真とはイメージ。これについて可視=オフ。 『#親部品名,部品名,テキスト,ショートカット,オプション,イベント なし,ファイルメニュー,ファイル(&F),,, -,キャプチャ,画像保存(&P),F5,,画像キャプチャ保存 -,-,,,, -,閉じるメニュー,閉じる(&C),Alt+F4,,終わる なし,ヘルプメニュー,ヘルプ(&H),,, -,描き方メニュー,わすれな草の書き方(&P),F1,,描方画像を起動』をメニュー一括作成。 ●画像キャプチャ保存〜 忘草ラベル[0]がグループ判定でなければ、`保存する前に最低一つ以上のラベルを作成してください`と言って戻る パスとは文字列=母艦パス&`わすれなそうイメージ\` パスが存在でなければ、パスへフォルダ作成 Fとは文字列=(母艦パス&`わすれなそうイメージ\`&忘草ラベル[0]→テキスト&`.jpg`) 保存用写真へ(母艦のタイトル)を窓内側キャプチャ 保存用写真をFへ画像保存 F&` へ保存しました`と言う F&`を起動しますか`と二択ならば、Fを起動。 ■忘れな草図 +イメージ ・{非公開}ラベルインデックス{=0} ・{非公開}編集中ラベルOBJ ・{非公開}編集処理 ・{非公開}色選択値 ・作る〜 オブジェクト=VCL_CREATE(自身,名前,VCL_GUI_IMAGE) 自身を自分にグループ参照コピー 忘草入力窓をエディタとして作成する 忘草入力窓→可視=オフ 忘草入力窓→IME=`IMEオン|かな` 忘草入力窓→W=200 忘草入力窓→キー押した時は〜 (忘草入力窓→押された仮想キー=27)ならば、 忘草入力窓→テキスト=`` 忘草入力窓→可視=オフ (忘草入力窓→押された仮想キー=13)ならば、忘草窓入力反映へ 忘草文字プロパティ入力入力艦をフォームとして作成する 忘草文字プロパティ入力入力艦→スタイル=`枠なし` 忘草文字プロパティ色ラベルをパネルとして作成する 忘草文字プロパティサイズスピンをスピンエディタとして作成する 忘草文字プロパティ完了ボタンをボタンとして作成する 忘草文字プロパティ色ラベル→親部品=忘草文字プロパティ入力入力艦 忘草文字プロパティサイズスピン→親部品=忘草文字プロパティ入力入力艦 忘草文字プロパティ完了ボタン→親部品=忘草文字プロパティ入力入力艦 忘草文字プロパティ入力入力艦→H=140 忘草文字プロパティ入力入力艦→W=120 忘草文字プロパティ色ラベル→文字色=白色 忘草文字プロパティ色ラベル→テキスト=`テキストカラー` 忘草文字プロパティ色ラベル→背景色=黒色 忘草文字プロパティ色ラベル→レイアウト=`上` 忘草文字プロパティ色ラベル→H=50 忘草文字プロパティ色ラベル→クリックした時は〜文字色切替へ 忘草文字プロパティサイズスピン→レイアウト=`全体` 忘草文字プロパティサイズスピン→文字サイズ=24 忘草文字プロパティサイズスピン→最小値=8 忘草文字プロパティサイズスピン→最大値=50 忘草文字プロパティサイズスピン→変更した時は〜 編集中OBJ→文字サイズ=忘草文字プロパティサイズスピン→テキスト 編集中OBJ→テキスト=編集中OBJ→テキスト 忘草文字プロパティ完了ボタン→レイアウト=`下` 忘草文字プロパティ完了ボタン→テキスト=` 入 力 完 了 ` 忘草文字プロパティ完了ボタン→H=50 忘草文字プロパティ完了ボタン→クリックした時は〜 忘草文字プロパティ入力入力艦→閉じる ・文字色切替〜 Aとは配列=`0,16711680,255,65280,16711935,65535`を`,`で区切る 自分→色選択値=自分→色選択値+1 忘草文字プロパティ色ラベル→背景色=A[自分→色選択値] 編集中OBJ→文字色=A[自分→色選択値] (自分→色選択値>5)ならば、自分→色選択値=-1 ・忘草窓入力反映〜 忘草入力窓→可視=オフ 自分→編集処理でなければ、文字ラベル作成へ 自分→編集処理ならば、編集処理中忘草窓入力反映へ ・マウス押した時は〜 忘草入力窓→X=自分→マウスX 忘草入力窓→Y=自分→マウスY 忘草入力窓→可視=オン 忘草入力窓→注目 ・文字ラベル作成〜 (忘草入力窓→テキスト=``)でなければ、 忘草ラベル[自分→ラベルインデックス]をラベルとして作成 忘草ラベル[自分→ラベルインデックス]→X=忘草入力窓→X 忘草ラベル[自分→ラベルインデックス]→Y=忘草入力窓→Y 忘草ラベル[自分→ラベルインデックス]→テキスト=忘草入力窓→テキスト 忘草ラベル[自分→ラベルインデックス]→マウス押した時は〜自分→忘草ラベル編集処理へ 忘草入力窓→テキスト=`` 自分→ラベルインデックス=自分→ラベルインデックス+1 ・忘草ラベル編集処理〜 イベント部品を編集中OBJにグループ参照コピー (編集中OBJ→押されたボタン=`右`)ならば、 忘草文字プロパティ入力入力艦→X=自分→マウスX-130 忘草文字プロパティ入力入力艦→Y=自分→マウスY+20 忘草文字プロパティ入力入力艦を最前面 自分→色選択値=0 忘草文字プロパティ入力入力艦→モーダル表示 (編集中OBJ→押されたボタン=`左`)ならば、 編集処理=はい 忘草入力窓→テキスト=編集中OBJ→テキスト 忘草入力窓→可視=オン ・編集処理中忘草窓入力反映〜 編集中OBJ→テキスト=忘草入力窓→テキスト 忘草入力窓→テキスト=`` 編集中OBJ→可視=オン。自分→編集処理=オフ
■使い方
●ラベル新規作成
・画像の文字を書きたいところでクリックを押すと文字が入力できます。
・左クリックで文字のサイズと色を変えられます。
●ラベル削除
・いらなくなったラベルの上で左クリックを押しテキストを空にする。
●その他の機能
・入力中の文字入力の取り消しはEscボタンで入力中の文字を消せます。
・作成した画像の保存や描き方の表示は画面上のメニューから行えます。
■
なでしこで書いた過去コードの整理をしていたら出てきた遺物です。
適当なコーディングですが、一応動いたのでそのまま載せます。
以下は他のFLASH暗算との違です。
1.問題数の設定が自由に出来る。
2.出題別に音別けされている。
3.出題別に色別けされている。
経感覚強化で色音別けしてみました。
今のところ効果は認められません。
※共感覚に詳しい方効果的になるアドバイスや機能追加要望があれば下さればお気軽にどうそ。
正解音="C:\WINDOWS\Media\tada.wav" 音量=60。 !母艦設計=「母艦の可視はオフ」。 母艦="ドレミFlash暗算"。母艦の背景色=黒色。母艦のW=350。 数対応色="{黄色},{緑色},{水色},{青色},{紫色},{赤色},$FF80FF,$FF8000,{白色},{白色}"を","で区切る 数対応音="ド,レ,ミ,ファ,ソ,ラ,シ,↑ド,↑レ"を","で区切る 音量="音量"&音量&改行 (フォント="")ならば、フォント="MS ゴシック|120|太字" //グローバル変数 回答とは整数=""。 //GUI設計 問題画像とはイメージ。これについてX=10。Y=100。H=200。W=300。背景色=黒色。 回答表示ラベルとはラベル。これについてX=242。Y=300。W=120。文字サイズ=20。文字色=紫色。H=24。テキスト=""。 BSボタンとはボタン。これについてX=242。Y=330。W=80。文字サイズ=20。 開始ボタンとはボタン。これについてX=22。Y=360。W=120。 出題数窓とはエディタ。これについてX=146。Y=360。W=28。H=24。テキスト="5"。 出題数単位表示ラベルとはラベル。これについてX=174。Y=364。W=22。H=24。文字サイズ=14。文字色=紫色。H=24。テキスト="問"。 出題時間窓とはエディタ。これについてX=194。Y=360。W=28。H=24。テキスト="0.5"。 出題時間単位表示ラベルとはラベル。これについてX=222。Y=364。W=22。H=24。文字サイズ=14。文字色=紫色。H=24。テキスト="秒"。 回答ボタンとはボタン。これについてX=242。Y=360。W=80。文字サイズ=20。 数ボタン作成 母艦の可視=オン。 開始ボタンのクリックした時は〜 回答表示ラベルのテキスト=""。 出題する 回答ボタンをクリックした時は〜 回答表示する。 (回答表示ラベルのテキスト=回答)ならば、正解音が存在ならば正解音を再生 BSボタンのクリックした時は〜回答表示ラベルのテキスト=回答表示ラベルのテキストから1文字右端削除 ●出題 問題画像を"$000000"で画面クリア。 0.2秒待つ (出題時間窓のテキスト-0.1<0)ならば、出題時間窓のテキスト=0.15 回答=0 出題数窓のテキスト回 問題表示する。 (出題時間窓のテキスト)秒待つ 問題画像を"$000000"で画面クリア。 演奏ファイル完全削除する。 ●問題表示 問題=9の乱数+1。 回答= 回答+ 問題。 文字色=数対応色[問題-1]。退避文字サイズ=文字サイズ。文字書体="MS ゴシック|160"。 音量&数対応音[問題-1]をMML演奏 0.01秒待つ 問題画像の0,0へ(問題を全角変換)を文字描画。 問題画像を描画処理反映 0.01秒待つ 文字サイズ=退避文字サイズ。 ●回答表示 文字色=赤色。退避文字サイズ=文字サイズ。文字書体="MS ゴシック|160"。 問題画像を"$000000"で画面クリア 問題画像の0,0へ回答を文字描画。 文字サイズ=退避文字サイズ。 ●演奏ファイル完全削除 列挙ファイル=テンポラリフォルダ&`nadesiko_sakura*.mid`のファイル列挙 "音量0{改行}ド"をMML演奏 列挙ファイルを反復 テンポラリフォルダ&対象が存在ならば、テンポラリフォルダ&対象をファイル完全削除 //GUI関連 ●数ボタン作成 10回 数ボタン[回数-1]をボタンとして作成。 数ボタン[回数-1]→W=20。 数ボタン[回数-1]→X=回数×22 数ボタン[回数-1]→Y=300。 数ボタン[回数-1]→テキスト=回数-1 数ボタン[回数-1]→文字サイズ=20 数ボタン[回数-1]→クリックした時は〜 V=自身→テキスト 回答表示ラベルのテキスト=回答表示ラベルのテキスト&V。 (V<>0)ならば、音量&数対応音[V-1]をMML演奏 10回 I=回数-1 数二ボタン[9-(回数-1)]をボタンとして作成。 数二ボタン[9-(回数-1)]→W=20。 数二ボタン[9-(回数-1)]→X=回数×22 数二ボタン[9-(回数-1)]→Y=330。 数二ボタン[9-(回数-1)]→テキスト=9-(回数-1) 数二ボタン[9-(回数-1)]→文字サイズ=20 数二ボタン[9-(回数-1)]→クリックした時は〜 V=自身→テキスト。 回答表示ラベルのテキスト=回答表示ラベルのテキスト&V。 (V<>0)ならば、音量&数対応音[V-1]をMML演奏
問題点
テンポラリフォルダ以下に出来るMML演奏のためのファイルが自動でどんどん作られるので毎回削除してます。
テンポラリフォルダがRAMディスク以外の人はごめんなさい。それにしてもこれは何とかならないものか?
数値入力エディタ
何箇所にも数値入力用のエディタが必要な際に
いちいち手動でIMEを切り替えなくて済む程度のもの。
数値入力専用のエディタ
数値入力欄とは数値入力専用エディタ。 数値入力欄のIME状態表示先=母艦。 ■数値入力専用エディタ +エディタ ・IME状態表示先 ←IME状態表示先設定 ・作る〜 オブジェクト=VCL_CREATE(自身, 名前, VCL_GUI_EDIT) 自身を数値入力専用エディタ自身にグループ参照コピー ・IME状態表示先設定({グループ}OBJ)〜OBJを数値入力専用エディタ表示先部品にグループ参照コピー ・マウス入った時は〜数値入力専用エディタ自身のIME=「IMEオフ」。IME状態表示。 ・マウス出た時は〜数値入力専用エディタ自身のIME=「IMEオン」。IME状態表示。 ・IME状態表示〜数値入力専用エディタ表示先部品=数値入力専用エディタ自身→IME
なでしこ2.0の開発状況
先日京都で行われたOSCになでしこユーザーグループもブースを出展しました。
次の日になでしこの今後の展望についてのミーティングが行われました。
●現行版のなでしこについて
まず、現バージョンのなでしこですが
2.0の開発が始まって2年間開発者のクジラ飛行机さんが忙しく殆ど更新されていなかったのですが、今後は少し頻度が上がりそうです。
こちらはDelphiで開発されていますのでDelpahi使いの興味がある方は是非気軽に開発に参加されてください。
言語の開発と言っても一つの機能を言語に追加する程度から気軽に参加できます。
以下UD氏サイトをご参考ください。
www.undefin.net/nadesiko/commit/2009/0805.html
(※現在Delphiは有料版しか無いようなのです。)
●なでしこ2.0について
次になでしこ2.0ですがこちらはC#で開発されております。C#ユーザーの開発参加者が不足しておりこのままでは一般公開まで、まだまだ相当の月日が掛かりそうです。
現在は言語の核になるループや分岐命令などの極基本部分が完成しているのみです。
現段階ならば仕様部分も決まっていない部分が多く良いアイデアがあれば採用される可能性があります。
言語の開発に携われる機会なんてそんなに無いかと思います。
なでしこの開発陣は親切で気さくな方ばかりですから自信がそれ程無いと言う方でも気軽に参加できる環境にあります。
現状なでしこのユーザーでなくても、ちょっと触ってみて面白いと思って頂ける方ならば問題ないと思います。
週末プログラマーのC#ユーザーさんでも色々な参加の仕方がありますので少しでも興味がある方は是非お気軽に参加してみてください。
世界が広がりますよっ。
http://nadesi.com/dev/wiki/index.php?
追記、なでしこ2.0のエディタ開発が全く手付かず状態です、エディタ部分の開発に興味がある方なども是非どうぞ。
●日本語で書けるJavascript
日本語で書いたプログラムをJavascriptに変換できるプロジェクトも計画されています。
Javascriptは様々なプログラムに変換できる要素を持っているため、これがうまく行けば将来Andoroid携帯で動くアプリなどの開発も日本語でできます。
追記、
なでしこは、日本語でプログラムが書け、一見、解り易いだけと言うメリットのみで捕らえられがちですが、実際に使ってみると、その実用性や開発効率の高さに驚かされます。
僅か数行のコーディングでも便利なアプリが書けたりします。
今回紹介させて頂いた開発プロジェクトは
日本語で書けるプログラミング言語の開発と言う枠を超えて、コンピューターをもっと便利に手軽に使いたいと言う人ならば、ちょっとどんなものか覗いてみる価値はあると思います。
ニコニコ動画が見れる方は以下の動画でなでしこの動作イメージができると思います。
自然な日本語でコーディングができます。
http://www.nicovideo.jp/watch/sm9208656
アイデア次第でこんなことも手軽にできます。
http://www.nicovideo.jp/watch/sm1137397
相対性理論!?
一日の使える時間を数倍にする夢のアプリです。
なでしこエディタの行動(アクション)タブなどに登録してプログラミング中の思考停止時間を無くすなどの使い方をおすすめします。
※終了方法はウインドウをダブルクリック //ユーザー設定 速度=0.25//0.5で2倍。0.25で4倍。0.125で8倍のおおよその体感時間が得られます。 開始時間=今// "hh:mm:ss"形式でも指定可能。 //ここまで 文字色=緑色。文字書体=「MS ゴシック|26|太字」 母艦のスタイル="枠なし"。これについてW=160。H=36。透明度=130。背景色=黒色。 母艦を最前面。母艦のX=デスクトップのX。母艦のY=デスクトップワークエリアH-36。 母艦をダブルクリックした時は〜(『終了しますか』と二択=はい)ならば、終わる。 倍速時計表示する。 ●倍速時計表示 永遠の間 母艦の背景色で画面クリア TIME=TIME+1 時間=開始時間に"00:00:{TIME}"を時間加算 母艦の1,1へ(時間)を文字描画 (TIME=60)ならば、 開始時間=時間。 TIME=0。 速度、秒待つ