引脚映射¶
概览¶
MoonBot Kit 主控模块 包含了9个通用端口、4个舵机端口、2个电机端口、2个按键、1个蜂鸣器, 对应的,在 Arduino 库中我们也提供了 引脚映射 库和相关引脚的宏定义来方便用户获取对应引脚号。
通过这些函数和宏,我们可以方便的获取 MoonBot Kit 主控上的端口、舵机等对应引脚号。
按键状态获取¶
比如,通过获取板载按键的状态来点亮板载的 LED:
#include <MoonBot.h>
int button_a = MOONBOT_PIN_BUTTON_A; // 获取板载按键A的引脚号
int button_b = MOONBOT_PIN_BUTTON_B; // 获取板载按键B的引脚号
void setup()
{
LED.begin(); // 板载LED初始化
}
void loop()
{
if ((!digitalRead(button_a) && !digitalRead(button_b))) {
// 如果按键A和B同时被按下,板载LED 0 1同时亮青色灯光
LED.setPixelColor(0, 0x00ffff);
LED.setPixelColor(1, 0x00ffff);
LED.show();
} else if ((!digitalRead(button_a))) {
// 如果按键A和B同时被按下,板载LED 0亮绿色灯光
LED.setPixelColor(0, 0x00ff00);
LED.setPixelColor(1, 0x000000);
LED.show();
} else if ((!digitalRead(button_b))) {
// 如果按键A和B同时被按下,板载LED 1亮蓝色灯光
LED.setPixelColor(0, 0x000000);
LED.setPixelColor(1, 0x0000ff);
LED.show();
} else {
// 如果按键A和B同都没被按下,板载LED关闭
LED.setPixelColor(0, 0x000000);
LED.setPixelColor(1, 0x000000);
LED.show();
}
}
获取LED眼睛引脚¶
再或者,我们希望获取连接在端口3上的 眼睛模块 引脚来初始化 LED:
moonbot_eyes.setPin(moonbotPortToPin(kPort3, kPortPin1)); // 设置LED眼睛模块的引脚为端口3的第一个引脚
moonbot_eyes.begin(); // LED眼睛初始化
触摸模块状态获取¶
以及,读取连接在各个通用端口上 触摸模块 的状态:
#include <MoonBot.h>
// connect touch sensor 1 on port 1
uint8_t touch1 = moonbotPortToPin(kPort1, kPortPin1);
// connect touch sensor 2 on port 2
uint8_t touch2 = moonbotPortToPin(kPort2, kPortPin1);
void setup()
{
// initialize touch sensor 1/2 as INPUT_PULLUP
pinMode(touch1, INPUT);
pinMode(touch2, INPUT);
}
void loop()
{
Serial.println("=======================");
Serial.print("touch sensor1: ");
// read touch sensor 1 state
if (digitalRead(touch1)) {
Serial.println("on touch");
} else {
Serial.println("not touch");
}
Serial.print("touch sensor2: ");
// read touch sensor 2 state
if (digitalRead(touch2)) {
Serial.println("on touch");
} else {
Serial.println("not touch");
}
}
红外模块状态获取¶
同样的,我们可以用相同的方法读取 红外模块 的状态:
#include <MoonBot.h>
// connect ir sensor 1 on port 1
uint8_t ir1[2] = {
moonbotPortToPin(kPort1, kPortPin1),
moonbotPortToPin(kPort1, kPortPin2)
};
// connect ir sensor 1 on port 1
uint8_t ir2[2] = {
moonbotPortToPin(kPort2, kPortPin1),
moonbotPortToPin(kPort2, kPortPin2)
};
void setup()
{
// initialize ir sensor 1/2 as INPUT_PULLUP
pinMode(ir1[0], INPUT);
pinMode(ir1[1], INPUT);
pinMode(ir2[0], INPUT);
pinMode(ir2[1], INPUT);
}
void loop()
{
Serial.println("=======================");
Serial.print("ir sensor1: ");
// read ir sensor 1 state
if (!digitalRead(ir1[0]) || !digitalRead(ir1[1])) {
Serial.println("triggered");
} else {
Serial.println("not triggered");
}
Serial.print("ir sensor2: ");
// read ir sensor 2 state
if (!digitalRead(ir2[0]) || !digitalRead(ir2[1])) {
Serial.println("triggered");
} else {
Serial.println("not triggered");
}
}
注意
红外传感器为低电平触发,当对应引脚电平为 LOW
时,红外传感器被触发;反之,读取引脚电平为 HIGH
时,红外传感器不被触发。
API 参考 - 引脚映射¶
枚举¶
- enum moonbot_servo_t
MoonBot Kit 舵机端口
值:
- kServo1=0
- kServo2
- kServo3
- kServo4
- kServoNum
舵机端口数量
- enum servo_pin_t
舵机端口引脚类型
值:
- kSignal
舵机信号引脚
- kShutDown
舵机供电引脚
- kState
舵机状态引脚
- enum moonbot_motor_t
MoonBot Kit 电机端口
值:
- kMotor1=0
- kMotor2
- kMotorNum
电机端口数量
- enum motor_pin_t
电机端口引脚类型
值:
- kDirection
电机方向引脚
- kSpeed
电机速度引脚
- enum moonbot_port_t
MoonBot Kit 通用端口
值:
- kPort1=0
- kPort2
- kPort3
- kPort4
- kPort5
- kPort6
- kPort7
- kPort8
- kPort9
- kPortNum
通用端口数量
- enum port_pin_t
通用端口引脚类型
值:
- kPortPin1=0
- kPortPin2
- kPortPinNum
端口引脚数量
宏¶
- MOONBOT_PIN_LED
MoonBot Kit 主控板载 LED 引脚
- MOONBOT_PIN_BUZZER_SIG
MoonBot Kit 主控板载蜂鸣器信号引脚
- MOONBOT_PIN_BUZZER_SHDW
MoonBot Kit 主控板载蜂鸣器供电引脚
- MOONBOT_PIN_BUTTON_A
MoonBot Kit 主控板载按钮 A 引脚
- MOONBOT_PIN_BUTTON_B
MoonBot Kit 主控板载按钮 B 引脚
函数¶
- uint8_t moonbotPortToPin(moonbot_port_t port_num, port_pin_t pin_num);
获取 MoonBot Kit 给定端口的引脚对应的 Arduino 引脚
- 参数
port_num
:通用端口号pin_num
:端口引脚号
- 返回
对应的 Arduino 引脚
- uint8_t moonbotMotorToPin(moonbot_motor_t motor_num, motor_pin_t pin_type);
获取 MoonBot Kit 给定电机端口的引脚类型对应的 Arduino 引脚
- 参数
motor_num
:电机端口号pin_type
:电机端口引脚类型
- 返回
对应的 Arduino 引脚
- uint8_t moonbotServoToPin(moonbot_servo_t servo_num, servo_pin_t pin_type);
获取 MoonBot Kit 给定舵机端口的引脚类型对应的 Arduino 引脚
- 参数
servo_num
:舵机端口号pin_type
:舵机端口引脚类型
- 返回
对应的 Arduino 引脚