Pin Map¶
Overview¶
MoonBot Kit Controller Module contains 9 GPIO ports, 4 servo ports, two motor ports and other on board resources. And in Arduino library we provide pin map livrary and relevant defined pin to guide users requiring corresponding pin number.
Through these functions and macros, we can easily get pin numbers of MoonBot Kit controller.
Get Keys Status¶
For example, turn on the on-board LEDs by getting button status.
#include <MoonBot.h>
int button_a = MOONBOT_PIN_BUTTON_A; // Get button A pin number
int button_b = MOONBOT_PIN_BUTTON_B; // Get button B pin number
void setup()
{
LED.begin(); // On board LEDs begin
}
void loop()
{
if ((!digitalRead(button_a) && !digitalRead(button_b))) {
// If button A and B is pressed at mean time, LED 0 and 1 show cyan.
LED.setPixelColor(0, 0x00ffff);
LED.setPixelColor(1, 0x00ffff);
LED.show();
} else if ((!digitalRead(button_a))) {
// If only button B is pressed, LED 0 show green
LED.setPixelColor(0, 0x00ff00);
LED.setPixelColor(1, 0x000000);
LED.show();
} else if ((!digitalRead(button_b))) {
// If only button A is pressed, LED 1 show blue.
LED.setPixelColor(0, 0x000000);
LED.setPixelColor(1, 0x0000ff);
LED.show();
} else {
// If buttons are not pressed, LEDs turn off.
LED.setPixelColor(0, 0x000000);
LED.setPixelColor(1, 0x000000);
LED.show();
}
}
Get LED Eyes Pin Number¶
Initialize LED by getting the status of Eyes Module on port 3.
moonbot_eyes.setPin(moonbotPortToPin(kPort3, kPortPin1)); // Set port 3 as the first pin of LED eyes.
moonbot_eyes.begin(); // Initialize LED eyes
Get Touch Module status¶
Read status of Touch Module on the GPIO ports.
#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");
}
}
Get Infrared Module Status¶
We can use the same way to read the status of Infrared Module.
#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");
}
}
Attention
Infrared module is in low level when touched, and pin mode is LOW
; And it is not touched when level is HIGH
.
API Reference - Pin Map¶
Header File¶
Enum¶
- enum moonbot_servo_t
MoonBot Kit servo port
value:
- kServo1=0
- kServo2
- kServo3
- kServo4
- kServoNum
servo port number
- enum servo_pin_t
servo port type
value:
- kSignal
servo signal pin
- kShutDown
servo power pin
- kState
servo status pin
- enum moonbot_motor_t
MoonBot Kit motor port
value:
- kMotor1=0
- kMotor2
- kMotorNum
motor port number
- enum motor_pin_t
motor port type
value:
- kDirection
motor direction pin
- kSpeed
motor speed pin
- enum moonbot_port_t
MoonBot Kit GPIO port
value:
- kPort1=0
- kPort2
- kPort3
- kPort4
- kPort5
- kPort6
- kPort7
- kPort8
- kPort9
- kPortNum
GPIO port number
- enum port_pin_t
GPIO port type
value:
- kPortPin1=0
- kPortPin2
- kPortPinNum
port pin number
Macro Definition¶
- MOONBOT_PIN_LED
MoonBot Kit contrller on-board LED pin
- MOONBOT_PIN_BUZZER_SIG
MoonBot Kit controller buzzer signal pin
- MOONBOT_PIN_BUZZER_SHDW
MoonBot Kit controller buzzer power pin
- MOONBOT_PIN_BUTTON_A
MoonBot Kit controller button A pin
- MOONBOT_PIN_BUTTON_B
MoonBot Kit controller button B pin
Functions¶
- uint8_t moonbotPortToPin(moonbot_port_t port_num, port_pin_t pin_num);
Get MoonBot Kit controller Arduino pin number of the GPIO port.
- value
port_num
: GPIO portpin_num
: port pin number
- return
Arduino pin number of the port pin
- uint8_t moonbotMotorToPin(moonbot_motor_t motor_num, motor_pin_t pin_type);
Get MoonBot Kit controller Arduino pin number of the motor port.
- value
motor_num
: motor port numberpin_type
: motor pin type
- return
motor port Arduino pin
- uint8_t moonbotServoToPin(moonbot_servo_t servo_num, servo_pin_t pin_type);
Get MoonBot Kit controller Arduino pin number of the servo port.
- value
servo_num
: servo port numberpin_type
: servo pin type
- return
servo port Arduino pin