新手求助,最近学习arduino,研究到超声波测距,求大神...-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8705|回复: 4

新手求助,最近学习arduino,研究到超声波测距,求大神...

[复制链接]
发表于 2013-6-3 14:42 | 显示全部楼层 |阅读模式
最近学习arduino的知识,买的mega2560板子和 LCD1062液晶,超声波模块被我弄烧了,实在进行不下去了,想求大神帮助指导,,写个程序,由此来进行超声波测距的入门学习。( 再拜个师傅)
。具体就是,超声波HC0-SR04测距显示在LCD1062上(包括时间,速度,距离),用蜂鸣器(无源)报警,接三色灯(红,黄,绿)提示安全距离。这就是我这个初学者想的完美测距啦,,哈哈,,求大神指导,小弟两块硬盘的资料和资源你随便挑


我qq 649 986 648

笔记本里的两块硬盘资料容量,包括视频,文档,音乐15G,图片10G(都是多年一点一滴的精华!!)


笔记本里的两块硬盘资料容量,包括视频,文档,音乐15G,图片10G(都是多年一点一滴的精华!!) ...

笔记本里的两块硬盘资料容量,包括视频,文档,音乐15G,图片10G(都是多年一点一滴的精华!!) ...
发表于 2013-6-3 15:40 | 显示全部楼层
还以为是送硬盘呢,你直接看论坛的超声波和1602的教程吧~~你用的东西教程论坛都有,自己搜索
发表于 2013-6-3 17:18 来自手机 | 显示全部楼层
你这个主要看arduino的多任务操作。其他模块调用库就行。
 楼主| 发表于 2013-6-7 13:29 | 显示全部楼层
coloz 发表于 2013-6-3 15:40
还以为是送硬盘呢,你直接看论坛的超声波和1602的教程吧~~你用的东西教程论坛都有,自己搜索 ...

学习后,写了个程序,求大神指导错误,
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,10,5,4,3,2);//定义LCD的引脚连接情况

int TrigPin=14; // 将Arduino 的 Pin3 连接至 HC-SR04 的Trig/TX,或定义超声波信号发出接口

int EchoPin=13;  // 将Arduino 的 Pin2 连接至 HC-SR04 的Echo/RX,或定义超声波信号接收接口


int ledpin1=6;
int ledpin2=7;
int ledpin3=8; //分别定义变色灯(红 黄 绿)LED的三个输出接口
int beeppin =9;//蜂鸣器的pin


void setup()
{
  Serial.begin(9600);          //测量结果将通过此串口输出至 PC 上的串口监视器
  pinMode(EchoPin, INPUT);      //设置EchoPin 为输入模式
  pinMode(TrigPin, OUTPUT);   //设置超声波数字IO脚模式,OUTPUT为输出
  pinMode(ledpin1,OUTPUT);
  pinMode(ledpin2,OUTPUT);
  pinMode(ledpin3,OUTPUT);      //初始化变色灯的LED三个输出接口模式
  pinMode(beeppin,OUTPUT);      //设置蜂鸣器借口输出模式
   lcd.begin(16,2);             //定义lcd列数及行数
   lcd.clear();                 //清屏
   lcd.setCursor(0,0);          //光标位置置于0,0
}

void loop()
{
                                // unsigned char i,j;
  digitalWrite(TrigPin, LOW);   // 通过Trig/Pin 发送脉冲,触发 HC-SR04 测距,使发出发出超声波信号接口低电平2μs
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);  // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);    // 保持发出超声波信号接口低电平
  int distance = pulseIn(EchoPin, HIGH);  // 读出脉冲时间
  distance= distance/58;           // 将脉冲时间转化为距离(单位:厘米)
  Serial.println(distance);       //输出距离值           
  Serial.println("mm");            //输出结果至串口监视器
  delay(5);  
  
     lcd.clear();                      //清屏
     lcd.setCursor(0,0);               //光标从这里开始
     lcd.print("Distance is");         //使屏幕显示文字
     lcd.setCursor(0,1);               //设置光标位置为第二行第一个位置
     lcd.print(distance);
     lcd.print("CM");                  //显示距离和单位

if (distance <=20)
  {
    digitalWrite(ledpin1,HIGH);        //红灯提示危险距离
    digitalWrite(ledpin2,LOW);
    digitalWrite(ledpin3,LOW);
   
    digitalWrite(beeppin,HIGH);        //蜂鸣器发出一个频段的声音
    delay(1);                          //延时1ms
    digitalWrite(beeppin,LOW);
    delay(1);                          //延时1ms
  }
   else

  {
    if(distance<=80)
    {
      digitalWrite(ledpin2,HIGH);       //黄灯提示注意距离
      digitalWrite(ledpin1,LOW);
      digitalWrite(ledpin2,LOW);
      digitalWrite(beeppin,HIGH);        //蜂鸣器发出另一个频段的声音
      delay(2);                          //延时2ms
      digitalWrite(beeppin,LOW);
      delay(2);                          //延时2ms
    }
    else
    {
      digitalWrite(ledpin3,HIGH);      //绿灯提示安全距离
      digitalWrite(ledpin1,LOW);
      digitalWrite(ledpin2,LOW);
      digitalWrite(beeppin,HIGH);        //蜂鸣器发出另一个频段的声音
      delay(3);                          //延时3ms
      digitalWrite(beeppin,LOW);
      delay(3);                          //延时3ms
    }
  }


}  


 楼主| 发表于 2013-6-7 13:29 | 显示全部楼层
format 发表于 2013-6-3 17:18
你这个主要看arduino的多任务操作。其他模块调用库就行。

写了个程序,求指导,,哈哈,,粘下边了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-29 07:11 , Processed in 0.079851 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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