
クムクムを動作させるためのプログラミングには、大きく分けて上図のようにAとBの2系統があります。
A...リモートプログラミング系
スクラッチや後にリリースするPythonAPIなどを使って、PC上で作ったプログラムを動作させながらクムクムをコントロールする方法です。
作ったプログラムはすべてPC上に存在し、PCはプログラムコマンドを上から順次送信し、そのコマンドをクムクム内部のCPUが解析し命令通りの動作を行います。
同時に、ロボットからのセンサーデータやマイクデータなどをPC上にリアルタイムに送信しますので、PC側のプログラムはそれを受けて様々な処理をすることが可能です。
このプログラミングのメリットは、リアルタイムに動作を見ながらプログラミングを楽しむことができますが、残念なことに、PC側の電源が切れると命令は送信されないためロボットは動かなくなります。
また、命令を送り出したり受信したりする部分に様々な通信が発生するため、ロボットの動作速度はBの方法に比べて遅くなります。
プログラムを勉強する目的では十分ですが、クムクムそれ自体での動作ができないため、製品としての目的では不十分です。
ただ、外付けのRaspberryPiなどでコントローラを作り、リモコンで動くクムクムなどを考えると面白いかもしれません。
B...ダイレクトプログラミング系
クムクムのボードはArduinoとしての互換があります。
内部にはArduinoLeonardoに使用されているCPU(ATMEGA32U4)とブートローダを搭載しています。よって、Arduino IDEをダウンロードしUSBケーブルでPCと接続すればArduinoLeonardoとしてのシリアルポートがみえます。

Arduinoのブートローダーを搭載していますので、当然Arduinoのコマンドはすべて使ってクムクムを動かすことが可能となります。
作ったプログラムはそのままCPUの内部に埋め込まれるため、プログラミング後PCを接続しなくても、クムクムのスイッチをONにするだけでプログラムが自動で動きます。
このようにダイレクトにプログラムを埋め込んでしまう方法を「組み込みプログラミング(エンベデッドプログラミング)」と呼びます。
自分専用の自動クムクムを作り上げることができます。
動作速度は、直接CPUからのコントロールとなるため、A系統に比べ格段に速いものになります。
例えば、A系統(スクラッチ等)でLEDの点灯と消灯を繰り返すプログラムを作ったとき、明らかに点滅を目視で確認することができます。
これは各部分の通信における遅延があるためです。
しかし、このB系統で行った場合、CPUそのものの処理速度となるため、点滅を目視で確認することはできません。目に見えない速さで点滅しているため、LEDは点灯しっぱなしに見えます。
クムクムのLEDを点滅させてみました
このプログラムは赤・青・緑のLEDを順番に点滅させるプログラムです。
delay(300) という命令(0.3秒まつ)が見えますが、これはスクラッチのブロックでいう [●びょうまつ]にあたります。
Arduino直接では、このdelay(300)がないと点滅を目で確認することができません。下記のプログラムを試される方は、300を10や500や0などに変えて動きを比べてみてください。

このプログラムをIDEから書き込むと、もともと入っていたクムクムのシステムソフトがすべて消え、クムクムはA系統(スクラッチなど)からリモートで動かすことができなくなります。
その場合、弊社ホームページのSupportよりファームウェアをダウンロードし、もう一度書き込みなおすことで元に戻すことができます。
※ご注意
本操作はすべてユーザのの自己責任のもと行ってください。
ダイレクトモードでのプログラミングは弊社の正式サポート外となります。
万が一ファームウェアが消されお客様で元に戻せなくなった場合、有料サポートとなります。