day4
int pin1 = 8;
int pin2 = 7;
int pwm1 = 6;
int pin3 = 2;
int pin4 = 4;
int pwm2 = 5;
int button =A0;
int Sensorl_2 = A3;//红外
int Sensorr_2 = A1;
int Statel_2; //红外
int Stater_2;
void setup() {
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
pinMode(pwm1,OUTPUT);
pinMode(pin3,OUTPUT);
pinMode(pin4,OUTPUT);
pinMode(pwm2,OUTPUT);
pinMode(button,INPUT);
pinMode(A1,INPUT);
pinMode(A2,INPUT);
pinMode(A3,INPUT);
pinMode(A4,INPUT);
pinMode(Sensorl_2,INPUT);
pinMode(Sensorr_2,INPUT);
Serial.begin(9600);
}
void button_scan(){
while(digitalRead(button));
while(!digitalRead(button)){
delay(10);
if(!digitalRead(button)){
delay(100);
while(digitalRead(button));
}
}
}
void stop(){
digitalWrite(pin1,LOW);
digitalWrite(pin2,LOW);
digitalWrite(pin3,LOW);
digitalWrite(pin4,LOW);
//analogWrite(pwm1,0);
//analogWrite(pwm2,0);
//delay(time*100);
}
void go_ahead(int speed=50){
digitalWrite(pin1,HIGH);
digitalWrite(pin2,LOW);
digitalWrite(pin3,HIGH);
digitalWrite(pin4,LOW);
analogWrite(pwm1,speed);
analogWrite(pwm2,speed);
//delay(time*100);
}
void back(int speed=50){
digitalWrite(pin1,LOW);
digitalWrite(pin2,HIGH);
digitalWrite(pin3,LOW);
digitalWrite(pin4,HIGH);
analogWrite(pwm1,speed);
analogWrite(pwm2,speed);
//delay(time*100);
}
void turnl(int speed=50){
digitalWrite(pin1,LOW);
digitalWrite(pin2,LOW);
digitalWrite(pin3,HIGH);
digitalWrite(pin4,LOW);
analogWrite(pwm1,speed);
//analogWrite(pwm2,0);
//delay(time*100);
}
void turnr(int speed=50){
digitalWrite(pin1,HIGH);
digitalWrite(pin2,LOW);
digitalWrite(pin3,LOW);
digitalWrite(pin4,LOW);
//analogWrite(pwm1,0);
analogWrite(pwm2,speed);
//delay(time*100);
}
void ydturnl(int speed=50){
digitalWrite(pin1,LOW);
digitalWrite(pin2,HIGH);
digitalWrite(pin3,HIGH);
digitalWrite(pin4,LOW);
analogWrite(pwm1,speed);
analogWrite(pwm2,speed);
//delay(time*100);
}
void ydturnr(int speed=50){
digitalWrite(pin1,HIGH);
digitalWrite(pin2,LOW);
digitalWrite(pin3,LOW);
digitalWrite(pin4,HIGH);
analogWrite(pwm1,speed);
analogWrite(pwm2,speed);
//delay(time*100);
}
void trace(){
int SM_1 = digitalRead(A1);
int SM_2 = digitalRead(A3);
int SL = digitalRead(A2);
int SR = digitalRead(A4);
if (SL == HIGH && SR==HIGH ){
delay(1);
go_ahead();
}
else {
if (SL==LOW &&SR==LOW) //超级直走状态
{
delay(1);
go_ahead(120);
}
else if ( (SL == LOW) && SR == HIGH)//左黑右白,左转 || SM_1==LOW
{
if(SM_1==LOW && SM_2==LOW) //左直角
{
delay(1);
ydturnl(120);
}
else if( ( SM_1==LOW) || SM_2==LOW) //左锐角 SL == LOW ||
{
delay(1);
turnl(70);
}
else{
delay(1);
turnl();
}
}
else if ((SR == LOW) && SL == HIGH) // 左白右黑, 右转 ||SM_2==LOW
{
if(SM_2==LOW && SM_1==LOW)
{
delay(1);
ydturnr(120);
}
else if((SM_2==LOW) || SM_1==LOW) //右锐角 SR == LOW||
{
delay(1);
turnr(70);
}
else{
delay(1);
turnr();
}
}
else // 都是白色, 停止
{
stop();
}}}
// Serial.print(SL);
//Serial.print("---");
//Serial.print(SM_1);
//Serial.print("---");
//Serial.print(SM_2);
//Serial.print("---");
//Serial.println(SR);
void loop() {
if(digitalRead(button)==0){
while(1){
trace();
}
}
}
脚注
生成一个脚注1.
- 这里是 脚注 的 内容. ↩