標(biāo)題: 我的arduino控制小車巡線過(guò)路口程序 [打印本頁(yè)]

作者: 追風(fēng)人    時(shí)間: 2018-1-21 15:42
標(biāo)題: 我的arduino控制小車巡線過(guò)路口程序
bool cross;
void setup() {
  // put your setup code here, to run once:
  pinMode(12,INPUT);
  pinMode(13,INPUT);
  pinMode(8,INPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  Serial.begin(9600);
  cross=false;
  Serial.println("Initialization completion!");
}
#define LS 12
#define RS 13
#define MS 8
#define LMF 9
#define LMB 10
#define RMF 5
#define RMB 6
void loop() {
  // put your main code here, to run repeatedly:
  void TURNLEFT();
  void TURNRIGHT();
  void FORWARD();
  void STOP();
  static int i=0;
  if(digitalRead(LS)==0&&digitalRead(RS)==0&&cross==0)
  {
    Serial.println("001");
    FORWARD();
  }
  if(digitalRead(LS)==1&&digitalRead(RS)==1&&digitalRead(MS)==1)
  {
    Serial.println("111");
    cross=true;
    i++;
    switch(i%2)
    {
      case 1:
      FORWARD();
      delay(650);
      do
      {
        TURNRIGHT();
         Serial.print("cross1=");
         Serial.println(cross);
         if(digitalRead(LS)==0&&digitalRead(RS)==0&&digitalRead(MS)==1)
          break;
      }while(1);
      Serial.println("001");
      break;
      case 0:
      FORWARD();
      delay(650);
      do
      {
        TURNLEFT();
        Serial.print("cross1=");
         Serial.println(cross);
       if(digitalRead(LS)==0&&digitalRead(RS)==0&&digitalRead(MS)==1)
          break;
      }while(1);
      Serial.println("002");
      break;
      default :STOP();break;
    }
      Serial.print("i%2=");
      Serial.println(i%2);
      cross=false;
      Serial.print("cross2=");
      Serial.println(cross);
      }
  if(digitalRead(LS)==0&&digitalRead(RS)==1&&cross==0)
  {
    Serial.println("01");
    TURNRIGHT();
  }
  if(digitalRead(LS)==1&&digitalRead(RS)==0&&cross==0)
{
   Serial.println("10");
   TURNLEFT();
  }
}
void TURNLEFT()
{
  digitalWrite(LMF, LOW);
  analogWrite(LMB,100);
  analogWrite(RMF,200);
  digitalWrite(RMB,LOW);
}
void TURNRIGHT()
{
  analogWrite(LMF, 200);
  digitalWrite(LMB,LOW);
  digitalWrite(RMF,LOW);
  analogWrite(RMB,100);
}
void FORWARD()
{
  analogWrite(LMF,200);   
  digitalWrite(LMB,LOW);
  analogWrite(RMF,200);
  digitalWrite(RMB,LOW);
}
void STOP()
{
  digitalWrite(LMF, LOW);
  digitalWrite(LMB,LOW);
  digitalWrite(RMF,LOW);
  digitalWrite(RMB,LOW);
}




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1