接外包,有相关需求的可以联系我:Telegram | Email

Arduion + LCD1062 + 超声波传感器

该文章创建(更新)于03/20/2022,请注意文章的时效性!

文章目录[隐藏]

arduino|225x500

闲着无聊,玩起了Arduino!想弄一个note用来,有人和无人时显示不同的东西,尝试了红外和光敏都因传感器问题而放弃,最后用上了超声波,只能说精度一般!

接线

  • 主要讲LCD1062 4位接法吧!

  • 超声波
针脚 端口
TrigPin 12
EchoPin 10

代码

//1602采用标准的16脚接口,其中:  
//第1脚:VSS为地电源
//第2脚:VDD接5V正电源
//第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 
//第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 
//第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 
//第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 
//第7~14脚:D0~D7为8位双向数据线。  
//第15~16脚:背光电源 15:VCC    16:GND
//    1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,
//如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H
//中的点阵字符图形显示出来,我们就能
//看到字母“A”
//
//连接IO有全连接和以下连接方式,当然只介绍优先节省IO口的!
//以下是代码:还可以精简  可以用的串口来发送字符串,显示到1062上面,
#include <LiquidCrystal.h>
//此代码是给1602显示屏写的。2017-3-15
const int rs = 9, en = 8, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

//int pirPin = 10;
//int pirValue;


const int TrigPin = 12; //发出超声波
const int EchoPin = 10; //收到反射回来的超声波
float cm; //因为测得的距离是浮点型的

void setup() {
  Serial.begin(9600);

//  pinMode(pirPin, INPUT);  

//模拟电路
//  pinMode(A2, INPUT);
//  pinMode(10,INPUT);
  pinMode(TrigPin, OUTPUT); 
  pinMode(EchoPin, INPUT); 
}

void loop() {

//  lcd.print("  ");//清空不稳定的显示
//  lcd.setCursor(0, 1);//1位 第二行开始显示
//  lcd.print("V");//单位
//  lcd.setCursor(11, 1);//显示光标 

//   pirValue = digitalRead(pirPin);
//   Serial.print("PIR value: ");
//   Serial.print(pirValue);
//   Serial.print("\n");

   //逻辑输入
//   int litPin = analogRead(A2);

//  int litPin = digitalRead(10);

//   Serial.print("Ligth value: ");
//   Serial.print(litPin);
//   Serial.print("\n");   

    digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin 
    delayMicroseconds(2);       // delayMicroseconds在更小的时间内延时准确
    digitalWrite(TrigPin, HIGH); 
    delayMicroseconds(10); 
    digitalWrite(TrigPin, LOW); //通过这里控制超声波的发射

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

    cm = (int(cm * 100.0)) / 100.0; //保留两位小数 
    Serial.print("Distance:"); 
    Serial.print(cm); 
    Serial.print("cm"); 
    Serial.println(); 

    lcd.clear();

    if(cm > 0){
      display_night();
    }else{
      day();
    }
    delay(2000);
}

void day(){
  lcd.begin(16, 2);
  lcd.print("   emperinter ");
  lcd.setCursor(4, 1);//1位 第二行开始显示 
  lcd.print("come  on");
}

void display_night(){
  lcd.begin(16, 2);
  lcd.print("  Good Night !");
  lcd.setCursor(2, 1);//1位 第二行开始显示 
  lcd.print("Sleep Well !");
}

要不赞赏一下?

微信
支付宝
PayPal
Bitcoin

版权声明 | Copyright

除非特别说明,本博客所有作品均采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。转载请注明转自-
https://www.emperinter.info/2022/03/20/arduion-lcd1062-ultrasound/


要不聊聊?

我相信你准备留下的内容是经过思考的!【勾选防爬虫,未勾选无法留言】

*

*



YouTube | B站

微信公众号

👉 NewsLetter ❤️ 邮箱订阅 👈

优惠码

阿里云国际版20美元
Vultr10美元
搬瓦工 | Bandwagon应该有折扣吧?
Just My SocksJMS9272283 【注意手动复制去跳转】
域名 | namesiloemperinter(1美元)
币安 币安