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

My First Machine language - the simplest course of Arm machine language with IchigoJam step1

2018/01/25 23:55:00
#IchigoJam #KidsIT #Arm #rasppi #english 

Computers only know them binary machine language using just 0(off) and 1(on).
How do we make binary number sequence? It's depends on computers.

"RUN the Arm machine language on IchigoJam RPi after 1.2b16 (Raspberry Pi 2)"

The computer of IchigoJam understands 16 bit words (0 or 1 x 16).


This machine language means to add 1 to R0 register. (resisters are kind of memories in the computer)

First 5 bit means "to add", next 3 bit means the resister number, last 8 bit means number to add.

00110 000 00000001

Let's write to RAM using POKE command of IchigoJam BASIC. (*IchigoJam BASIC reference ver 1.2)


#700 is position of RAM. Number starts with ` means binary number. (# for hexadecimal number)
To write last 8 bit in the first is a rule of this computer. (little-endian)

You need an other machine language word to work, "return" to IchigoJam BASIC.


Write this word to RAM in the same way.


You are ready to run!


Did you get a number 2 as a right result?

USR command needs an start address of the machine languages and a number as a parameter.
Please check using 100 as a parameter.


Try to make to add 5 program using the machine language.

POKE#700,5 ?USR(#700,100)

You did it!

Speed is the greatest advantage of using the machine language.
The disadvantage is wrong machine language program doesn't protect your system.
So, please save before run if you make long program with machine language.

IchigoJam will stop if you write wrong machine languages.
Try to freeze your IchigoJam.


Computers work with some machine language words such them.
CPU of IchigoJam (LPC1114 Arm Cortex-M0) knows only 56 words Arm Thumb machine language.
It's very simple to understand!

If you use IchigoJam RPi after 1.2b16 (Raspberry Pi2/3 Arm Cortex-A7/A53), it knows more words.

It's a sample code to use SIMD(single instruction multiple data) machine language.
QADD8 can calculate 4 number as parallel during just 1 CPU cycle.

POKE#700,#80,#FA,#10,#F0,#70,#47 ?HEX$(USR(#700,#1234)) 2468

*It can calculate 8bit x 4 numbers but variables of IchigoJam BASIC are 16bit.

To be continued!

- Cortex-M0 Technical Reference Manual - Instruction set summary / ARM Information Center
- Cortex-A7 MPCore Technical Reference Manual - About the programmers model / ARM Information Center

links (now in Japanese)
- asm15 - simple Arm assembly language and machine language table
- asm15 assembler for IchigoJam
- series of "My First Arm Assembly language"

Live of NHK WORLD 'NEWSROOM TOKYO' 大安禅寺の生出演で話した鯖江モデル(日本語対訳)

2018/01/19 23:55:00
#sabae #opendata #maker #movie #doc #english 




too funkyで、幻となった鯖江メガネ neoplug、IchigoJam x OLED エディション

番組内にはneoplug開発のBOSTON CLUB 小松原社長と共に登場!


世界中に放送された NHK WORLD NEWSROOM、NHK WORLDで録画も見られます。
Fukui: craftsmanship and beyond - NEWSROOM TOKYO - TV - NHK WORLD - English

Q: Why has Sabae been so successful in embracing new technology? What’s the key to its success?

First of all, it is the mayor's decision to turn Sabae into an open-data city.
Sabae is the first city in Japan to have done this.
And it's important to emphasize that citizens backed up this decision.
The city has many CEOs. People in Sabae are eager to revive their community.
The number of shops is falling. Young people are moving elsewhere to find better jobs. Most of them don't return.
Residents want to stop this.
A citizens group started classes to make children and adults more familiar with programming.
And this spring, the city will launch programming clubs in all 15 elementary and junior high schools.
We believe all this could lead to the development of new apps using open-data.

Q: What's the goal of the Sabae city?

Sabae is trying to create a model that will make everything revolve around information technology.
Our goal is to involve all residents and all local businesses in the management of their city.
...and to inject technology into traditional craftsmanship to revive local industry.
70-thousand people live in our city, which is a good size to innovate.
People communicate with each other... no matter what their job is.
With IT, every single citizen should be able to develop new ideas to improve the community and participate in decision-making.
And eventually, this will lead the city to grow.
Also, we hope to attract investment from Japan and abroad... and encourage people to live in Sabae.

- Fukui: craftsmanship and beyond - NEWSROOM TOKYO - TV - NHK WORLD - English
- 普通の眼鏡をスマートグラス化、スライド式着脱機構「neoplug」。鯖江ブランドを世界規格へ - Engadget 日本版
- データシティ鯖江ポータルサイト | Data City Sabae

Sabae will appear in the live of NHK WORLD TV broadcasting 'NEWSROOM TOKYO'

2018/01/18 23:55:00
#sabae #IchigoJam #maker #neoplug #english 

On Friday 19th, I'll appear in the live of NHK WORLD TV broadcasting(NHK国際放送) in "NEWSROOM TOKYO" program with neoplug "glasses for wearable". [20:00 - 20:45 (JST)]

IchigoJam x OLED x neoplug!

IchigoJam demo / see IchigoJam x OLED - IchigoJam BASIC & Arm Assembly Language.

1 GSB@INIT:GSB@LINIT:CLT 2 GSB@CLS:S="IchigoJam":FORI=0TOLEN(S)-1:X=3:Y=12-I:GSB@LC:C=ASC(S+I):GSB@LPUTC:NEXT 3 VIDEO0 20 X=RND(8):Y=RND(16):GSB@LC 22 IF TICK()>60*15 CLT:GOTO2 25 IF !(X<2 OR X>4 OR Y<3 OR Y>13) GOTO20 30 C=229+RND(27):C=RND(2)*C:GSB@LPUTC 40 GOTO20 100 @INIT:POKE#700,0,141,20,32,0,175:?I2CW(60,#700,6):RTN 110 @LC:POKE#700,0,33,Y*8,127,34,7-X,7:?I2CW(60,#700,7):RTN 120 @PUTC:COPY#700,C*8,8:?I2CW(60,#40,#700,8):RTN 130 @CLS:X=7:Y=0:GSB@LC:C=0:FORI=0TO127:GSB@PUTC:NEXT:RTN 150 @LPUTC:?USR(#800,C):?I2CW(60,64,#700,8):RTN 155 @LINIT:LET[0],#B5F0,#2307,#021B,#18C9,#2308,#4358,#1812,#2500,#2701,#2600,#2407,#2000,#5D93,#40EB,#403B,#40A3,#18C0,#3C01,#3601,#2E08,#D1F6,#5548,#3501,#2D08,#D1EF,#BDF0:RTN

We're judging programs of PCN Kid's Programming Contest 2017 Winter at SAMMIE'S in Fukui prefecture.
Thank you kids to send us many intresting programs!

(added 2019.1.19)
NHK WORLD NEWSROOM 2018.1.19 - YouTube (recorded)

"my interview scene and my talks"

IchigoJam RPi, a Third Party OS for Raspberry Pi can program the IchigoJam / Kids Coding 50th!

2017/12/04 23:55:00
#IchigoJam #KidsIT #rasppi #english 

A third party OS for Raspberry Pi "IchigoJam RPi" can connect and program the IchigoJam with LPC1114 via just 3 jumper wires.
ラズパイ用サードパーティーOS「IchigoJam RPi」はIchigoJamをジャンパーワイヤー3本で簡単につないで、プログラムできますよ!

Connect 3 wires after boot both IchigoJams. 起動してから3本つなぐ
1. RPi:6pin(GND) - IchigoJam:GND
2. RPi:8pin(TXD) - IchigoJam:RXD
3. RPi:10pin(RXD) - IchigoJam:TXD

Type followings on IchigoJam RPi つぎのように打つ


Your remote IchigoJam lighted! するとつないだIchigoJamが光る!

You can program also! プログラムもできちゃいます

?"1 LED1:WAIT10 ?"2 LED0:WAIT10 ?"3 GOTO 1 ?"RUN

Send #1B (=0x1b, code of ESC) to stop 止める時は#1Bを送信


Unwire a wire if IchigoJam repeated errors. エラーがループしたらワイヤーを1本ぬく
You can change the no response mode "OK0" レスポンスなしモードは「OK0」


Make a VIDEO connector for Raspberry Pi Zero ビデオコネクターづくり

Just solder a 2P pin header and a composit connector

You can use the 4.3 inch mini monitor! 4.3インチのミニモニターが使えます!

How to use the IchigoJam RPi つかいかた
1. Download the OS, IchigoJam RPi (

2. Write to SD 書き込み
3. Boot! 起動

You can find the "IchigoJam RPi" on the Raspberry Pi official DOWNLOADS page!

Enojoy programming and computing! プログラミングとコンピューティングを楽しもう!

photo 2016.12.11: Mr. Eben Upton(@EbenUpton), inventor of Raspberry Pi and inventor of IchigoJam! 「IchigoJam meets Raspberry Pi! Mr. Eben Upton's first IchigoJam BASIC program is...
We've released IchigoJam RPi with I-O DATA!
エベン氏と会って1年、アイ・オー・データ機器のイベントでついに IchigoJam RPi 発表!
Moblie Game Machine making workshop for Kids using IchigoJam RPi / I-O DATA FAIR 2017

photo from 「10 age kid who got PCN RaspberryPi award is creating a electric circuit with transistors as his own idea! Let’s spread Kids Programming! / PCNラズパイ賞を受賞した10歳の子は「最近はトランジスタが楽しい」と、オリジナルなモーター回路を設計中!IchigoJam RPi でますます広がる こどもプログラミング! – about yrm
Raspbery Pi Foundation supported our PCN Kids Programming Contest 2017 in Summer.
Thanks a lot!! ラズパイ財団からPCNこどもプロコンに特別協賛、感謝!

Today (4 December) is 50th anniversary of Kids Coding! なんと子供のコーディング50周年記念日!
Celebrating 50 years of Kids Coding

IchigoJam can connect Rwanda and us also. / IchigoJamがつないでくれたルワンダとの縁!
Programming for Rwandan kids! Open Teaching Materials

Programming for All Kids! - PCN / すべてのこどもたちにプログラミングするきっかけを!

鯖江で実稼働している公共交通IoT クラウドEXPOにてスペシャルセッション at さくらインターネットブース / PubTra-IoT Special Session in Cloud Expo 2017

2017/05/09 23:55:00
#IoT #opendata #IchigoJam #english 

クラウドの展示会、クラウドコンピューティングEXPO【春】のさくらインターネットブース、スペシャルセッションにて「 と IchigoJam でつくるバス公共交通IoTとオープンデータ」をテーマにトークセッション!(5/10水14:30〜)
We'll have a show at the booth of Sakura Internet in Cloud Computing Expo Spring!

こどもでも作れる簡単、高速、低消費電力IoTプログラミング環境でもある「IchigoJam」と月額60円からの4G通信モジュール「」を使った、鯖江市営バスのシステム。 Code for Japan コーポレートフォローシップで誕生した、本システムの背景とを鯖江市役所の情報統括官で Code for Sabae のメンバー、本システムの共同開発者でもある牧田氏を交えて紹介。 更なる低価格IoTを実現するLoRaとこども起業家輩出を目指す企業連携プロジェクト「KidsVenture」が創る未来を、代表の高橋氏を交えて公開ディスカッション!
- Easy IoT Programming Environment "IchigoJam" x Just ¥61/month IoT ""
- About Code for Japan Corporate Fellowship and this system with Mr. Makita CIO of Sabae city.
- How to make the future with Mr. Takahashi Leader of KidsVentrue.

"オープンデータ鯖江市つつじバスモニター / Sabae Tsutsuji Bus Monitor with opendata"

ブースでは、IchigoJam x で動くシステムの予備機と鯖江で4月から運用されているバスのリアルタイム乗客数オープンデータを紹介。
だれでも作れる IoT ぜひ会場までお越しください!
We'll show the acutual IoT device and the demo page on web at the booth.
IoT for everyone! Welcome to the booth of Sakura Internet!


Bus Graph / つつじバス乗客数グラフ@ja
(based on つつじバスなう)

- Code for Sabae 4周年!(スペシャルセッション講演資料)
- 「第8回 クラウド コンピューティング EXPO【春】」(東京)の弊社ブースにて、セッションを行います | さくらインターネット
- 福井県鯖江市、、さくらインターネットが共同開発した「バス乗客リアルタイムオープンデータシステム」を鯖江市の公共バスで運用開始
- 鯖江市バスのリアルタイムオープンデータを使ったグラフアプリ
- - クラウド コンピューティング EXPO | リードエグジビションジャパン
- バス乗降数IoT実験、Code for Japan x Yahoo!Japan コーポレートフェローシップ in 鯖江

Armマシン語でつくる32bit大きな数計算ライブラリ / 32bit Integer Library on IchigoJam

2017/05/08 23:55:00
#IchigoJam #asm #english 

メモリが4KBしかないIchigoJam、節約のため変数はすべて16bit。低い限界を楽しめる設計です。 もちろんプログラミングでその限界は超えられます。今回はマシン語を使って超える方法の紹介。
How to exceed the 16bit limit of IchigoJam!

@CALC32 PUSH {LR,R4,R5,R6} R6=8 R6=R6<<8 R6=R1+R6 R5=#F<<2 R4=R0 R0=R4>>2 R0&=R5 R0=[R6+R0]L R1=R4<<2 R1&=R5 R1=[R6+R1]L R2=R4>>12 R2-0 ' plus IF !0 GOTO @SKIP1 R0=R0+R1 GOTO @END @SKIP1 R2-1 ' minus IF !0 GOTO @SKIP2 R0=R0-R1 GOTO @END @SKIP2 R2-2 ' multi IF !0 GOTO @SKIP3 R0*=R1 GOTO @END @SKIP3 R2-3 ' division IF !0 GOTO @SKIP4 PUSH {R4} GOSUB R3 POP {R4} GOTO @END @SKIP4 R2-4 ' division(remain) IF !0 GOTO @SKIP5 PUSH {R4} GOSUB R3 POP {R4} R0=R1 ' GOTO @END @SKIP5 @END R4=R4>>6 R4&=R5 [R6+R4]L=R0 POP {LR,R4,R5,R6}

"32bit calc library on asm15 (CALC32)"

マシン語呼び出しのパラメーターで、計算種類、配列位置で、結果格納、計算する数2つを指定します。32bit = 4byte なので、配列は[0]と[1]など、2つずつ使います。コンパイルした結果がこちら。

10 POKE#700,112,181,8,38,54,2,142,25,60,37,4,70,160,8,40,64,48,88,161,0,41,64,113,88,34,11,0,42,1,209,64,24,19,224,1,42,1,209,64,26 20 POKE#728,15,224,2,42,1,209,72,67,11,224,3,42,3,209,16,180,152,71,16,188,5,224,4,42,3,209,16,180,152,71,16,188,8,70,164,9,44,64,48,81 30 POKE#750,112,189 RUN

例えば、1234*5678 (=7006652)を計算するには、このように使います。

[0]=1234:[2]=5678 U=USR(#700,#2201):'[4]=[0]*[1] [6]=10000 ?DEC$(USR(#700,#3523),4)DEC$(USR(#700,#4423),4) 7006652

結果の表示上、9999万9999まで表示します。マイナスの数はどうなるか、やってみましょう! links
- IchigoJam
- マシン語でつくるプログラマブル学習リモコン
- レゴテクニックシリーズをIchigoJamと赤外線LEDで制御する(マシン語) / Control Lego Technic by IchigoJam and IR LED
- はじめてのマシン語 - IchigoJamではじめるArmマシン語その1

DMM 4K対応、プログラマブル学習リモコン by IchigoJam / Programmable IR receiver and sender

2017/05/07 23:55:00
#IchigoJam #maker #asm #english 

DMM.make 4Kディスプレイの入力切り替えが面倒なので、IchigoJamで学習リモコンを作ってみました。
I made programmable IR sender by IchigoJam.

ハードウェア設定 (hardware setup)
IR Reciever - IN1 (赤外線受光モジュール)

10 POKE#700,112,181,114,182,8,34,18,2,138,24,0,40,54,208,80,35,27,3,1,51,27,3,1,36,228,4,202,38,0,33,0,240,40,248,1,49,33,66,30,209 20 POKE#728,29,104,0,45,247,209,36,9,0,32,0,33,0,240,29,248,1,49,33,66,19,209,29,104,0,45,247,208,17,82,2,48,176,66,12,208,0,33,0,240 30 POKE#750,16,248,73,28,33,66,6,209,29,104,0,45,247,209,17,82,2,48,176,66,229,209,0,33,17,82,2,48,64,8,98,182,112,189,100,37,210,53,1,61 40 POKE#778,253,209,112,71,80,35,27,2,1,51,27,4,4,51,1,36,0,38,17,90,0,41,234,208,28,96,0,240,21,248,30,96,0,240,18,248,1,57,247,209 50 POKE#7A0,2,48,17,90,0,41,222,208,0,0,0,0,0,240,8,248,0,0,0,0,0,240,4,248,1,57,245,209,2,48,228,231,154,37,1,61,253,209,112,71 200 IF BTN()=0 CONT 210 A=#BF00 220 B=#E11E:GSB300:N=USR(#700,0):WAIT60 230 B=#E21D:GSB300:N=USR(#700,0):WAIT30 240 B=#BE41:GSB300:N=USR(#700,0) 250 GOTO200 300 LET[0],346,169 310 FORI=0TO15:[2+I*2]=25:[3+I*2]=18+43*(1<<I&A!=0):NEXT 320 FORI=0TO15:[34+I*2]=25:[35+I*2]=18+43*(1<<I&B!=0):NEXT 330 LET[66],25,0:RTN

It makes IR data on the array (line 300) and send via IR LED blinking. I did it just 1 pressing when switch the input!

こちらがリモコンコード受信用のプログラムです。上のプログラムを一度実行したあと、一度 NEW でプログラムを消して、下記を入れることで、送信&受信テストができます。
This is the IR code receiver program. You can get the code after run the abobe program, NEW command and enter this program.

100 INPUT"1:SEND 2:RECV ?",N 110 IF N=1 N=USR(#700,0):GOTO 100 120 N=USR(#700,1) 130 FOR I=0 TO N-1 STEP 2:?[I];" ";[I+1];" ";:NEXT:? 140 N=0:FORI=0TO15:N=N|([3+I*2]>37)<<I:NEXT:?HEX$(N) 150 N=0:FORI=0TO15:N=N|([35+I*2]>37)<<I:NEXT:?HEX$(N) 160 GOTO 100

家のリモコンで動くもの全部、IchigoJam BASIC プログラミング可能に!
You can program your all devices have a IR receiver by IchigoJam BASIC!

- IchigoJam
- レゴテクニックシリーズをIchigoJamと赤外線LEDで制御する(マシン語) / Control Lego Technic by IchigoJam and IR LED
- はじめてのマシン語 - IchigoJamではじめるArmマシン語その1

レゴテクニックシリーズをIchigoJamと赤外線LEDで制御する(マシン語) / Control Lego Technic by IchigoJam and IR LED

2017/05/06 23:55:00
#IchigoJam #KidsIT #maker #english 

How to lower hurdles about robots?

レゴ テクニックシリーズは、ロボットづくりの肝のひとつ、メカトロニクス版を電子工作でいうブレッドボードのように試行錯誤が自由自在! シンプルなサッカーロボなら10分ほどでつくれてしまいます。 オープンソースハードウェアでもある組立図を見ながらこんな大型クレーンや、ショベルカーまで!
Lego Technic series likes breadboard! It's easy to make everything!

I connected Lego and IchigoJam using past codes.

You can control the Lego with this program with selectable power 7 levels.

1 P=4 10 A=-P:B=P:GSB100:WAIT30 20 A=-P:B=0:GSB100:WAIT30 30 A=0:B=P:GSB100:WAIT30 40 A=P:B=P:GSB100:WAIT30 50 A=0:B=0:GSB100 99 END

This demo robot is very simple. But you can control up to 8 motors! (2 motors x 4ch)

It's OK just put in IR-LED GND and OUT1. But a transistor enlarge the power!

This program drives a IR-LED to control Lego.

100 N=1<<14|C<<12|B&15<<8|A&15<<4 110 R=15^(N>>12)^(N>>8)^(N>>4)&15 120 IF PEEK(#700)!=112 GOSUB2000 130 ?USR(#700,N|R):RTN 2000 POKE#700,112,181,114,182,80,35,27,2,1,51,27,4,4,51,1,37,0,38,1,36,228,3,0,240,28,248,78,34,0,240,19,248,0,240,23,248,20,34,0,240 2010 POKE#728,14,248,32,66,2,208,22,34,0,240,9,248,100,8,243,209,0,240,11,248,78,34,0,240,2,248,98,182,112,189,0,181,0,240,14,248,1,58,251,209 2020 POKE#750,0,189,0,181,6,34,29,96,0,240,6,248,30,96,0,240,3,248,1,58,247,209,0,189,155,33,1,57,253,209,112,71 2030 RTN

See also if you want to learn the machine language on IchigoJam.

"asm15 - Assembler for IchigoJam"
I modified to assemble the code by BoxHeadRoom.

- PawerFunctionsの赤外線解析⑤・・・ - LEGOの機関車○●○ - Yahoo!ブログ
- IchigoJam 用アセンブラ - BoxHeadRoom 別館

グミのお菓子とレジンでイカLEDづくり / Squid LED by Gummy Tray

2017/05/05 23:55:00
#KidsIT #maker #english 

This Kid's day as the Moku-Moku making party in Hana-Dojo. Many kids came there!

I made also squid LED by the gummy tray.

光るスーパーキノコ! The super mushroom lightied up!

小さいものなら数分で固まる、UVレジン硬化用のUVライトをHana道場に導入! (参考、UVライト 1,980円
You can use UV light at Hana-dojo!

From 5-11 age kids tried first programming on IchigoJam!

やっぱりゲームは盛り上がります! All kids love games!

I taught how to control a servo to a child wanted to make robots.

- つくるおやつ|バンダイ キャンディ公式サイト (Splatoon / Super Mario Maker / Pokemon etc...)

椅子IoT リアルタイム座席オープンデータ向け新システム / Chair IoT for Real Time Seat Open Data

2017/05/04 23:55:00
#IchigoJam #maker #IoT #english 

I connected the chair to web.

今回は1コあたり400円のWiFiモジュール ESP-WROOM-02 を書き換えなしで使います。 光センサーの代わりに、お菓子IoTで使った圧力センサーを WiFi Shield を使ってIchigoJamに接続。
IchigoJam with $4 WiFi module "ESP8266" and pressure sensor via WiFi Shield.

You can modify registors.

I selected 100Ω resistor after checking on the monitor

10 VIDEO3 20 ?ANA(2):WAIT30:CONT

Set ID/password to the WiFi access point

OK0 UART3,0:OUT5,1:OUT6,1:WAIT300:UART3,2 ?"AT+CWJAP=";CHR$(34);"**SSID**";CHR$(34);",";CHR$(34);"**password**";CHR$(34)

Check with milks! Send a data to web if change the number via WiFi.

100 VIDEO0:B=0 110 N=ANA(2):?N 120 IF ABS(N-B)>100 LED1:WAIT10:LED0:GOSUB@SENDN:B=N 130 WAIT 3*60,0 140 GOTO110 200 @SENDN 210 UART0,0:OUT5,1:OUT6,0:OUT6,1:WAIT300:UART3,0 220 ?"AT+CIPSTART=";CHR$(34);"TCP";CHR$(34);",";CHR$(34);"";CHR$(34);",80":WAIT3*60 230 M=1+(N>9)+(N>99)+(N>999)+(N>9999) 240 ?"AT+CIPSEND=";82+M:WAIT30 250 ?"GET /siot/4/?key=********&v="N;" HTTP/1.0" 260 ?"Host: 270 ?"User-Agent: IchigoJam 280 ? 290 WAIT180:OUT5,0 300 RTN

*for IchigoJam 1.2b47 / ******** is secret key to write

Easy to deploy because it works by cheap batteries!

Total cost about ¥1,500 without monthly fees. But It takes time and effort to set up the WiFi.

この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image