Created
December 31, 2017 08:22
-
-
Save rockos/6a557eee8380b7bd237188e573131535 to your computer and use it in GitHub Desktop.
kidslab_20171231.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int distance; | |
String MEIREI; | |
int SPEED_H; | |
int SPEED; | |
int L_EN; | |
int SPEED_M; | |
int R_EN; | |
int SPEED_L; | |
int L_FW; | |
int L_RV; | |
int R_FW; | |
int R_RV; | |
int pre_directopn; | |
void COMMAND() { | |
if (MEIREI == "FORWARD") { | |
analogWrite(6, SPEED); | |
analogWrite(5, 0); | |
analogWrite(10, SPEED); | |
analogWrite(11, 0); | |
digitalWrite(L_EN, HIGH); | |
digitalWrite(R_EN, HIGH); | |
} else if (MEIREI == "BACKWARD") { | |
analogWrite(6, 0); | |
analogWrite(5, SPEED); | |
analogWrite(10, 0); | |
analogWrite(11, SPEED); | |
digitalWrite(L_EN, HIGH); | |
digitalWrite(R_EN, HIGH); | |
} else if (MEIREI == "LEFT") { | |
analogWrite(10, SPEED); | |
analogWrite(11, 0); | |
digitalWrite(L_EN, LOW); | |
digitalWrite(R_EN, HIGH); | |
} else if (MEIREI == "RIGHT") { | |
analogWrite(6, SPEED); | |
analogWrite(5, 0); | |
digitalWrite(L_EN, HIGH); | |
digitalWrite(R_EN, LOW); | |
} else if (MEIREI == "STOP") { | |
digitalWrite(L_EN, LOW); | |
digitalWrite(R_EN, LOW); | |
} | |
} | |
int Sonic_Time_out = 3000; | |
long Sonic_Timing(){ | |
digitalWrite(3, LOW); | |
delayMicroseconds(2); | |
digitalWrite(3, HIGH); | |
delayMicroseconds(10); | |
digitalWrite(3, LOW); | |
long duration = pulseIn(4,HIGH,Sonic_Time_out); | |
if ( duration == 0 ){ | |
duration = Sonic_Time_out; | |
digitalWrite(0, HIGH); | |
delay(25); | |
digitalWrite(0 ,LOW); | |
delay(225); | |
} | |
return duration; | |
} | |
void CRUISE() { | |
MEIREI = "FORWARD"; | |
SPEED = SPEED_H; | |
COMMAND(); | |
} | |
void SAFETY() { | |
MEIREI = "FORWARD"; | |
SPEED = SPEED_M; | |
COMMAND(); | |
} | |
// 前にしょうがい物があるときの処理 | |
void COLLISION() { | |
MEIREI = "STOP"; | |
COMMAND(); | |
delay(300); | |
SPEED = SPEED_M; | |
MEIREI = "BACKWARD"; | |
COMMAND(); | |
delay(1000); | |
MEIREI = "STOP"; | |
COMMAND(); | |
delay(300); | |
if (pre_directopn == 0) { | |
SPEED = SPEED_M; | |
MEIREI = "RIGHT"; | |
pre_directopn = 1; | |
} else { | |
SPEED = SPEED_M; | |
MEIREI = "LEFT"; | |
pre_directopn = 0; | |
} | |
COMMAND(); | |
delay(300); | |
} | |
void setup() | |
{ | |
pinMode(3, OUTPUT); | |
pinMode(4, INPUT); | |
pinMode(0, OUTPUT); | |
pinMode(7, OUTPUT); | |
pinMode(12, OUTPUT); | |
SPEED_H = 220; | |
SPEED_M = 200; | |
SPEED_L = 100; | |
L_EN = 7; | |
L_FW = 6; | |
L_RV = 5; | |
R_EN = 12; | |
R_FW = 10; | |
R_RV = 11; | |
pre_directopn = 0; | |
analogWrite(5, 0); | |
analogWrite(6, 0); | |
analogWrite(10, 0); | |
analogWrite(11, 0); | |
digitalWrite(7, LOW); | |
digitalWrite(12, LOW); | |
} | |
void loop() | |
{ | |
distance = Sonic_Timing()/29/2; | |
// distance = 20; | |
if (distance < 8) { | |
COLLISION(); | |
} else if (distance >= 15) { | |
CRUISE(); | |
} else { | |
SAFETY(); | |
} | |
delay(300); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment