// @Author : Hcm
#include <SoftwareSerial.h> // 软串口
#include <LobotServoController.h> // 控制舵机
#include <OneButton.h> // 按钮库
#define KEY_START 9 // 按钮对应的串口
#define FIRST_STOP_ACTION 88 // 初始化立正动作对应位置
#define FIRST_STOP_ACTION_TIME 1000 // 需要的时间,下面都类似
LobotServoController myse; // 实例化通信接口
SoftwareSerial BT(10, 11); // BT(RX, TX)
OneButton button_9(KEY_START, false); // 实例化按钮 true:按下为低电平 false : 按下为高电平
// 变量定义
unsigned long time_begin; // millis() 获取的是毫秒 1s = 1000ms
unsigned long count_time=114000; // 初始动作运行的时间
bool is_read=false; // 判断是否已经读过数据
bool ready_to_start=false; // 开始比赛
char val; // 接收的值
// 函数定义
void first_stop();
void clickonce2start();
void setup() {
// 与舵机板通信接口
Serial.begin(9600);
Serial.println("Mega is Ready!");
// 与蓝牙通信
BT.begin(57600);
// 按钮事件初始化
button_9.reset(); //清除一下按钮状态机的状态
button_9.attachClick(clickonce2start); // 单击
}
void loop() {
delay(1000);
first_stop();
while(!(ready_to_start))
{
button_9.tick();
}
Serial.println("Start!");
ready_to_start = false;
myse.runActionGroup(100, 1);
time_begin = millis();
while(millis() - time_begin < count_time || !(is_read))
{
// Serial.println(millis() - time_begin < count_time);
if (BT.available() && !(is_read))
{
val = BT.read();
Serial.println(val); // 调试用
is_read = true;
// break;
}
}
Serial.println("Ready to show originality action!");
switch(val)
{
case '1':myse.runActionGroup(1, 2);break;//前滚翻
case '2':myse.runActionGroup(2, 2);break;//后滚翻
case '3':myse.runActionGroup(3, 2);break;//单手俯卧撑
case '4':myse.runActionGroup(4, 2);break;//双手俯卧撑
case '5':myse.runActionGroup(5, 2);break;//左侧身翻360°
case '6':myse.runActionGroup(6, 2);break;//右侧身翻360°
case '7':myse.runActionGroup(7, 2);break;//倒立并腿
case '8':myse.runActionGroup(8, 2);break;//倒立劈叉
case 'a':myse.runActionGroup(9, 1);break;//12前滚翻+后滚翻
case 'b':myse.runActionGroup(10, 1);break;//13前滚翻+单手俯卧撑
case 'c':myse.runActionGroup(11, 1);break;//14前滚翻+双手俯卧撑
case 'd':myse.runActionGroup(12, 1);break;//15前滚翻+左侧身翻360°
case 'e':myse.runActionGroup(13, 1);break;//16前滚翻+右侧身翻360°
case 'f':myse.runActionGroup(14, 1);break;//17前滚翻+倒立并腿
case 'g':myse.runActionGroup(15, 1);break;//18前滚翻+倒立劈叉
case 'h':myse.runActionGroup(16, 1);break;//21后滚翻+前滚翻
case 'i':myse.runActionGroup(17, 1);break;//23后滚翻+单手俯卧撑
case 'j':myse.runActionGroup(18, 1);break;//24后滚翻+双手俯卧撑
case 'k':myse.runActionGroup(19, 1);break;//25后滚翻+左侧身翻360°
case 'l':myse.runActionGroup(20, 1);break;//26后滚翻+右侧身翻360°
case 'm':myse.runActionGroup(21, 1);break;//27后滚翻+倒立并腿
case 'n':myse.runActionGroup(22, 1);break;//28后滚翻+倒立劈叉
case 'o':myse.runActionGroup(23, 1);break;//31单手俯卧撑+前滚翻
case 'p':myse.runActionGroup(24, 1);break;//32单手俯卧撑+后滚翻
case 'q':myse.runActionGroup(25, 1);break;//34单手俯卧撑+双手俯卧撑
case 'r':myse.runActionGroup(26, 1);break;//35单手俯卧撑+左侧身翻360°
case 's':myse.runActionGroup(27, 1);break;//36单手俯卧撑+右侧身翻360°
case 't':myse.runActionGroup(28, 1);break;//37单手俯卧撑+倒立并腿
case 'u':myse.runActionGroup(29, 1);break;//38单手俯卧撑+倒立劈叉
case 'v':myse.runActionGroup(30, 1);break;//41双手俯卧撑+前滚翻
case 'w':myse.runActionGroup(31, 1);break;//42双手俯卧撑+后滚翻
case 'x':myse.runActionGroup(32, 1);break;//43双手俯卧撑+单手俯卧撑
case 'y':myse.runActionGroup(33, 1);break;//45双手俯卧撑+左侧身翻360°
case 'z':myse.runActionGroup(34, 1);break;//46双手俯卧撑+右侧身翻360°
case 'A':myse.runActionGroup(35, 1);break;//47双手俯卧撑+倒立并腿
case 'B':myse.runActionGroup(36, 1);break;//48双手俯卧撑+倒立劈叉
case 'C':myse.runActionGroup(37, 1);break;//51左侧身翻360°+前滚翻
case 'D':myse.runActionGroup(38, 1);break;//52左侧身翻360°+后滚翻
case 'E':myse.runActionGroup(39, 1);break;//53左侧身翻360°+单手俯卧撑
case 'F':myse.runActionGroup(40, 1);break;//54左侧身翻360°+双手俯卧撑
case 'G':myse.runActionGroup(41, 1);break;//56左侧身翻360°+右侧身翻360°
case 'H':myse.runActionGroup(42, 1);break;//57左侧身翻360°+倒立并腿
case 'I':myse.runActionGroup(43, 1);break;//58左侧身翻360°+倒立劈叉
case 'J':myse.runActionGroup(44, 1);break;//61右侧身翻360°+前滚翻
case 'K':myse.runActionGroup(45, 1);break;//62右侧身翻360°+后滚翻
case 'L':myse.runActionGroup(46, 1);break;//63右侧身翻360°+单手俯卧撑
case 'M':myse.runActionGroup(47, 1);break;//64右侧身翻360°+双手俯卧撑
case 'N':myse.runActionGroup(48, 1);break;//65右侧身翻360°+左侧身翻360°
case 'O':myse.runActionGroup(49, 1);break;//67右侧身翻360°+倒立并腿
case 'P':myse.runActionGroup(50, 1);break;//68右侧身翻360°+倒立劈叉
case 'Q':myse.runActionGroup(51, 1);break;//71倒立并腿+前滚翻
case 'R':myse.runActionGroup(52, 1);break;//72倒立并腿+后滚翻
case 'S':myse.runActionGroup(53, 1);break;//73倒立并腿+单手俯卧撑
case 'T':myse.runActionGroup(54, 1);break;//74倒立并腿+双手俯卧撑
case 'U':myse.runActionGroup(55, 1);break;//75倒立并腿+左侧身翻360°
case 'V':myse.runActionGroup(56, 1);break;//76倒立并腿+右侧身翻360°
case 'W':myse.runActionGroup(57, 1);break;//78倒立并腿+倒立劈叉
case 'X':myse.runActionGroup(58, 1);break;//81倒立劈叉+前滚翻
case 'Y':myse.runActionGroup(59, 1);break;//82倒立劈叉+后滚翻
case 'Z':myse.runActionGroup(60, 1);break;//83倒立劈叉+单手俯卧撑
case '+':myse.runActionGroup(61, 1);break;//84倒立劈叉+双手俯卧撑
case '-':myse.runActionGroup(62, 1);break;//85倒立劈叉+左侧身翻360°
case '*':myse.runActionGroup(63, 1);break;//86倒立劈叉+右侧身翻360°
case '/':myse.runActionGroup(64, 1);break;//87倒立劈叉+倒立并腿
}
while(1);
}
void loop1(){
while(!(ready_to_start))
{
button_9.tick();
}
Serial.println("Start!");
ready_to_start = false;
while(1){
if(BT.available()){
Serial.println(BT.read());
myse.runActionGroup(88, 1);
}
}
}
void first_stop()
{
myse.runActionGroup(FIRST_STOP_ACTION, 1);
delay(FIRST_STOP_ACTION_TIME);
}
void clickonce2start()
{
ready_to_start=true;
}