CrabCode/minikame.ino

245 lines
4.4 KiB
C++

#include <Arduino.h>
#include "LARS.h"
#include <WiFi.h>
#include <ESPUI.h>
const char* ssid = "Lars";
#define TIME_INTERVAL 5000
/*
#define FORWARD 'f'
#define LEFT 'l'
#define STAND 's'
#define RIGHT 'r'
#define BACKWARD 'b'
#define GO 'g'
#define RIGHT_FRONT 'c'
#define RIGHT_BACK 'e'
#define LEFT_FRONT 'd'
#define LEFT_BACK 'h'
*/
LARS robot;
bool state = true;
boolean walk_forward = false;
boolean walk_backward = false;
boolean hello = false;
boolean turn_left = false;
boolean turn_right = false;
boolean moonwalk = false;
boolean audience = false;
boolean omni = false;
boolean omni_left = false;
boolean dance = false;
boolean upDown = false;
boolean PushUp = false;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_AP);
WiFi.setHostname(ssid);
WiFi.softAP(ssid);
//WiFi.softAP(ssid, password);
Serial.println("");
Serial.print("IP address: ");
Serial.println(WiFi.softAPIP());
ESPUI.pad("Walking Control", true, &MegaMaxim);
ESPUI.button("Wave Button", &AudienceButton);
ESPUI.button("MoonWalk Button", &BeerButton);
ESPUI.button("Dance Button", &BeerButton3);
ESPUI.button("PushUp Button", &BeerButton4);
ESPUI.button("upDown Button", &BeerButton5);
ESPUI.button("Slow Turn Right", &BeerButton6);
ESPUI.button("Slow Turn left", &BeerButton7);
ESPUI.begin("Crabby Control");
robot.init();
delay(1000);
}
void AudienceButton(int id, int type) {
if (type == B_DOWN) {
audience = true;
}
else {
audience = false;
}
}
void BeerButton(int id, int type) {
if (type == B_DOWN) {
moonwalk = true;
}
else {
moonwalk = false;
}
}
void BeerButton3(int id, int type) {
if (type == B_DOWN) {
dance = true;
}
else {
dance = false;
}
}
void BeerButton4(int id, int type) {
if (type == B_DOWN) {
PushUp = true;
}
else {
PushUp = false;
}
}
void BeerButton5(int id, int type) {
if (type == B_DOWN) {
upDown = true;
}
else {
upDown = false;
}
}
void BeerButton6(int id, int type) {
if (type == B_DOWN) {
omni = true;
}
else {
omni = false;
}
}
void BeerButton7(int id, int type) {
if (type == B_DOWN) {
omni_left = true;
}
else {
omni_left = false;
}
}
void MegaMaxim (int id, int value) {
switch (value) {
case P_LEFT_DOWN:
turn_left = true;
break;
case P_LEFT_UP:
turn_left = false;
break;
case P_RIGHT_DOWN:
turn_right = true;
break;
case P_RIGHT_UP:
turn_right = false;
break;
case P_FOR_DOWN:
walk_forward = true;
break;
case P_FOR_UP:
walk_forward = false;
break;
case P_BACK_DOWN:
walk_backward = true;
break;
case P_BACK_UP:
walk_backward = false;
break;
case P_CENTER_DOWN:
hello = true;
break;
case P_CENTER_UP:
hello = false;
break;
}
}
void loop() {
if (walk_forward) robot.walk();
else if (walk_backward) robot.walk(0);
else if (hello) robot.hello();
else if (turn_left) robot.turnL(1, 550);
else if (turn_right) robot.turnR(1, 550);
else if (moonwalk) robot.moonwalkL(1, 5000);
else if (audience) robot.wave();
else if (dance) robot.dance(1, 600);
else if (omni) robot.omniWalk(1, 600, true, 1);
else if (omni_left) robot.omniWalk(1, 600, false, 1);
else if (PushUp) robot.pushUp(1, 600);
else if (upDown) robot.upDown(1, 5000);
else robot.home();
}
/*
void serialEvent() {
char tmp = -1;
boolean taken = false;
while (Serial.available()) {
state = !state;
// analogWrite(LED_PIN, 128 * state); //flashing LED indicating cmd received
tmp = Serial.read (); //Serial.println(cmd);
// not_gaits(tmp);
taken = gaits(tmp);
if (taken) cmd = tmp;
}
}
boolean gaits(char cmd) {
bool taken = true;
switch (cmd) {
case GO:
robot.walk();
break;
case FORWARD:
robot.hello();
break;
case BACKWARD:
//robot.run(0);
robot.walk(0);
break;
case RIGHT:
robot.turnR(1, 550);
break;
case LEFT:
robot.turnL(1, 550);
break;
case RIGHT_FRONT:
robot.turnR(1, 550);
robot.walk();
break;
case RIGHT_BACK:
robot.turnR(1, 550);
robot.walk(0);
break;
case LEFT_FRONT:
robot.turnL(1, 550);
robot.walk();
break;
case LEFT_BACK:
robot.turnL(1, 550);
robot.walk(0);
break;
case STAND:
robot.home();
break;
default:
taken = false;
}
return taken;
}
*/