*Office Supplies HEXAPOD Code
Jump to navigation
Jump to search
#include <Servo.h>
#define MAX_DEGREE 145 #define MIN_DEGREE 35 #define MID_DEGREE 90 #define BASIC_DELAY 250
Servo FL; // create servo object to control a servo Servo FR; Servo ML; Servo MR; Servo RL; Servo RR;
void setup() { // put your setup code here, to run once: FL.attach(3); FR.attach(5); ML.attach(6); MR.attach(9); RL.attach(10); RR.attach(11); }
void Stand() { FL.write(MID_DEGREE); FR.write(MID_DEGREE); ML.write(MID_DEGREE); MR.write(MID_DEGREE); RL.write(MID_DEGREE); RR.write(MID_DEGREE); }
void Left_Position_Forward() { FL.write(MIN_DEGREE); RL.write(MIN_DEGREE); }
void Left_Position_Backward() { FL.write(MAX_DEGREE); RL.write(MAX_DEGREE); }
void Left_Position_Outward() { FL.write(MIN_DEGREE); RL.write(MAX_DEGREE); }
void Left_Position_Inward() { FL.write(MAX_DEGREE); RL.write(MIN_DEGREE); }
void Left_Position_Stand() { FL.write(MID_DEGREE); RL.write(MID_DEGREE); }
void Right_Position_Forward() { FR.write(MAX_DEGREE); RR.write(MAX_DEGREE); }
void Right_Position_Backward() { FR.write(MIN_DEGREE); RR.write(MIN_DEGREE); }
void Right_Position_Outward() { FR.write(MAX_DEGREE); RR.write(MIN_DEGREE); }
void Right_Position_Inward() { FR.write(MIN_DEGREE); RR.write(MAX_DEGREE); }
void Right_Position_Stand() { FR.write(MID_DEGREE); RR.write(MID_DEGREE); }
void Middle_Position_Left() { ML.write(MAX_DEGREE); MR.write(MAX_DEGREE); }
void Middle_Position_Right() { ML.write(MIN_DEGREE); MR.write(MIN_DEGREE); }
void Middle_Position_Stand() { ML.write(MID_DEGREE); MR.write(MID_DEGREE); }
void Middle_Position_Outward() { ML.write(MAX_DEGREE); MR.write(MIN_DEGREE); }
void Middle_Position_Inward() { ML.write(MIN_DEGREE); MR.write(MAX_DEGREE); }
void Middle_Lean_Left() { ML.write(MIN_DEGREE); MR.write(MID_DEGREE); Left_Position_Outward(); }
void Middle_Lean_Right() { ML.write(MID_DEGREE); MR.write(MAX_DEGREE); Right_Position_Outward(); }
void Step_Forward() { Stand(); delay(BASIC_DELAY); Left_Position_Forward(); delay(BASIC_DELAY); Middle_Position_Inward(); delay(BASIC_DELAY); Left_Position_Backward(); delay(BASIC_DELAY); Middle_Position_Stand(); delay(BASIC_DELAY); Left_Position_Stand(); delay(BASIC_DELAY); Right_Position_Forward(); delay(BASIC_DELAY); Middle_Position_Inward(); delay(BASIC_DELAY); Right_Position_Backward(); delay(BASIC_DELAY); Middle_Position_Stand(); delay(BASIC_DELAY); Right_Position_Stand(); delay(BASIC_DELAY); }
void Step_Backward() { Stand(); delay(BASIC_DELAY); Left_Position_Backward(); delay(BASIC_DELAY); Middle_Position_Inward(); delay(BASIC_DELAY); Left_Position_Forward(); delay(BASIC_DELAY); Middle_Position_Stand(); delay(BASIC_DELAY); Left_Position_Stand(); delay(BASIC_DELAY); Right_Position_Backward(); delay(BASIC_DELAY); Middle_Position_Inward(); delay(BASIC_DELAY); Right_Position_Forward(); delay(BASIC_DELAY); Middle_Position_Stand(); delay(BASIC_DELAY); Right_Position_Stand(); delay(BASIC_DELAY); }
void Step_Left() { Stand(); delay(BASIC_DELAY); Right_Position_Forward(); delay(BASIC_DELAY); Middle_Position_Inward(); delay(BASIC_DELAY); Right_Position_Backward(); delay(BASIC_DELAY); Middle_Position_Stand(); delay(BASIC_DELAY); Right_Position_Stand(); delay(BASIC_DELAY); }
void Step_Right() { Stand(); delay(BASIC_DELAY); Left_Position_Forward(); delay(BASIC_DELAY); Middle_Position_Inward(); delay(BASIC_DELAY); Left_Position_Backward(); delay(BASIC_DELAY); Middle_Position_Stand(); delay(BASIC_DELAY); Left_Position_Stand(); delay(BASIC_DELAY); }
int Left_Sensor; int Right_Sensor; int Front_Sensor; int Rear_Sensor;
void Set_Sensors() { Left_Sensor = analogRead(2); Right_Sensor = analogRead(1); Front_Sensor = analogRead(3); Rear_Sensor = analogRead(0); }
int Sensor_Approximation(int S, int V) { if (V > S * 1.2) return (1); if (V < S * 0.8) return(0); return(0); }
int Dark_Direction() { }
void loop() { int x; Stand(); delay(2000); Set_Sensors(); while(1) { if (Sensor_Approximation(Left_Sensor, analogRead(2))) { for(x=0;x<5;++x) Step_Right(); Set_Sensors(); } if (Sensor_Approximation(Right_Sensor, analogRead(1))) { for(x=0;x<5;++x) Step_Left(); Set_Sensors(); } if (Sensor_Approximation(Front_Sensor, analogRead(3))) { for(x=0;x<5;++x) Step_Backward(); Set_Sensors(); } if (Sensor_Approximation(Rear_Sensor, analogRead(0))) { for(x=0;x<5;++x) Step_Forward(); Set_Sensors(); } } delay(2000); // put your main code here, to run repeatedly: }