Arduino C

Arduino IDE 设置在新窗口打开

手指/手势

// 手指序号枚举
enum class FingerNumber : uint8_t {
  Thumb = 0x1,   // 大拇指
  Index = 0x2,   // 食指
  Middle = 0x3,  // 中指
  Ring = 0x4,    // 无名指
  Little = 0x5,  // 小指
};
/**
 * 获取特定手指的位置。
 * @param no 手指的编号(大拇指、食指、中指、无名指或小指)
 * @return 手指的当前位置(0 到 100)
 */
uint8_t getFingerValue(FingerNumber no);
/**
 * 设置手指
 * @param fingerNum 手指的编号(大拇指、食指、中指、无名指或小指)
 * @param position 手指的目标位置(0 到 100)
 */
void setFinger(FingerNumber fingerNum, uint8_t position);

/**
 * 同时设置所有手指的位置。
 * @param pos1 手指1的位置(0 到 100)
 * @param pos2 手指2的位置(0 到 100)
 * @param pos3 手指3的位置(0 到 100)
 * @param pos4 手指4的位置(0 到 100)
 * @param pos5 手指5的位置(0 到 100)
 */
void setAllFinger(uint8_t pos1, uint8_t pos2, uint8_t pos3, uint8_t pos4, uint8_t pos5);

// 手势序号枚举
enum class GestureNumber : uint8_t {
  Reset = 0,     // 重置手势
  Pinch = 1,     // 捏取手势
  Grasp = 2,     // 抓握手势
  SidePinch = 3, // 侧捏取手势
  Tripod = 4,    // 三脚架手势
  Wave = 5,      // 挥手手势
  Scissors = 6,  // 剪刀手势
  Rock = 7,      // 石头手势
  Paper = 8      // 布手势
};
/**
 * 设置手势
 * @param gestureNum 手势的编号
 * @param position 手势的目标位置(0 到 100)
 */
void setGesture(GestureNumber gestureNum, uint8_t position);

小车/马达/舵机

enum class CarAction : uint8_t {
  Forward = 1,    // 前进
  Backward = 2,   // 后退
  Left = 3,       // 左转
  Right = 4       // 右转
};
/**
 * 设置小车动作
 * @param carAction 小车的目标动作(前进、后退、左转或右转)
 * @param speed 小车的速度(0 到 100)
 * @param time 动作持续时间(0 到 255)
 */
void setCar(CarAction carAction, uint8_t speed, uint8_t time);

// 马达编号枚举
enum class MotorNumber : uint8_t {
  Motor1 = 0,    // 马达1
  Motor2 = 1,    // 马达2
  MotorAll = 2   // 马达1+2
};
/**
 * 设置马达参数
 * @param motorNumber 马达的编号(马达1、马达2 或 马达1+马达2)
 * @param direction 马达的方向(0 表示前进,1 表示后退)
 * @param speed 马达的速度(0 到 100)
 * @param angle 马达的旋转角度(0 到 360)
 * @param time 马达动作的持续时间(0 到 255)
 */
void setMotor(MotorNumber motorNumber, uint8_t direction, uint8_t speed, uint8_t angle, uint8_t time);

enum class ServoNumber : uint8_t {
  Servo1 = 0,    // 舵机1
  Servo2 = 1,    // 舵机2
  Servo3 = 2,    // 舵机3
  Servo4 = 3,    // 舵机4
  Servo5 = 4,    // 舵机5
  Servo6 = 5     // 舵机6, 扩展舵机
};
/**
 * 设置舵机的角度
 * @param servoNumber 舵机的编号(Servo1 到 Servo6)
 * @param angle 舵机的目标角度(0 到 180)
 */
void setServo(ServoNumber servoNumber, uint8_t angle);

LED

/**
 * 设置特定 LED 的颜色。
 * @param r 颜色的红色分量(0 到 255)
 * @param g 颜色的绿色分量(0 到 255)
 * @param b 颜色的蓝色分量(0 到 255)
 */
void setLed(uint8_t r, uint8_t g, uint8_t b, InterfaceCode port);

/**
 * 检查给定的 RGB 颜色是否在红色范围内
 * @return 如果颜色在红色范围内则返回 true,否则返回 false
 */
bool isRedColor(int red, int green, int blue);

/**
 * 检查给定的 RGB 颜色是否在绿色范围内
 * @return 如果颜色在绿色范围内则返回 true,否则返回 false
 */
bool isGreenColor(int red, int green, int blue);

/**
 * 检查给定的 RGB 颜色是否在蓝色范围内
 * @return 如果颜色在蓝色范围内则返回 true,否则返回 false
 */
bool isBlueColor(int red, int green, int blue);

传感器

// 传感器类型枚举
enum class SensorType : uint8_t {
  SoftSmall = 1,       // 小柔性传感器
  Hall = 2,            // 霍尔传感器
  RGB = 3,             // RGB传感器
  Infrared = 4,        // 红外传感器
  Ultrasonic = 5,      // 超声波传感器
  Temperature = 6,     // 温度传感器
  Sound = 7,           // 声音传感器
  EMG = 8,             // 肌电信号传感器
  LED = 9,             // LED控制
  Potentiometer = 10,  // 旋转电位传感器
  Button = 11,         // 按钮传感器
  SoftBig = 12         // 大柔性传感器
};

// 接口编号枚举
enum class InterfaceCode : uint8_t {
  A = 0,   // 接口A
  B = 1,   // 接口B
  C = 2,   // 接口C
  D = 3,   // 接口D
  E = 4,   // 接口E
  F = 5    // 接口F,高级接口
};

/**
 * 检查特定传感器是否准备好在特定接口中读取。
 * @param sensorType 传感器的类型
 * @param interface 接口编号
 * @return 如果传感器准备就绪则返回 true,否则返回 false。
 */
bool isSensorReady(SensorType sensorType, InterfaceCode interface);

/**
 * 检查特定传感器是否在特定接口中开启。
 * @param sensorType 传感器的类型
 *                  有效的传感器类型:霍尔传感器、红外传感器、声音传感器、按钮传感器。
 * @param interface 接口编号
 * @return 如果传感器已开启则返回 true,否则返回 false。
 */
bool isSensorOn(SensorType sensorType, InterfaceCode interface);

/**
 * 从特定传感器在特定接口中获取一个16位整数值。
 * @param sensorType 传感器的类型
 *                  有效的传感器类型:小柔性传感器、超声波传感器、温度传感器、旋转电位传感器、肌电信号传感器。
 * @param interface 接口编号
 * @return 从传感器读取的 16 位整数值。
 *         对于超声波传感器,[0-1000](0.1 cm)
 *         对于温度传感器,[-200-1000](0.1℃)
 */
int16_t getSensorInt16(SensorType sensorType, InterfaceCode interface);

/**
 * 从颜色传感器在特定接口中获取特定 RGB 分量的值。
 * @param interface 接口编号
 * @param index RGB 分量的索引(0 表示红色,1 表示绿色,2 表示蓝色)。
 * @return RGB 分量的值(0 到 255)。
 */
uint8_t getRgbValue(InterfaceCode interface, uint8_t index);

/**
 * 从颜色传感器在特定接口编号中获取 RGB 分量值数组。
 * @param interface 接口编号
 * @return 指向 RGB 分量值数组的指针(红色、绿色、蓝色)。
 */
uint8_t* getRgbValues(InterfaceCode interface);

/**
 * 获取特定编号大柔性传感器的值。
 * @param no 编号(1 到 5)
 * @return 获取的值。
 *         如果编号超出范围或传感器数据获取失败,则返回 0。
 */
uint8_t getSoftBig(int no);

遥控器按键

enum class IRKeyCode : uint8_t {
  None = 0,     // 无按键
  Key1 = 1,     // '1' 键
  Key2 = 2,     // '2' 键
  Key3 = 3,     // '3' 键
  Key4 = 4,     // '4' 键
  Key5 = 5,     // '5' 键
  Key6 = 6,     // '6' 键
  Key7 = 7,     // '7' 键
  Key8 = 8,     // '8' 键
  Key9 = 9,     // '9' 键
  Key0 = 10,    // '0' 键
  Plus = 12,    // '+' 键
  Minus = 13,   // '-' 键
  A = 14,       // 'A' 键
  B = 15,       // 'B' 键
  C = 16,       // 'C' 键
  D = 17,       // 'D' 键
  E = 18,       // 'E' 键
  F = 19,       // 'F' 键
  Func1 = 20,   // FUNC1 键
  Func2 = 21,   // FUNC2 键
  Func3 = 22,   // FUNC3 键
};

/**

* 获取当前按下的遥控器按键代码。
* @return 遥控器按键代码。
 */
uint8_t getIrKey();

/**

* 检查特定遥控器按键是否当前按下。
* @param key 要检查的遥控器按键代码。
* @return 如果按键被按下则返回 true,否则返回 false。
 */
bool isIrKeyPressed(uint8_t key);

数字/模拟输入输出

/**
 * 数字电平
 */
enum class GPIOLevel : uint8_t {
  Low = 0x00,  // 输出低电平
  High = 0x01, // 输出高电平
};

/**
 * 设置特定数字引脚电平
 * @param gpioNumber 数字引脚编号 [1-15]
 * @param level 数字电平
 */
void setGPIO(uint8_t gpioNumber, GPIOLevel level);

/**
 * 获取数字引脚为高电平
 * @param no 数字引脚编号 [1-15]
 * @return 如果处于高状态则返回 true,否则返回 false
 */
bool isGpioHigh(uint8_t no);

/**
 * 从特定模拟输入引脚获取模拟值
 * @param no 模拟输入引脚编号 [1-10]
 * @return 从输入引脚读取的模拟值 [0-4095]
 */
uint16_t getAioValue(uint8_t no);