スクラッチくらぶ中級編ーYahboom-car

Yahboom社製マイクロビットスマートロボットカー(Yahboom micro:bit smart robot car)

  • 車はMicro:bitボード、学習キット、拡張ボードのコレクションであり、Micro:bitを最も単純なものからより複雑なものまで学ぶことができます。
  • 車両モデルは小さくてかわいいです。ほとんどの部品はネジで接続されており、一部の部品はアンチリバースソケットで設計されているため、取り付けが簡単で安全です。
  • 車両のシャーシとして垂直スロット構造の多機能拡張ボード。RGBライト、センサー、ブザー、さまざまなモジュールインタフェイスなどが装備されています。また、2つのDCモーターと3つのサーボを同時に駆動できます。
  • 複数の機能をサポートしています:追跡、超音波障害物回避、追従、光の変色、歌、音楽の再生など。
  • 赤外線リモコンで操作でき、Android / iOSではAPPリモコンで操作できます。
  • JavaScriptグラフィカルプログラミング、Python、その他のmicro:bitプログラミング手法をサポートしています
  • 30種類以上の実験コースが用意されています

★★★★★ ★★★★★ ★★★★★

★★★★★ ★★★★★ ★★★★★

Yahboom社製マイクロビットスマートロボットカー

ここを参照してください。 http://www.yahboom.net/study/Bitbot

Microbit-Smart-Car-master.zip ファイルをダウンロードして解凍します。

ここを参照してください。 https://github.com/YahboomTechnology/Microbit-Smart-Car

★★★★★ ★★★★★ ★★★★★

1.使用前の準備

①.充電方法について
この車は、USBケーブルを使用して充電できます。 まず、車の電源スイッチをオフにします。

USBケーブルが車の拡張ボードの充電インタフェイスに挿入されます。充電中は、インジケータライトが単色になります。以下に示すように、バッテリーが完全に充電されると、インジケータライトが別の色に変わります。

注:充電インタフェースは充電にのみ使用でき、プログラムのダウンロードには使用できません。

②.プログラムをダウンロードする必要がある場合は、USBケーブルを使用できます。USBケーブルの一端をmciro:bitボードに接続する必要があります。

注:USBケーブルが充電ポートに接続されているため、プログラムをダウンロードできません。

③.micro:bit拡張ボードの詳細については、次のWebサイトにアクセスしてください。

ここを参照してください。 http://www.yahboom.net/study/breakout

★★★★★ ★★★★★ ★★★★★

2.リモコン操作

①.お読みください
Bluetoothアプリで車をリモートコントロールする場合は、次の手順を実行する必要があります。

注:Bluetoothプログラムを開くためにマイクロビットオンラインプログラミングを使用しないでください。そうしないと、エラーが発生します。Bluetoothリモコンを使用する場合は、提供されたhexファイルをマイクロビット側に直接コピーしてください。

Androidユーザーは、ブラウザーで次のQRコードをスキャンするか、Playストアで「Mbit」を検索してAPPをダウンロードします。

iOSユーザーは、カメラで次のQRコードをスキャンするか、App Storeで「Mbit」を検索してAPPをダウンロードします。

アプリをダウンロードしたら、インストールする必要があります。

注:インストール中にロケーションの権利を取得するように求められた場合は、[許可]をクリックしてロケーションのアクセス許可を取得する必要があります。

②.Micro:bitボードに提供されたBluetoothリモートコントロールコードをダウンロードします。下図に示すように、ロボットのドットマトリックスに「S」が表示されていることがわかります。これは、Bluetoothが接続されていない状態です。

③.次に、AndroidフォンのBluetoothをオンにする必要があります。下図のようにBluetoothリモートコントロールアプリを開きます。

④.携帯電話がロボットに近づくと、Bluetoothが自動的に接続されます。下図のように「CONNECT」をクリックすることによって接続することができます。

⑤.接続に成功したら、下図のようにメイン制御ページに入りロボットを制御できます。そして、micro:bitは下図のようなパターンに切り替わります。

⑥.Bluetoothが切断されている場合、micro:bitは下図のようなパターンに切り替わります。

★★★★★ ★★★★★ ★★★★★

3.Bluetooth APPマニュアル

①.Bluetooth APKでロボットカーを操作したい。APPインタフェースの左上隅にBluetooth信号が表示されない場合は、以下に示すように、車の電源スイッチをオンにし、スマートフォンのBluetoothをオンにし、Bluetooth APKを開きます。

②.Bluetooth設定→BBC micro:bit [zuzav] ペアリング

③.次に、Bluetoothのペアリングを開始する必要があります。micro:bitボードの「A」ボタンと「B」ボタンを同時に押してから、リセットボタンを押します(リセットボタンを押してから離します)。以下、左の画像に示すように、micro:bitドットマトリックスにアニメーションが表示されます。アニメーションの表示が完了すると、右の画像に示すように、Bluetoothのロゴがドットマトリックスに表示されます。

④.micro:bitドットマトリックスはランダムなドットパターンで表示されます。

⑤.このパターンが表示されたら、この時点で「A」、「B」ボタンを離す必要があります。APPインタフェースのmicro:bit Bluetoothデバイスオプションをクリックします。

⑥.次に、micro:bitドットマトリックスで左矢印があることがわかります。同時に、ペアリングパスワードのインタフェースがAPPインタフェースに表示されます。

⑦.micro:bitボードの「A」ボタンを押す必要があります。micro:bitドットマトリックスがいくつかの数字(通常は6桁)を表示することがわかります。・・・・6桁のパスワード

(重要)これらの6つの番号を覚えておいてください。これらはBluetoothペアリングパスワードです。

⑧.APPペアリングインタフェイスにパスワードを入力してペアリングしてください。ペアリングが完了すると、下図のようなステータスが表示されます。

⑨. APPインタフェースに戻り、下図のように「PairConnect」をクリックしてペアリングを行い、右上隅の場所をクリックします。

これで、Bluetoothは正常に接続できます。

★★★★★ ★★★★★ ★★★★★

■micro:bit拡張ボード(YBoard)仕様

●インターフェース(おもて)
WS2812 RGB LED(neopixel互換機能) 3個
障害物センサー 1個
10mm RGB LED 2個(左右1対)
パッシブブザー 1個
赤外線受信機(専用の赤外線リモコンに対応)1個
拡張I/O端子(P4,P5,P6,P7,P10に対応)
IICインターフェース(IIC接続用 3.3V,GND,SCL,SDA)
サーボモータインターフェース 3個
PWM出力端子 3個
シリアルインターフェイス 1個
SPIインターフェース(3.3V,CS,SCK,MIS,MOS)
充電用microUSBポート 1個
バッテリー接続用インターフェース 1個

●インターフェース(うら)
反射光センサートラッキング用(TCRT5000) 2個
DCモーター接続インターフェース 2個

★★★★★ ★★★★★ ★★★★★

■micro:bit拡張ボード(YBoard)の回路図

★★★★★ ★★★★★ ★★★★★

図.拡大図-1

★★★★★ ★★★★★ ★★★★★

図.拡大図-2

★★★★★ ★★★★★ ★★★★★

micro:bit との接続に必要な40P端子図

★★★★★ ★★★★★ ★★★★★

4.プロジェクトのインストール手順

ここを参照してください。 https://github.com/lzty634158/yahboom_mbit_en をインストールします。

「拡張機能」をクリックします。

「検索または、プロジェクトのURLを入力….」欄に、「https://github.com/lzty634158/yahboom_mbit_en」と入力して、「Enter」キーをクリックします。

Mbit_Display、Mbit_Sensor、Mbit_Input、Mbit_Music、Mbit_Motor、Mbit_Robot、Mbit_IR が追加されました。

★★★★★ ★★★★★ ★★★★★

別の操作方法としては、「拡張機能」をクリックします。

「ファイルを読み込む」をクリックします。

「開く.mkcdまたは.hexファイルを選んでください。」で、枠内にファイルの有るフォルダーに続き、「microbit-bitbot-base.hex」と入力して、「つづける」をクリックします。

Mbit_Display、Mbit_Sensor、Mbit_Input、Mbit_Music、Mbit_Motor、Mbit_Robot、Mbit_IR が追加されました。

★★★★★ ★★★★★ ★★★★★

5.基本レッスン

Scratch(スクラッチ)でロボットを動かそう!

Microbit-Smart-Car-master.zip ファイルを解凍する。

①.Lesson-1.「ハートビート」
 ・・・・ Lesson 1 Heart beat.hex
②.Lesson-2.「誰が速く押しているかを確認する」
 ・・・・ Lesson 2 See who is pressing fast.hex
③.Lesson-3.「砂の流れ」
 ・・・・ Lesson 3 Flowing sand.hex
④.Lesson-4.「DIY温度計」
 ・・・・ Lesson 4 DIY themometer.hex
⑤.Lesson-5.「監督者」
 ・・・・ Lesson 5 Direction follower.hex
⑥.Lesson-6.「音楽を聴く」
 ・・・・ Lesson 6 Listen to music.hex
⑦.Lesson-7.「サイコロゲーム」
 ・・・・ Lesson 7 Dice game.hex
⑧.Lesson-8.「おはよう、おやすみなさい」
 ・・・・ Lesson 8 Good morning, good night.hex

例えば、MakeCode for micro:bitnアプリを立ち上げて、「読み込む」をクリックします。

次に、下図の画面が表示されます。この場合は、「ファイルを読み込む」をクリックします。

下図の画面が表示されるので、「参照」をクリックして、例えば、Lesson-7.「サイコロゲーム」の場合、「 Lesson 7 Dice game」フォルダにある、「Lesson 7 Dice game.hex」ファイルを指定します。

「つづける」をクリックすると、下図のような画面が表示されます。

パソコンとmicro:bitをUSBケーブルで接続します。「ダウンロード」をクリックして、hexファイルをmicro:bit にダウンロードします。

★★★★★ ★★★★★ ★★★★★

または、パソコンとmicro:bitをUSBケーブルで接続します。パソコンのエクスプローラを開いて、MICROBITドライブを開いて、所定の場所へhexファイルを貼り付けると、Micro:bit側で解読&吸収され、実行開始されます。

※実行結果は、実際に動きました!(感動)

★★★★★ ★★★★★ ★★★★★

6.上級レッスン

Scratch(スクラッチ)でロボットを動かそう!

Microbit-Smart-Car-master.zip ファイルを解凍する。

①.Lesson-1.「ブザーの歌」
 ・・・・ Lesson 1 Buzzer singing.hex
②.Lesson-2.「職人の音楽」
 ・・・・ Lesson 2 Craftsman music.hex
③.Lesson-3.「カラフルなサーチライト」
 ・・・・ Lesson 3 Colorful searchlight.hex
④.Lesson-4.「カラフルな車のライト」
 ・・・・ Lesson 4 Colorful car light.hex
⑤.Lesson-5.「フルライトコントロール」
 ・・・・ Lesson 5 Full light control.hex
⑥.Lesson-6.「Light alone」
 ・・・・ Lesson 6 Light alone.hex
⑦.Lesson-7.「競馬ランプ」
 ・・・・ Lesson 7 Horse race lamp.hex
⑧.Lesson-8.「呼吸ランプ」
 ・・・・ Lesson 8 Breathing lamp.hex
⑨.Lesson-9.「超音波センサー」
 ・・・・ Lesson 9 Ultrasonic sensor.hex
⑩.Lesson-10.「サーボ制御」
 ・・・・ Lesson 10 Servo control.hex
⑪.Lesson-11.「赤外線制御」
 ・・・・ Lesson 11 Infrared control.hex

例えば、MakeCode for micro:bitnアプリを立ち上げて、「読み込む」をクリックします。

次に、下図の画面が表示されます。この場合は、「ファイルを読み込む」をクリックします。

下図の画面が表示されるので、「参照」をクリックして、例えば、Lesson-10.「サーボ制御」の場合、「 Lesson 10 Servo control」フォルダにある、「Lesson 10 Servo control.hex」ファイルを指定します。

以下、同様な操作になります。

★★★★★ ★★★★★ ★★★★★

(例1)Lesson10 Servo control「サーボ制御」の場合

サーボモータのコネクタを本体基板の「SERVO」のコネクタに繋げます。「茶色」は「GND」、「赤」は「5V」、「橙」は「IO(信号線)」に接続します。

プログラムをダウンロードし、「A」キーを押すと、ドットマトリックスが「0」表示で、サーボが「0」度になり、「B」キーを押すと、ドットマトリックスが「180」表示で、サーボが「180」度になります。

※実行結果は、実際に動きました!(感動)

★★★★★ ★★★★★ ★★★★★

(例2)Lesson11 Infrared control 「赤外線制御」の場合

プログラムをダウンロードしたら、リモコンで車を操作できます。

ボックス「1」のボタンを押すと、ライトをオフになります。
ボックス「2」のボタンを押すと、さまざまな色のライトを点灯できます。
ボックス「3」内のボタンを押すと、さまざまな音を再生したり、スコア用の曲を再生したりできます。
ボックス「4」のボタンを押して、ドットマトリックスにさまざまなパターンを表示します。

※実行結果は、実際に動きました!(感動)

★★★★★ ★★★★★ ★★★★★

(例3)Lesson5 Full light control 「フルライトコントロール」の場合

プログラムをダウンロードすると、ライトが「あい」色に点灯します。

※実行結果は、実際に動きました!(感動)

★★★★★ ★★★★★ ★★★★★

7.ロボットレッスン

Scratch(スクラッチ)でロボットを動かそう!

Microbit-Smart-Car-master.zip ファイルを解凍する。

①.Lesson-1.「ロボットの前進」
 ・・・・ Lesson 1 Robot forward.hex
②.Lesson-2.「ファンシーアクション」
 ・・・・ Lesson 2 Fancy action.hex
③.Lesson-3.「速度の調整」
 ・・・・ Lesson 3 Adjust speed.hex
④.Lesson-4.「歌って踊る」
 ・・・・ Lesson 4 Sing and dance.hex
⑤.Lesson-5.「ライン追跡」
 ・・・・ Lesson 5 Tracking.hex
⑥.Lesson-6.「障害物を回避する」
 ・・・・ Lesson 6 Avoid obstacle.hex
⑦.Lesson-7.「フォロー:追随」
 ・・・・ Lesson 7 Following.hex
⑧.Lesson-8.「超音波障害物回避」
 ・・・・ Lesson 8 Ultrasonic obstacle avoidance.hex
⑨.Lesson-9.「赤外線制御」
 ・・・・ Lesson 9 Infrared control.hex
⑩.Lesson-10.「Android APPコントロール」
 ・・・・ Lesson 10 Android APP control.hex
⑪Lesson-11.「IOS APPコントロール」
 ・・・・ Lesson 11 IOS APP control.hex

例えば、MakeCode for micro:bitnアプリを立ち上げて、「読み込む」をクリックします。

次に、下図の画面が表示されます。この場合は、「ファイルを読み込む」をクリックします。

下図の画面が表示されるので、「参照」をクリックして、例えば、Lesson-1.「ロボットの前進」の場合、「 Lesson 1 Robot forward」フォルダにある、「Lesson 1 Robot forward.hex」ファイルを指定します。

以下、同様な操作になります。

※実行結果は、実際に動きました!(感動)

★★★★★ ★★★★★ ★★★★★

(例1)Lesson5 Tracking「ライン追跡」の場合

ロボットトラッキングを試してみましょう。最初に黒いテープを使用して白い地面(白い紙の上)に円を貼り付けます。ロボットは円に沿って追跡を続けます。子供たちと一緒に試してみましょう。

赤外線センサーの基本原理は、物体の反射特性を利用することです。この実験は黒い線を進んで行きます。赤外線放射が黒い線上にある場合、それは黒い線によって吸収され、赤外線レシーバーで反射されます。車のパトロールモジュールが黒い線を検出すると、インジケータライトが点灯します。白い物体を検出すると、インジケーターライトが消灯します。

★★★★★ ★★★★★ ★★★★★

※実行結果は、実際に動きました!(感動)

★★★★★ ★★★★★ ★★★★★

(例2)Lesson10 Android APP control「Android APPコントロール」の場合

パソコンとmicro:bitをUSBケーブルで接続します。パソコンのエクスプローラを開いて、MICROBITドライブを開いて、所定の場所へhexファイルを貼り付けると、Micro:bit側で解読&吸収され、実行開始されます。

下図のように、Lesson10 Android APP control.hex ファイルを貼り付けます。

貼り付けが完了すると、micro:bit側でマトリックスブロックが次のような表示になります。

下図のように、「PairConnect」をクリックすることで、Androidスマホとmicro:bitのBluetoothのペアリングを行います。

AndroidスマホのBST-Mbitアプリ画面の「CONNECT」をクリックします。

Bluetooth接続が完了すると、次の画面が表示されます。

正常にBluetooth接続されると、micro:bit側でマトリックスブロックが左側図になりますが、接続出来なかったときは右側図になります。

①.基本機能

②.音楽・・・・画面上の鍵盤を叩くと音が出る

③.車のライト

④.RGB

⑤.モード

モードには、Line Tracking(ライン追跡)、Avoid obstacle(障害物回避)、Following(フォロー:追随)があります。

※実行結果は、実際に動きました!(感動)

★★★★★ ★★★★★ ★★★★★

8.Pythonレッスン

MicroPython(Mu)でロボットを動かそう!

Microbit-Smart-Car-master.zip ファイルを解凍する。

①.Lesson-1.「こんにちは、世界!」
 ・・・・ 1.Hellow,World.py
②.Lesson-2.「組み込み画像を表示する」
 ・・・・ 2.Display built-in image.py
③.Lesson-3.「カスタム画像を表示する」
 ・・・・ 3.Display custom image.py
④.Lesson-4.「カスタムアニメーションを表示する」
 ・・・・ 4.Display custom animation.py
⑤.Lesson-5.「速く押している人を確認する」
 ・・・・ 5.See who is pressing fast.py
⑥.Lesson-6.「歌を歌う」
 ・・・・ 6.Sing a song.py
⑦.Lesson-7.「カスタムミュージックペインタを再生する」
 ・・・・ 7.Play the custom music Painters.py
⑧.Lesson-8.「サイコロゲーム」
 ・・・・ 8.Dice game.py
⑨.Lesson-9.「方向フォロワー」
 ・・・・ 9.Direction follower.py
⑩.Lesson-10.「マイクロビットの音声通話」
 ・・・・ 10.microbit voice talk.py
⑪.Lesson-11.「カラフルなウォーターライト」
 ・・・・ 11.Colorful water lights.py
⑫.Lesson-12.「カラフルなマーキー」
 ・・・・ 12.Colorful marquee.py
⑬.Lesson-13.「カラフルな呼吸灯」
 ・・・・ 13.Colorful breathing light.py
⑭.Lesson-14.「ロボットの前進」
 ・・・・ 14.Robot advance.py

①.例えば、http://python.microbit.org/V/2.0/ からpython用マイクロビットエディターを開き、オンライン版で使用する。Pythonでmicro:bit用プログラムを作成できます。

ここを参照してください。 http://python.microbit.org/V/2.0/ をクリックします。

「Load/Save」をクリックします。

「Load/Save」をクリックすると、下図のような画面が表示されます。

「Or browse for a file」をクリックして、例えば、Lesson-8.「サイコロゲーム」の場合、「 8.Dice game」フォルダにある、「8.Dice game.py」ファイルを指定します。下図のような画面が表示されます。

パソコンとmicro:bitをUSBケーブルで接続し、「Connect」をクリックしてmicro:bit と接続します。また、「Download」をクリックして、pyファイルをmicro:bit にダウンロードします。

「Connect」をクリックすると、下図のような画面が表示されますので、「BBC micro:bit CMSIS-DAP」を選択して、「接続」をクリックします。

次に、「Download」をクリックすると、下図のような画面が表示されて、

★★★★★ ★★★★★ ★★★★★

②.また、別の方法があります。

例えば、https://codewith.mu/ からMuエディターをダウンロードし、オフライン版で使用する。MicroPythonでmicro:bit用プログラムを作成出来ます。

ここを参照してください。 https://codewith.mu/ をクリックして、Muをインストールします。

「Mu」を立ち上げると、下図のような画面が表示されます。

「モード」をクリックします。

下図のような画面が表示されます。

「BBC micro:bit」を選択して、「OK」をクリックします。次に「開く」をクリックします。

「開く」をクリックして、例えば、Lesson-8.「サイコロゲーム」の場合、「 8.Dice game」フォルダにある、「8.Dice game.py」ファイルを指定します。下図のような画面が表示されます。ます。

下図のように、パソコンとmicro:bitをUSBケーブルで接続します。「転送」をクリックしてhexファイルをmicro:bit に「転送」します。また、「ファイル」をクリックして、micro:bit側にあるhexファイルをパソコンにアップロードすることが出来ます。

★★★★★ ★★★★★ ★★★★★

(例1)Lesson14 Robot advance「ロボットの前進」の場合

from microbit import *
import ustruct
import math

# Registers/etc:
PCA9685_ADDRESS = 0x41
MODE1 = 0x00
MODE2 = 0x01
SUBADR1 = 0x02
SUBADR2 = 0x03
SUBADR3 = 0x04
PRESCALE = 0xFE
LED0_ON_L = 0x06
LED0_ON_H = 0x07
LED0_OFF_L = 0x08
LED0_OFF_H = 0x09
ALL_LED_ON_L = 0xFA
ALL_LED_ON_H = 0xFB
ALL_LED_OFF_L = 0xFC
ALL_LED_OFF_H = 0xFD

# Bits:
RESTART = 0x80
SLEEP = 0x10
ALLCALL = 0x01
INVRT = 0x10
OUTDRV = 0x04
RESET = 0x00

class PCA9685():
   """PCA9685 PWM LED/servo controller."""

    def __init__(self, address=PCA9685_ADDRESS):
        """Initialize the PCA9685."""
        self.address = address
        i2c.write(self.address, bytearray([MODE1, RESET]))
        self.set_all_pwm(0, 0)
        i2c.write(self.address, bytearray([MODE2, OUTDRV]))
        i2c.write(self.address, bytearray([MODE1, ALLCALL]))
        sleep(5) # wait for oscillator
        i2c.write(self.address, bytearray([MODE1]))
        mode1 = i2c.read(self.address, 1)
        mode1 = ustruct.unpack('<H', mode1)[0]
        mode1 = mode1 & ~SLEEP # wake up (reset sleep)
        i2c.write(self.address, bytearray([MODE1, mode1]))
        sleep(5) # wait for oscillator

    def set_pwm_freq(self, freq_hz):
        """Set the PWM frequency to the provided value in hertz."""
        prescaleval = 25000000.0 # 25MHz
        prescaleval /= 4096.0 # 12-bit
        prescaleval /= float(freq_hz)
        prescaleval -= 1.0
        # print('Setting PWM frequency to {0} Hz'.format(freq_hz))
        # print('Estimated pre-scale: {0}'.format(prescaleval))
        prescale = int(math.floor(prescaleval + 0.5))
        # print('Final pre-scale: {0}'.format(prescale))
        i2c.write(self.address, bytearray([MODE1]))
        oldmode = i2c.read(self.address, 1)
        oldmode = ustruct.unpack('<H', oldmode)[0]
        newmode = (oldmode & 0x7F) | 0x10 # sleep
        i2c.write(self.address, bytearray([MODE1, newmode])) # go to sleep
        i2c.write(self.address, bytearray([PRESCALE, prescale]))
        i2c.write(self.address, bytearray([MODE1, oldmode]))
        sleep(5)
        i2c.write(self.address, bytearray([MODE1, oldmode | 0x80]))

    def set_pwm(self, channel, on, off):
        """Sets a single PWM channel."""
        if on is None or off is None:
            i2c.write(self.address, bytearray([LED0_ON_L+4*channel]))
            data = i2c.read(self.address, 4)
            return ustruct.unpack('<HH', data)
        i2c.write(self.address, bytearray([LED0_ON_L+4*channel, on & 0xFF]))
        i2c.write(self.address, bytearray([LED0_ON_H+4*channel, on >> 8]))
        i2c.write(self.address, bytearray([LED0_OFF_L+4*channel, off & 0xFF]))
        i2c.write(self.address, bytearray([LED0_OFF_H+4*channel, off >> 8]))

    def set_all_pwm(self, on, off):
        """Sets all PWM channels."""
        i2c.write(self.address, bytearray([ALL_LED_ON_L, on & 0xFF]))
        i2c.write(self.address, bytearray([ALL_LED_ON_H, on >> 8]))
        i2c.write(self.address, bytearray([ALL_LED_OFF_L, off & 0xFF]))
        i2c.write(self.address, bytearray([ALL_LED_OFF_H, off >> 8]))

    def duty(self, index, value=None, invert=False):
        if value is None:
            pwm = self.set_pwm(index)
            if pwm == (0, 4096):
                value = 0
            elif pwm == (4096, 0):
                value = 4095
            value = pwm[1]
            if invert:
                value = 4095 - value
            return value
        if not 0 <= value <= 4095:
            raise ValueError("Out of range")
        if invert:
            value = 4095 - value
        if value == 0:
            self.set_pwm(index, 0, 4096)
        elif value == 4095:
            self.set_pwm(index, 4096, 0)
        else:
            self.set_pwm(index, 0, value)

# Initialise the PCA9685 using the default address (0x41).
pwm = PCA9685()

# Configure min and max servo pulse lengths
servo_min = 150 # Min pulse length out of 4096 0?
servo_max = 600 # Max pulse length out of 4096: 180?

# Set frequency to 60hz, good for servos.
pwm.set_pwm_freq(60)

display.show(Image.HAPPY)

pwm.set_pwm(12, 0, 4095)
pwm.set_pwm(13, 0, 0)
pwm.set_pwm(15, 0, 4095)
pwm.set_pwm(14, 0, 0)

pwm.set_pwm(3, 0, servo_min)
sleep(1000)

pwm.set_pwm(3, 0, servo_max)
sleep(1000)

※実行結果は、実際に動きました!(感動)

★★★★★ ★★★★★ ★★★★★

ダウンロード アプリケーション

https://github.com/YahboomTechnology/Microbit-Smart-car

★★★★★ ★★★★★ ★★★★★

ダウンロード ツール

①.アプリ(android)
http://www.yahboom.net/xiazai//Download/Android_APP/BST_Mbit.apk
②.IR Control.hex
http://www.yahboom.net/xiazai/Microbit robot/Download/Bitbot-Infrared-control.hex
③.Bluetooth Remote Control.hex
http://www.yahboom.net/xiazai/Microbit robot/Download/bitCar_bluetooth_control_20190103_2.hex
④.SCH
http://www.yahboom.net/xiazai/Microbit robot/Download/mbit_SCH.jpg
⑤.Bluetooth通信プロトコル
http://www.yahboom.net/xiazai/Microbit robot/Download/Bluetooth communication protocol.pdf

★★★★★ ★★★★★ ★★★★★