- APIの挙動を確認するために作成したサンプル
- (*)が付いたサンプルはサンプルはログの出力あり
- syslog_bluetooth以外のsyslogはHub上部のUSB経由
- 新しくプログラムを作成したい場合は,下記「プロジェクト作成用スクリプトを参照」
新規プロジェクト作成用のテンプレート.
使用方法は下記のプロジェクト作成用スクリプトを参照.
このフォルダ自体は編集しないことを推奨.
バッテリーの電流・電圧を取得して表示する.
hub_battery_get_current()
hub_battery_get_voltage()
シリアルインターフェスドライバを使用したサンプル.
bluetooth経由で文字列の送受信を行う.
コンソールはPybricksのコンソールを使用する.
Hubの電源投入後にPybricksのBluetoothボタンをクリックし,接続する.
(Hubが接続待ち状態のときには「READY」を表示し,接続が完了したらスマイルマークを表示する)
serial_opn_por()
serial_rea_dat()
serial_wri_dat()
押したボタンをディスプレイに表示する.
hub_button_is_pressed()
カラーセンサーでhsv値とrgb値を取得し、読み取ったhsv値、rgb値、及び色の種類を表示する.
pup_color_sensor_get_device()
pup_color_sensor_hsv()
pup_color_sensor_color()
pup_color_sensor_rgb()
カラーセンサーの各ライトを指定した輝度で点灯する.
pup_color_sensor_light_set()
pup_color_sensor_light_on()
pup_color_sensor_light_off()
カラーセンサーで反射光の輝度を測定し、ディスプレイとログに出力する.
pup_color_sensor_reflection()
hub_display_number()
カラーセンサーで周囲の明るさを測定し、明るさに応じて超音波センサのライトを点灯する.
pup_color_sensor_ambient()
カラーセンサーが取得する色を指定し、取得した色を表示する.
pup_color_sensor_detectable_colors()
モーターをDCモーターとして活用する.
pybricks_c_common_dcmotor_make_new()
pybricks_c_common_dcmotor_duty()
pybricks_c_common_dcmotor_stop()
pybricks_c_common_dcmotor_brake()
フォースセンサが接触を検知したら、フォースセンサが押されている力(N)を表示する.
pup_force_sensor_get_device()
pup_force_sensor_touched()
pup_force_sensor_force()
pup_force_sensor_distance()
IMUが検知した角速度の方向をディスプレイに表示する.
hub_imu_get_angular_velocity()
IMUが検知した温度をディスプレイに表示する.
hub_imu_get_temperature()
IMUが検知した加速度を出力する.
hub_imu_get_acceleration()
角速度から角度を計算してログ出力
Hub静止時の角速度が-1となる(Hubの個体差かもしれない)ため角速度が-1から0の範囲は0としている
hub_imu_get_angular_velocity()
ディスプレイに指定した文字や図形を表示する.ピクセルと輝度を指定して点灯する.while文を一周するごとにハブ内蔵ライトの色を切り替える.
hub_display_orientation()
hub_display_off()
hub_light_on_color()
hub_display_number()
hub_display_text_scroll()
hub_display_text()
hub_display_image()
hub_display_pixel()
hub_display_char()で文字を出力する.
hub_display_char()
ハブ内蔵ライトのhsv値を指定して点灯する.
hub_light_on_hsv()
ハブのボタンでモーターを操作する.
pup_motor_get_device()
pup_motor_set_speed()
pup_motor_stop()
pup_motor_brake()
pup_motor_hold()
pup_motor_get_speed()
モーターが動かされたらエンコーダー値を取得して出力する.180°以上回るとエンコーダー値をリセットする.
pup_motor_get_count()
pup_motor_reset_count()
モーターがストロールしているのを検知したらモーターをと止める.止まった状態でセンターボタンが押されたらduty値を元に戻す.
pup_motor_set_duty_limit()
pup_motor_is_stalled()
pup_motor_restore_duty_limit()
pup_color_sensor_light_on()
pup_color_sensor_light_off()
フォースセンサが押された力に応じてモータを駆動する.
Hub内蔵スピーカを使用する.
引数にSOUND_MANUAL_STOP
を使用しているため,スピーカ駆動中にモータ操作が可能.
SOUND_MANUAL_STOP
の代わりに数値を入れることで,駆動時間を指定する事も可能.
hub_speaker_play_tone()
hub_speaker_stop()
超音波センサが物体を検知したら、物体までの距離に応じて超音波センサの各ライトを点灯する.物体までの距離(mm)を表示する.
pup_ultrasonic_sensor_get_device()
pup_ultrasonic_sensor_distance()
pup_ultrasonic_sensor_light_on()
pup_ultrasonic_sensor_light_set()
pup_ultrasonic_sensor_light_off()
超音波を検出したらライトを点灯する.
pup_ultrasonic_sensor_presence()
pup_ultrasonic_sensor_light_on()
複数タスクの生成・扱い方の確認や,優先度ベーススケジューリングの確認など.
タスクは優先度順に実行される.
同一優先度内ではFIFO順.
遅延操作にdly_tsk()を使用すると自タスクが待ち状態に入ってしまうため,実行状態を保持したまま時間経過を待つ関数busy_wait()を実装し,使用する.
busy_wait()にはシステム時刻(get_tim()で取得)を使用.
CRE_TSK()
get_tim()
周期関数の使用方法の確認など.
高優先度の周期関数を使用してモータの回転方向を切り替える.
遅延操作はmultitask1と同様にbusy_wait()を使用.
CRE_CYC()
セマフォの使用方法の確認など.
2タスク間でセマフォを共有し,モータを制御する.
セマフォを獲得しているタスクがモータを制御する.
CRE_SEM()
イベントフラグによる事象通知の方法の確認.
ボタンの押下状態に応じてビットを立て,事象を通知する.
CRE_FLG()
データキューによるタスク間通信方法の確認.
左ボタンor右ボタンを押したときに,データキューにデータを送信する.
データ受信側は受信データに応じてモータ出力を行う
CRE_DTQ()
syslog()
をBluetooth経由で出力するサンプル.
プログラムの内容はbutton1.cと同じ.
ChromeでPybricks(Web IDE)を立ち上げて使用する.
syslogをBluetooth経由で出力するには,cdlファイルに以下の変更を行う.
- syslog_bluetooth.cdl
<変更前> /* シリアルインタフェースドライバとの結合 */ cSerialPort = SerialPortUSB1.eSerialPort; cnSerialPortManage = SerialPortUSB1.enSerialPortManage; <変更後> cSerialPort = SerialPortBluetooth1.eSerialPort; cnSerialPortManage = SerialPortBluetooth1.enSerialPortManage;
- スクリプト名:create.sh
- 使用方法
cd spike-rt-sample/API-sample ./create.sh [NEW-PROJECT-NAME]
- プロジェクト名に使用できる文字は,アルファベット(大・小),数字,
-
,_
とする - プロジェクト名の先頭と終端はアルファベットまたは数字にする
- プロジェクト名に使用できる文字は,アルファベット(大・小),数字,