极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9093|回复: 0

求大神指点这个程序哪里错了?

[复制链接]
发表于 2014-12-13 12:22:43 | 显示全部楼层 |阅读模式
一个蓝牙小车,前面都没问题,就是后面超声波那部分搞不懂。确定硬件没有问题,请大神赐教!

int ENB=3;
int IN4=5;
int IN3=6;
int IN2=9;
int IN1=10;
int ENA=11;
const int Trig=7;
const int Echo=8;
float cm;
void setup()
{  
  Serial.begin(9600);
  pinMode(ENB,OUTPUT);
  pinMode(IN4,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(IN1,OUTPUT);
  pinMode(ENA,OUTPUT);
  pinMode(Trig,OUTPUT);
  pinMode(Echo,INPUT);
}

void go()// 前进
{
        digitalWrite(IN2,HIGH);
        digitalWrite(IN1,LOW);
        analogWrite(ENA,245);
        analogWrite(ENB,255);
        digitalWrite(IN4,HIGH);
        digitalWrite(IN3,LOW);
}

void right()
{
      digitalWrite(IN2,HIGH);
      digitalWrite(IN1,LOW);
      analogWrite(ENA,245);
      analogWrite(ENB,255);
      digitalWrite(IN4,LOW);
      digitalWrite(IN3,HIGH);
      delay(500);
      go();
}
void left()
{
      digitalWrite(IN2,LOW);
      digitalWrite(IN1,HIGH);
      analogWrite(ENA,245);
      analogWrite(ENB,255);
      digitalWrite(IN4,HIGH);
      digitalWrite(IN3,LOW);
      delay(500);
      go();
}
void stop1()// 停止
{
      digitalWrite(IN2,LOW);
      digitalWrite(IN1,LOW);
      analogWrite(ENA,245);
      analogWrite(ENB,255);
      digitalWrite(IN4,LOW);
      digitalWrite(IN3,LOW);
   
}
void back()// 后退
{
      digitalWrite(IN2,LOW);
      digitalWrite(IN1,HIGH);
      analogWrite(ENA,245);
      analogWrite(ENB,255);
      digitalWrite(IN4,LOW);
      digitalWrite(IN3,HIGH);
      
}
//void zhineng()// 智能
//{

//}
void loop()
{
  char val = Serial.read();
  Serial.write(val);
  if (1 != val) {
    if ('2' == val)
    go();
    else if ('6' ==val)
    right();
    else if ('4' == val)
    left();
    else if ('8' == val)
    back();
    else if ('5' == val)
    stop1();
    else if ('0' == val)
    //zhineng();
{digitalWrite(Trig, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);

cm = pulseIn(Echo, HIGH) / 58.0; //将回波时间换算成cm
cm = (int(cm * 100.0)) / 100.0; //保留两位小数



cm=digitalRead(Echo);
if(cm>50.0)
{digitalWrite(IN2,HIGH);
digitalWrite(IN1,LOW);
analogWrite(ENA,245);
analogWrite(ENB,255);
digitalWrite(IN4,HIGH);
digitalWrite(IN3,LOW);}}
else
{ digitalWrite(IN2,LOW);
digitalWrite(IN1,HIGH);
analogWrite(ENA,245);
analogWrite(ENB,255);
digitalWrite(IN4,LOW);
digitalWrite(IN3,HIGH);}

    delay(500);
    }
  else
  {
    //stop();
    delay(500);
  }
}  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 01:31 , Processed in 0.040040 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表