対応ロボット:Qmcum(QX-001R3J)

色の組み合わせを使い、7色の点滅を作り、すべての点滅を繰り返すプログラムを作ってみます。クムクムの胸のLEDは、R(赤)G(緑)B(青)の各色の点灯と消灯を個別にコントロールすることができます。ある色を点灯させたまま別の色を点灯させることで色を混ぜあわせることが出来ます。

点滅は、光る・消えるの連続自動動作なのでLEDの点灯と消灯を繰り返し行えば実現でき、変化がわかりやすいように間に1秒待ち(delayコマンド)を追加します。delayにはミリ秒をパラメータに渡しますので1秒待ちはdelay(1000)と書きます。

LEDの点灯と消灯はLEDポートにArduinoの標準関数digitalWriteを使って HIGHを出力することでLEDは点灯し、LOWを出力すればLEDを消灯することが出来ます。

  • A0:赤
  • A1:青
  • A2:緑

ソースコード


void setup() {
  // put your setup code here, to run once:
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A2, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  // 赤(Red)
  digitalWrite(A0, HIGH);
  delay(1000);
  digitalWrite(A0, LOW);
  delay(1000);

  // 青(Blue)
  digitalWrite(A1, HIGH);
  delay(1000);
  digitalWrite(A1, LOW);
  delay(1000);

  // 緑(Green)
  digitalWrite(A2, HIGH);
  delay(1000);
  digitalWrite(A2, LOW);
  delay(1000);

  // マゼンタ(Magenta)
  digitalWrite(A0, HIGH);
  digitalWrite(A1, HIGH);
  delay(1000);
  digitalWrite(A0, LOW);
  digitalWrite(A1, LOW);
  delay(1000);

  // 黄色(Yellow)
  digitalWrite(A0, HIGH);
  digitalWrite(A2, HIGH);
  delay(1000);
  digitalWrite(A0, LOW);
  digitalWrite(A2, LOW);
  delay(1000);

  // シアン(Cyan)
  digitalWrite(A1, HIGH);
  digitalWrite(A2, HIGH);
  delay(1000);
  digitalWrite(A1, LOW);
  digitalWrite(A2, LOW);
  delay(1000);

  // 白(White)
  digitalWrite(A0, HIGH);
  digitalWrite(A1, HIGH);
  digitalWrite(A2, HIGH);
  delay(1000);
  digitalWrite(A0, LOW);
  digitalWrite(A1, LOW);
  digitalWrite(A2, LOW);
  delay(1000);
}

関数

pinMode        digitalWrite        delay

RGB-LEDについて

クムクムの胸のLEDは、R(赤)G(緑)B(青)の各色の点灯と消灯を個別にコントロールすることができます。ある色を点灯させたまま別の色を点灯させることで色を混ぜあわせることもできます。

R(赤)G(緑)B(青)は『光の三原色』と呼び、人間が識別できるすべての色をこの三色を使って作り出すことができます。実際には、R(赤)G(緑)B(青)のそれぞれの輝度を微妙に変えて色を作り出します。

Arduino CプログラミングではA0~A2のアナログポートに接続されているため、アナログ出力を行うことで輝度を変化させることが可能です。

QumcumではArduinoLeonardoに使用されているCPU(ATMEGA32U4)を使い、下記のようにArduinoLeonardoとまったく同じ構成で部品を接続しています。

プログラムでの制御はArduinoのコマンドを使って簡単にできます。

LEDの電気的な特性

LEDには電池と同じようにプラスマイナスの極性を持っていて、プラス「アノード」、マイナス「カソード」と呼びます。
このアノード側はp型という半導体、カソード側はn型という2つの半導体でできています。
アノードに電源のプラス、カソードに電源のマイナスを正しく接続し電圧・電流をかけると、p型半導体の内部では「正孔」と呼ばれる正の電荷をn型半導体との結合部分に運びます。
逆にn型半導体内部では「電子」と呼ばれる負の電荷をp型半導体との結合部分に運びます。
そしてこの「正孔」と「電子」が合わさり「再結合」することで、そこで生じたエネルギー光となります
プラスとマイナスの共生を正しく接続しない場合、各電荷は両端に集まることで「再結合」が起こらずエネルギーが発生しないために光らないという現象となります。

電気にはご存じのように電圧・電流の二つがあり、豆電球などはこの2つの組み合わせで明るさを決定できます。
なので、電池で光る豆電球のライトなどは、電池の残量が少なくなるとだんだん暗くなっていきます。

LEDの場合は、豆電球のように電圧・電流に残量によって明るさが変わるわけではありません。
決められた既定の電圧がかからないと光ることができません。
正しい電圧がかかって光る前提のもと、抵抗の量で流す電流を変化することで明るさが変わってきます。

LEDをよく見ると下記のように2つの離れた金属板でできています。
この広い方がカソード(n型半導体)狭い方がアノード(p型半導体)で間に空いている隙間部分で再結合が起き光に変わります。

※足は基板に取り付けるサイズによって切って今うので、実際に基板についている状態ではわかりませんが、購入したばかりの時は、カソード側がアノード側がく作られています。

LEDは正式には Light Emitting Diode (ライト・エミッティング・ダイオード=光・発する・ダイオード)で日本語では発光ダイオードと呼びます。

そのため、電子回路ではダイオードのシンボルが光っている状態で書き、ほとんどの回路に電流を制御する抵抗がつけられています。

ArduinoとLEDの接続について

LEDをArduinoボード(電気回路としてCPUのポートに)接続するには、HIGHを出力して光らせる方法と、LOWを出力して光らせる方法の2つの方法があります。

アクティブLOW

左の図はLEDのアノードを+5Vに接続し、カソード側をArduinoの7番ピンに接続しました。
つまり常にLEDのアノードには5Vの電圧がかかっています。
プログラムで光らせようとした場合、7番ピンをマイナス(GND)にします。
つまりプログラムでは、digitalWriteLOWを出力すれば、LEDが光ることになります。
LOWで動作する接続ですからこれをアクティブLOWと呼びます。

アクティブHIGH

右の図はLEDのアノードを7番ピンに接続し、カソード側をGNDに接続しました。
つまり常にLEDのには何も電圧がかかっていません。
プログラムで光らせようとした場合、7番ピンをプラス(+5V)にします。
つまりプログラムでは、digitalWriteHIGHを出力すれば、LEDが光ることになります。
HIGHで動作する接続ですからこれをアクティブHIGHと呼びます

◆Arduinoプログラミングについて


Arduinoを利用して、C,C++言語でクムクムをコントロールするプログラムを作り、クムクムロボットのボード内に書き込んで直接動かすことができます。
スクラッチやPythonなどより、より早く・より自由に動かすことができます。
CPUから各パーツを直接コントロールするプログラムを作るため、電気的な知識をしっかりマスターすることができます。

    1.開発環境

    WindowsまたはMacなど、ArduinoIDEがインストールされたパソコンとクムクムをマイクロUSBのケーブルで結びます。
    ※ArduinoIDEは <こちら>から最新バージョンをダウンロードすることができます。
    ※USBケーブルは必ずデータ通信が可能なケーブルをご用意ください。(中にはスマホ用などで充電専用のケーブルもあります)

    2.クムクムのCPUを選択する

    ArduinoIDEを起動し、お使いのクムクムの機種にあったCPUを選択します。
    Qumcum[QX-001R3J]の場合には【ArduinoLeonardo】を、QumcumPRO/W[QX-001R321J/321E]の場合にはBoards ManagerからESP32を選択します。
    ESP32が選択項目に現れない場合は、ESP32用のライブラリーなどをインストールしてください。(インストール方法などはArduino関連サイトなどから検索します。※参考サイト <ここ> リンク等は予告なく切れる場合があります。)

    ●使用CPU
    Qumcum[QX-001R3J] … ATMEGA32U4
    QumcumPRO/W[QX-001R321J/E] … ESP32 WROOM32-D,E

    3.プログラミング

    各ボードの情報を参考にプログラミングを行います。
    具体的なプログラミングについては、随時サンプルプログラムと技術情報をクムクムライブラリー <3J> <321J/E> に掲載していきますので参考にプログラミングを進めてください。また、下記のボードマニュアルやネット情報を利用し独自にプログラミングをしていくことも可能です。

    Qumcum[QX-001R3J] のボードマニュアルは  <こちら>
    QumcumPRO/W[QX-001R321J/E]のボードマニュアルは <こちら>

    4.書き込み

    プログラムができたら、パソコンとクムクムの接続されているポートを合わせ、その後書き込みボタン(右スクリーンショット赤い〇矢印)をクリックします。
    クリック後、C言語で書かれたプログラムは機械語にコンパイルされ、USBケーブルを経由してロボットのCPUに書き込まれます。
    書き込みが完了すると、プログラムは自動で実行され、作られたプログラム通りにロボットは動きます。
    もし思い通りに動かなかったら、プログラムのどこかに間違えがあるので、直してもう一度書き込みます。
    ※Arduinoでは文法ミス以外は動かないプログラムでもCPUに書き込んで動かそうとしますので、書き込んでみなければ正しく動くかどうかがわかりません。
    ※また、CPUの中にあらかじめ書き込まれているArduinoシステムを壊してしまうプログラムも書き込めてしまうので、プログラミングは慎重に行ってください。

    ◆クムクムロボット公式サイトのマニュアル
    https://qumcum.com/wp-content/uploads/2022/08/start_scratch.pdf

    ◆Scratch(スクラッチ)で動く3Dロボット「3D-WEBクムクム」β版
    https://personal.qumcum.com/home3d/robo-real/

    ◆クムクムロボット(アマゾンQumcumストア)
    https://www.amazon.co.jp/stores/Qumcum/page/FFCFA57A-F592-49A0-9F23-3D90514E5E61?ref_=ast_bln

    ◆Youtubeにはたくさんの動画を載せています
    https://www.youtube.com/@qumcum/

    対応ロボット:Qmcum(QX-001R3J)

    色の組み合わせを使い、7色の点滅を作り、すべての点滅を繰り返すプログラムを作ってみます。クムクムの胸のLEDは、R(赤)G(緑)B(青)の各色の点灯と消灯を個別にコントロールすることができます。ある色を点灯させたまま別の色を点灯させることで色を混ぜあわせることが出来ます。

    点滅は、光る・消えるの連続自動動作なのでLEDの点灯と消灯を繰り返し行えば実現でき、変化がわかりやすいように間に1秒待ち(delayコマンド)を追加します。delayにはミリ秒をパラメータに渡しますので1秒待ちはdelay(1000)と書きます。

    LEDの点灯と消灯はLEDポートにArduinoの標準関数digitalWriteを使って HIGHを出力することでLEDは点灯し、LOWを出力すればLEDを消灯することが出来ます。

    • A0:赤
    • A1:青
    • A2:緑

    ソースコード

    
    void setup() {
      // put your setup code here, to run once:
      pinMode(A0, OUTPUT);
      pinMode(A1, OUTPUT);
      pinMode(A2, OUTPUT);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      // 赤(Red)
      digitalWrite(A0, HIGH);
      delay(1000);
      digitalWrite(A0, LOW);
      delay(1000);
    
      // 青(Blue)
      digitalWrite(A1, HIGH);
      delay(1000);
      digitalWrite(A1, LOW);
      delay(1000);
    
      // 緑(Green)
      digitalWrite(A2, HIGH);
      delay(1000);
      digitalWrite(A2, LOW);
      delay(1000);
    
      // マゼンタ(Magenta)
      digitalWrite(A0, HIGH);
      digitalWrite(A1, HIGH);
      delay(1000);
      digitalWrite(A0, LOW);
      digitalWrite(A1, LOW);
      delay(1000);
    
      // 黄色(Yellow)
      digitalWrite(A0, HIGH);
      digitalWrite(A2, HIGH);
      delay(1000);
      digitalWrite(A0, LOW);
      digitalWrite(A2, LOW);
      delay(1000);
    
      // シアン(Cyan)
      digitalWrite(A1, HIGH);
      digitalWrite(A2, HIGH);
      delay(1000);
      digitalWrite(A1, LOW);
      digitalWrite(A2, LOW);
      delay(1000);
    
      // 白(White)
      digitalWrite(A0, HIGH);
      digitalWrite(A1, HIGH);
      digitalWrite(A2, HIGH);
      delay(1000);
      digitalWrite(A0, LOW);
      digitalWrite(A1, LOW);
      digitalWrite(A2, LOW);
      delay(1000);
    }
    

    関数

    pinMode        digitalWrite        delay

    RGB-LEDについて

    クムクムの胸のLEDは、R(赤)G(緑)B(青)の各色の点灯と消灯を個別にコントロールすることができます。ある色を点灯させたまま別の色を点灯させることで色を混ぜあわせることもできます。

    R(赤)G(緑)B(青)は『光の三原色』と呼び、人間が識別できるすべての色をこの三色を使って作り出すことができます。実際には、R(赤)G(緑)B(青)のそれぞれの輝度を微妙に変えて色を作り出します。

    Arduino CプログラミングではA0~A2のアナログポートに接続されているため、アナログ出力を行うことで輝度を変化させることが可能です。

    QumcumではArduinoLeonardoに使用されているCPU(ATMEGA32U4)を使い、下記のようにArduinoLeonardoとまったく同じ構成で部品を接続しています。

    プログラムでの制御はArduinoのコマンドを使って簡単にできます。

    LEDの電気的な特性

    LEDには電池と同じようにプラスマイナスの極性を持っていて、プラス「アノード」、マイナス「カソード」と呼びます。
    このアノード側はp型という半導体、カソード側はn型という2つの半導体でできています。
    アノードに電源のプラス、カソードに電源のマイナスを正しく接続し電圧・電流をかけると、p型半導体の内部では「正孔」と呼ばれる正の電荷をn型半導体との結合部分に運びます。
    逆にn型半導体内部では「電子」と呼ばれる負の電荷をp型半導体との結合部分に運びます。
    そしてこの「正孔」と「電子」が合わさり「再結合」することで、そこで生じたエネルギー光となります
    プラスとマイナスの共生を正しく接続しない場合、各電荷は両端に集まることで「再結合」が起こらずエネルギーが発生しないために光らないという現象となります。

    電気にはご存じのように電圧・電流の二つがあり、豆電球などはこの2つの組み合わせで明るさを決定できます。
    なので、電池で光る豆電球のライトなどは、電池の残量が少なくなるとだんだん暗くなっていきます。

    LEDの場合は、豆電球のように電圧・電流に残量によって明るさが変わるわけではありません。
    決められた既定の電圧がかからないと光ることができません。
    正しい電圧がかかって光る前提のもと、抵抗の量で流す電流を変化することで明るさが変わってきます。

    LEDをよく見ると下記のように2つの離れた金属板でできています。
    この広い方がカソード(n型半導体)狭い方がアノード(p型半導体)で間に空いている隙間部分で再結合が起き光に変わります。

    ※足は基板に取り付けるサイズによって切って今うので、実際に基板についている状態ではわかりませんが、購入したばかりの時は、カソード側がアノード側がく作られています。

    LEDは正式には Light Emitting Diode (ライト・エミッティング・ダイオード=光・発する・ダイオード)で日本語では発光ダイオードと呼びます。

    そのため、電子回路ではダイオードのシンボルが光っている状態で書き、ほとんどの回路に電流を制御する抵抗がつけられています。

    ArduinoとLEDの接続について

    LEDをArduinoボード(電気回路としてCPUのポートに)接続するには、HIGHを出力して光らせる方法と、LOWを出力して光らせる方法の2つの方法があります。

    アクティブLOW

    左の図はLEDのアノードを+5Vに接続し、カソード側をArduinoの7番ピンに接続しました。
    つまり常にLEDのアノードには5Vの電圧がかかっています。
    プログラムで光らせようとした場合、7番ピンをマイナス(GND)にします。
    つまりプログラムでは、digitalWriteLOWを出力すれば、LEDが光ることになります。
    LOWで動作する接続ですからこれをアクティブLOWと呼びます。

    アクティブHIGH

    右の図はLEDのアノードを7番ピンに接続し、カソード側をGNDに接続しました。
    つまり常にLEDのには何も電圧がかかっていません。
    プログラムで光らせようとした場合、7番ピンをプラス(+5V)にします。
    つまりプログラムでは、digitalWriteHIGHを出力すれば、LEDが光ることになります。
    HIGHで動作する接続ですからこれをアクティブHIGHと呼びます

    ◆Arduinoプログラミングについて


    Arduinoを利用して、C,C++言語でクムクムをコントロールするプログラムを作り、クムクムロボットのボード内に書き込んで直接動かすことができます。
    スクラッチやPythonなどより、より早く・より自由に動かすことができます。
    CPUから各パーツを直接コントロールするプログラムを作るため、電気的な知識をしっかりマスターすることができます。

      1.開発環境

      WindowsまたはMacなど、ArduinoIDEがインストールされたパソコンとクムクムをマイクロUSBのケーブルで結びます。
      ※ArduinoIDEは <こちら>から最新バージョンをダウンロードすることができます。
      ※USBケーブルは必ずデータ通信が可能なケーブルをご用意ください。(中にはスマホ用などで充電専用のケーブルもあります)

      2.クムクムのCPUを選択する

      ArduinoIDEを起動し、お使いのクムクムの機種にあったCPUを選択します。
      Qumcum[QX-001R3J]の場合には【ArduinoLeonardo】を、QumcumPRO/W[QX-001R321J/321E]の場合にはBoards ManagerからESP32を選択します。
      ESP32が選択項目に現れない場合は、ESP32用のライブラリーなどをインストールしてください。(インストール方法などはArduino関連サイトなどから検索します。※参考サイト <ここ> リンク等は予告なく切れる場合があります。)

      ●使用CPU
      Qumcum[QX-001R3J] … ATMEGA32U4
      QumcumPRO/W[QX-001R321J/E] … ESP32 WROOM32-D,E

      3.プログラミング

      各ボードの情報を参考にプログラミングを行います。
      具体的なプログラミングについては、随時サンプルプログラムと技術情報をクムクムライブラリー <3J> <321J/E> に掲載していきますので参考にプログラミングを進めてください。また、下記のボードマニュアルやネット情報を利用し独自にプログラミングをしていくことも可能です。

      Qumcum[QX-001R3J] のボードマニュアルは  <こちら>
      QumcumPRO/W[QX-001R321J/E]のボードマニュアルは <こちら>

      4.書き込み

      プログラムができたら、パソコンとクムクムの接続されているポートを合わせ、その後書き込みボタン(右スクリーンショット赤い〇矢印)をクリックします。
      クリック後、C言語で書かれたプログラムは機械語にコンパイルされ、USBケーブルを経由してロボットのCPUに書き込まれます。
      書き込みが完了すると、プログラムは自動で実行され、作られたプログラム通りにロボットは動きます。
      もし思い通りに動かなかったら、プログラムのどこかに間違えがあるので、直してもう一度書き込みます。
      ※Arduinoでは文法ミス以外は動かないプログラムでもCPUに書き込んで動かそうとしますので、書き込んでみなければ正しく動くかどうかがわかりません。
      ※また、CPUの中にあらかじめ書き込まれているArduinoシステムを壊してしまうプログラムも書き込めてしまうので、プログラミングは慎重に行ってください。

      ◆クムクムロボット公式サイトのマニュアル
      https://qumcum.com/wp-content/uploads/2022/08/start_scratch.pdf

      ◆Scratch(スクラッチ)で動く3Dロボット「3D-WEBクムクム」β版
      https://personal.qumcum.com/home3d/robo-real/

      ◆クムクムロボット(アマゾンQumcumストア)
      https://www.amazon.co.jp/stores/Qumcum/page/FFCFA57A-F592-49A0-9F23-3D90514E5E61?ref_=ast_bln

      ◆Youtubeにはたくさんの動画を載せています
      https://www.youtube.com/@qumcum/