本帖最后由 僤裑壹嗰亾 于 2014-9-15 17:12 编辑
Arduino WIFI 小车 当WiFi发射 4 的ascii码 红外循迹 功能就会开启
- case '4'://lkf的数据等于 4 的ascii码就执行红外循迹
-
- SL = digitalRead(SensorLeft);//获取左红外感測器状态
- // SM = digitalRead(SensorMiddle);//获取中红外感測器状态
- SR = digitalRead(SensorRight);//获取右红外感測器状态
-
- if (SL == LOW&&SR==LOW)//状态都是白色 前进
- {
- qian(255);
- }
- else
- {
- if (SL == HIGH & SR == LOW)// 左黑右白, 快速左轉
- {
- delay(1);
- zuo(180);
- }
- else
- if (SR == HIGH & SL == LOW) // 左白右黑, 快速右轉
- {
- delay(1);
- you(180);
- }
- else // 否则都是黑色, 停止
- {
- ting();
- }
- }
- break;
- lkf=52;
复制代码
问题就是 小车接收到信号后执行以上代码时小车就不会循环执行此代码 请问下 如何使小车收到 红外循迹信号后 没收到别的信号就一直执行红外循迹
代码如下:
- int lkf = 0; // WIFI for incoming serial data
- const int TrigPin = 8; //Trig输入脚
- const int EchoPin = 9; //Echo输入脚
- float cm; //超声波 厘米
- int SL; //左红外感測器狀態
- //int SM; //中红外感測器狀態
- int SR; //右红外感測器狀態
- const int SensorLeft = 2; //左红外感測器輸入腳
- //const int SensorMiddle= 4 ; //中红外感測器輸入腳
- const int SensorRight = 6; //右红外感測器輸入腳
- void qian(int a)
- {
- analogWrite(3,a);//调节a参数可调速度(0-255)
- analogWrite(5,a);//调节a参数可调速度(0-255)
- digitalWrite(14,LOW);
- digitalWrite(15,HIGH);
- digitalWrite(16,LOW);
- digitalWrite(17,HIGH);
- Serial.print("qian");
- Serial.println();
- }
- void hou(int a)
- {
- analogWrite(3,a);//调节a参数可调速度(0-255)
- analogWrite(5,a); //调节a参数可调速度(0-255)
- digitalWrite(14,HIGH);
- digitalWrite(15,LOW);
- digitalWrite(16,HIGH);
- digitalWrite(17,LOW);
- Serial.print("hou");
- Serial.println();
- }
- void zuo(int a)
- {
- analogWrite(3,a);//调节参数可调速度(0-255)
- analogWrite(5,a); //调节参数可调速度(0-255)
- digitalWrite(14,LOW);
- digitalWrite(15,HIGH);
- digitalWrite(16,HIGH);
- digitalWrite(17,LOW);
- Serial.print("zuo");
- Serial.println();
- }
- void you(int a)
- {
- analogWrite(3,a);//调节参数可调速度(0-255)
- analogWrite(5,a); //调节参数可调速度(0-255)
- digitalWrite(14,HIGH);
- digitalWrite(15,LOW);
- digitalWrite(16,LOW);
- digitalWrite(17,HIGH);
- Serial.print("you");
- Serial.println();
-
- }
- void ting(void)
- {
- analogWrite(3,0);
- analogWrite(5,0);
- digitalWrite(14,LOW);
- digitalWrite(15,LOW);
- digitalWrite(16,LOW);
- digitalWrite(17,LOW);
- Serial.print("ting");
- Serial.println();
- }
- void setup()
- {
- Serial.begin(9600);// WIFI 打开串行端口,设置速率为 9600 bps
- pinMode(14,OUTPUT);
- pinMode(15,OUTPUT);
- pinMode(16,OUTPUT);
- pinMode(17,OUTPUT);
- pinMode(TrigPin, OUTPUT);
- pinMode(EchoPin, INPUT);
-
- pinMode(SensorLeft, INPUT); //定義左红外感測器
- // pinMode(SensorMiddle, INPUT);//定義中红外感測器
- pinMode(SensorRight, INPUT); //定義右红外感測器
-
-
- }
- void loop()
- {
- //*******************************************************//
- // 仅在得到数据后发送
- if (Serial.available()) //WIFI
- {
- // read the incoming byte:<br /> // 读取得到的字节
- lkf = Serial.read();//WIFI
- // say what you got:<br /> // 反馈结果
- Serial.print("I received: quot;");//WIFI
- Serial.println(lkf, DEC);//WIFI
- ////////////////////////////////////////////////////////////////////////
- switch(lkf)//判断WIFI接受数据的ascii码
- {
- case 'a'://如果ascii码等于 a 的ascii码就执行前进
- qian(255);
- lkf=0;
- break;
- case 'b':
- hou(255);
- lkf=0;
- break;
- case 'c':
- zuo(180);
- lkf=0;
- break;
- case 'd':
- you(180);
- lkf=0;
- break;
- case 'e':
- ting();
- lkf=0;
- break;
- case '4'://lkf的数据等于 4 的ascii码就执行红外循迹
-
- SL = digitalRead(SensorLeft);//获取左红外感測器状态
- // SM = digitalRead(SensorMiddle);//获取中红外感測器状态
- SR = digitalRead(SensorRight);//获取右红外感測器状态
-
- if (SL == LOW&&SR==LOW)//状态都是白色 前进
- {
- qian(255);
- }
- else
- {
- if (SL == HIGH & SR == LOW)// 左黑右白, 快速左轉
- {
- delay(1);
- zuo(180);
- }
- else
- if (SR == HIGH & SL == LOW) // 左白右黑, 快速右轉
- {
- delay(1);
- you(180);
- }
- else // 否则都是黑色, 停止
- {
- ting();
- }
- }
- break;
- lkf=52;
- }
- }
- //********************************************************************//
- //**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**
- digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
- delayMicroseconds(10);
- digitalWrite(TrigPin, HIGH);
- delayMicroseconds(50);
- digitalWrite(TrigPin, LOW);
- cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
- cm = (int(cm * 100.0)) / 100.0; //保留两位小数
- if(cm<=17 & cm>5)
- {
- Serial.print(cm);
- Serial.print("cm");
- Serial.println();
- hou(255);//调节参数可调速度(0-255)
- delay(80);
- ting();//调节参数可调速度(0-255)//
- cm=0;
- //**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**
-
- }
-
- }
复制代码
|