福野泰介の一日一創 - create every day

IoT光るイチゴ帽子のつくりかた - 久留米高専プログラミングラボ部訪問とPCN久留米誕生!

2018/10/09
#IchigoJam #kosen #IoT #kurume 

佐世保高専からの久留米高専プロラボ部へ(久留米高専の部活の一つ、プログラミングラボ部)
4限目がなかった、2、3年生の部員さんが迎えてくれました。


遊んでくれてありがとう!


黒木さんの部屋、入ってすぐ目に入った、カッチャマン(勝屋さん)の絵!
佐世保高専でのIoTプログラミングの様子をご紹介。
高専生から中学生へ「はじめてのプログラミング、はじめてのIoT」 / 佐世保高専での学び


PCN久留米、爆誕!?
PCN三重代表の岡村さんの出身地のすぐそば、待望の久留米拠点!


鯖江から来たので、電脳メガネも布教。
comiceye - Macがあれば、Swift3で自由に開発可能ですよ!


LED1からはじめるプログラミング、ゲームもこうしてこうすると、あっという間に楽しいゲーム。
ブラウザ上で動くチュートリアル付き「IchigoJam web」で、ぜひ楽しいプログラミング体験を!


sakura.ioモジュール搭載、IchigoSodaなので、1行足すだけでネットランキング対応に!

60 IOT.OUT S

もう1行足せば、スマホからスタート信号を送ることが可能に!

5 IF IOT.IN()=0 CONT

IOT.IN()コマンドは、何もデータがないときには0を即座に返します。(1.2b64ファームを使用)


一瞬でIoT化し、望むままに即座に仕様が変わる「かわくだりゲーム」を体験


IoTはこどもでも使えて当たり前の時代、どう使うかの勝負!
高専生にも人気な光るイチゴ帽子をIoT化しちゃいましょう。


テープ状のマイコン搭載フルカラーLED、WS2812Bを調達し、30コ分切ります。
30コ980円60コ1,580円300コ3,280円 WS2812B on Amazon)
ジャンパー線を3本用意して・・・


はんだづけ!
これをIchigoJamのVCC/GND/OUT1に挿しこみ、次のプログラムで光る!

10 POKE#700,240,181,68,24,90,32,12,73,114,182,128,37,35,120,1,52,255,34,74,96,3,39,10,38,43,66,1,208,10,39,3,38,1,63,253,209,0,34,74,96,1,62,253,209,109,8,239,209,1,56,234,209,98,182,240,189,0,0,1,80 20 U=USR(#700,#800) SAVE0 Saved 220byte OK POKE#800,900,090,009 OK RUN OK

メモリの16進数#800から緑、赤、青の順に明るさを設定して、マシン語呼び出しでWS2812Bを発光させています!
光らず、固まってしまったら、マシン語の入力をどこか間違えているので、LOAD0して、確認しましょう。

キーボード入力で、30コ全部光らせるには・・・

20 INPUT N 30 FOR I=0 TO 29:POKE#800+I*3,N/10%10,N/100,N%10:NEXT 40 U=USR(#700,#800) 50 GOTO20

IoT.IN()コマンドで光らせるように改造するには・・・

20 N=IoT.IN():IF N=0 CONT

と、超簡単、でしょ!?


WebSocketでつながったwebアプリをスマホで表示して、RGB値を10進数3桁で送ればその色に光る!
生徒の意のままに変わる、先生の帽子の色!
天気や、外の混雑具合に合わせて変わる帽子もオシャレですねっ

何を光らせると目立つか?
そんな時は、ギャル電を参考にすべし「電子工作でパリピな夏を独り占め!サイバーパンク大五郎!! | dotstudio
色相を使って美しく「WS2812B x IchigoJamでエモいウェアラブル「イチゴ帽子」プログラミング入門とマシン語、舞鶴x鯖江コラボに向けて


またね!

ちらっと紹介した全国から集った高専生16名で、がっつり開発する3週間、jigインターン、来年もやりますよ!
インターンブログをのぞいてみよう → 「jigintern2018’s diary

(おまけ)
WS2812Bを制御するマシン語プログラムが気になる人へ (asm15のソースです)

' OUT1 WS2812B DOUT [R1+`0001]を変更でOUTnに変更可能 ' R0 - data count 30コ固定 ' R1 - base address (初期はRAM offset) ' R2 - OUT value 0/#FF ' R3 - data value ' R4 - data address G1,R1,B1,G2,R2,B2 .... ' R5 - bit count ' R6 - wait count buf ' R7 - wait count @WS2812B PUSH {LR,R4,R5,R6,R7} R4=R0+R1 R0=30*3 R1=[@GPIO1]L CPSID @LOOP_DATA R5=#80 R3=[R4] R4+=1 @LOOP_BIT R2=#FF [R1+`0001]L=R2 R7=3 '(3*4+1)=13 <- 16.8+-7.2 R6=10 '(10*4+1)=41 <- 43.2+-7.2 R3&R5 IF 0 GOTO @SKIP R7=10 '(10*4+1)=41 <- 43.2+-7.2 R6=3 '(3*4+1)=13 <- 16.8+-7.2 @SKIP R7-=1 'wait R7*4+1 clock IF !0 GOTO -1 R2=0 [R1+`0001]L=R2 R6-=1 'wait R6*4+1 clock IF !0 GOTO -1 R5=R5>>1 IF !0 GOTO @LOOP_BIT R0-=1 '+6clock IF !0 GOTO @LOOP_DATA CPSIE POP {PC,R4,R5,R6,R7} 'RET @GPIO1 DATA L #50010000

個数を変える場合は R0=30*3 を変更でOK!asm15の出力では2行になりますが、200字で収まるので1行化しました。

マシン語なんて知らないよという人も安心。入門があります!
はじめてのマシン語 - IchigoJamではじめるArmマシン語その1

マイコン、クラウド、FPGA、自在にコンピューター使いこなそう!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像