iCar
iCar APIs

このドキュメントは、iCarをC言語でプログラミングするためのマニュアルです。

使用可能な関数一覧

使用可能な関数について、下記のヘッダファイルに定義されているものが使用可能です。

board.h Pin入出力/待機処理/各種演算

LcdDrv_Ext.h LCD制御

使用可能なPinの一覧

pins.h に使用可能なPinが定義されています。

digitalWrite() digitalRead() analogWrite() analogRead() 関数を呼び出す際の引数Pinに定義値を使用します。

各Pin/関数の使用例:

  • LED1を点灯 digitalWrite(PIN_LED1, HIGH);
  • LED1を消灯 digitalWrite(PIN_LED1, LOW);
  • LED2を点灯 digitalWrite(PIN_LED2, HIGH);
  • ボタン1の状態を取得 digitalRead(PIN_BTN1)
  • スライドボリュームの位置を取得 analogRead(PIN_VOLUME)
  • モータLを50の出力で前進 analogWrite(PIN_MOTOR_L, 50);

Pinの一覧と、使用可能な関数の一覧

Pin
番号
Pin定義 digital
Write
digital
Read
analog
Write
analog
Read
戻り値 / 引数の意味
0 PIN_VOLUME - - - x スライドボリューム位置 [%]
100=前進方向一杯、0=後方向一杯
1 PIN_DISTANCE - - - x 距離センサで取得した前方障害物との距離[mm]
※6027の場合は未検出
2 PIN_BRIGHTNESS - - - x 周囲の明るさ
0=明るい<—>4095=暗い ※未確定の場合4095
3 PIN_LINE_L - - - x ラインセンサLで取得した地面の明るさ
0=白<—>4095=黒
4 PIN_LINE_R - - - x ラインセンサRで取得した地面の明るさ
0=白<—>4095=黒
5 PIN_TOGGLE - - - x トグルスイッチ (SW_1)の位置
0=後退方向, 1=中点, 2=前進方向
6 PIN_BTN1 - x - - ボタン1 (BTN_1)の状態
1(HIGH)=ON 押されている, 0(LOW)=OFF 押されていない
7 PIN_BTN2 - x - - ボタン2 (BTN_2)の状態
1(HIGH)=ON 押されている, 0(LOW)=OFF 押されていない
8 PIN_LED1 x - - - LED1の点灯/消灯を引数で設定
1(HIGH)=点灯, 0(LOW)=消灯
9 PIN_LED2 x - - - LED2の点灯/消灯を引数で設定
1(HIGH)=点灯, 0(LOW)=消灯
10 PIN_LED3 x - - - LED3の点灯/消灯を引数で設定
1(HIGH)=点灯, 0(LOW)=消灯
11 PIN_LED4 x - - - LED4の点灯/消灯を引数で設定
1(HIGH)=点灯, 0(LOW)=消灯
12 PIN_LED5 x - - - LED5の点灯/消灯を引数で設定
1(HIGH)=点灯, 0(LOW)=消灯
13 PIN_LED6 x - - - LED6の点灯/消灯を引数で設定
1(HIGH)=点灯, 0(LOW)=消灯
14 PIN_MOTOR_L - - x - モータLの速度を引数で設定
-100=後退, 0=停止, 100=前進, -32768=ブレーキ
15 PIN_MOTOR_R - - x - モータRの速度を引数で設定
-100=後退, 0=停止, 100=前進, -32768=ブレーキ
16 PIN_BUZZER - - x - ブザーで鳴らす周波数を引数で設定
0=ブザー停止, 8~16000[Hz]で指定可能,
※範囲外の場合ブザー停止
17 PIN_FLED_R - - x - フルカラーLED Rの明るさを引数で設定
0(消灯)<—>100(100点灯)
18 PIN_FLED_G - - x - フルカラーLED Gの明るさを引数で設定
0(消灯)<—>100(100点灯)
19 PIN_FLED_B - - x - フルカラーLED Bの明るさを引数で設定
0(消灯)<—>100(100点灯)

x: 使用可能, - 使用不能

プログラムの書き方

User.cppに処理を記述します。

#include <board.h> にて、iCarに必要な定義ファイルをインクルードします。

setup()関数、 loop()関数に必要な処理を記述してください。

  • setup()関数・・・初期化処理を記述します。setup()関数呼び出し前に一度だけ呼び出しされます。
  • loop()関数・・・制御を記述します。ボードの電源が入っている限り、繰り返し呼び出しされます。
#include <board.h>
void setup() {
}
void loop() {
}

サンプルプログラム 1_LED1秒点灯

User.cppに下記の処理を記述してください

#include <board.h>
void setup() {
}
void loop() {
delay(1000);
delay(1000);
while (1) {}
}

サンプルプログラム 2_LED点滅

User.cppに下記の処理を記述してください

#include <board.h>
void setup() {
}
void loop() {
while (1) {
delay(1000);
delay(1000);
}
}

サンプルプログラム3 ボタンを押している間、LED1点灯

User.cppに下記の処理を記述してください

#include <board.h>
void setup() {
}
void loop() {
while (1) {
delay(1000);
delay(1000);
}
}
}

サンプルプログラム4 距離センサ10cm未満でLEDを点灯

User.cppに下記の処理を記述してください

#include <board.h>
/* プロトタイプ宣言 */
void sensorMonitor();
void setup() {
}
void loop() {
if (analogRead(PIN_DISTANCE) < 100) {
} else {
}
sensorMonitor();
}
void sensorMonitor()
{
static uint32_t lastLcdUpdate = 0;
/* 50[ms]毎に処理を実行 */
/* ※早すぎると数字が読み取れなくなるため */
if ((millis() - lastLcdUpdate) >= 50) {
lastLcdUpdate = millis();
LcdDrv_print(" R");
LcdDrv_print(" B");
LcdDrv_print(" SW");
}
}