#include<IRremote.h>
IRrecv irrecv(A5);
decode_results results;
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);
irrecv.enableIRIn();
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();
}}}
void loop() {
if(digitalRead(button)==0){
while(1){
if(irrecv.decode(&results)){
long a = results.value;
// if(a==0xFF00FF) //开关
// {
// Serial.println("the system has began");
if(a==0xFF807F) {
go_ahead();
Serial.print(a, HEX);
Serial.println(" go_ahead"); }
else if(a==0xFF20DF) {
turnl();
Serial.print(a, HEX);
Serial.println("turnl"); }
else if(a==0xFF00FF) {
stop();
Serial.print(a, HEX);
Serial.println("stop"); }
else if(a==0xFF609F) {
turnr();
Serial.print(a, HEX);
Serial.println("turnr"); }
else if(a==0xFF906F) {
back();
Serial.print(a, HEX);
Serial.println("back"); }
else if(a==0xFF10EF) {
ydturnl();
Serial.print(a, HEX);
Serial.println("zuo xuan"); }
else if(a==0xFF10EF) {
ydturnr();
Serial.print(a, HEX);
Serial.println("you xuan"); }
else if(a==0xFF10EF) {
ydturnr();
Serial.print(a, HEX);
Serial.println("you xuan"); }
else if(a==0xFFA05F) {
digitalWrite(button,LOW);
Serial.print(a, HEX);
Serial.println("beep"); }
irrecv.resume();
}
delay(100);
}
}
}
day-2 遥感小车 arduino
最新推荐文章于 2023-04-29 01:00:00 发布