亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

带警报、LCD 和温度的超声波传感器

组件和用品

Arduino UNO
× 1
Adafruit 标准 LCD - 16x2 蓝底白字
× 1
超声波传感器 - HC-SR04(通用)
× 1
Maxim Integrated DS18B20 可编程分辨率单线数字温度计
× 1
电阻 4.75k ohm
× 1
SparkFun 按钮开关 12mm
× 1
单圈电位器 - 10k ohms
× 1
蜂鸣器
1 个 LED 和 1 个蜂鸣器在同一输出端,​​注意 mAmp !!我用的蜂鸣器是 8mAmp。
× 1
LED
1 个绿色、1 个黄色和 1 个红色 LED。
× 3
电阻 221 ohm
× 3
面包板(通用)
× 1
跳线(通用)
× 1

应用和在线服务

Arduino IDE

关于这个项目

这个项目给了我我需要的关于水箱水位的信息。当电平低时,绿色 LED 亮起。当液位为中等时,黄色 LED 灯亮。当电平为 HIGH 时,红色 LED 灯同时闪烁,蜂鸣器发出声音。从传感器到水位的距离由超声波传感器测量,并与该水箱中的温度一起打印到 LCD 上。这个项目是一个更大项目的一部分。第二部分将是安装在一个圆圈中的 6 个追逐 LED,以指示泵正在泵送。参见:https://create.arduino.cc/projecthub/MichDragstar/arduino-uno-or-trinket-pro-5v-6-chasing-leds-with-pot-and-pb-23a1d7 第3部分将启动泵当液位高时停泵。(建设中)对于实际项目,我使用防水超声波传感器,这不会改变接线或代码。我不知道当传感器潮湿(湿度)时读数会发生什么变化,所以这个项目只是给我提供信息,第三个项目用于泵活动,将通过磁触点完成。

 #include //Load Liquid Crystal Library#include #include #define ONE_WIRE_BUS 6 // 数据线插入Arduino OneWire的6脚oneWire(ONE_WIRE_BUS); // 设置 oneWire 实例以与任何 OneWire 设备通信//(不仅仅是 Maxim/Dallas 温度 IC)DallasTemperature sensor(&oneWire); // 将我们的oneWire 引用传递给Dallas Temperature.LiquidCrystal LCD(12, 11, 5, 4, 3, 2); //创建液晶对象LCDint trigPin =9; //Sensor Trip pin连接到Arduino pin 9int echoPin =7; //Sensor Echo pin连接到Arduino pin 7int myCounter =0; //声明你的变量 myCounter 并设置为 0float pingTime; //ping 从传感器到目标并返回浮动目标距离的时间; //以厘米为单位的目标距离float speedOfSound =776.5; //以英里每小时为单位的声音速度void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); LCD.begin(16, 2); //告诉Arduino启动你的16x2 LCD LCD.setCursor(0, 0); //设置LCD光标到左上角第0列第0行 LCD.print("Distance:"); //在第一行sensors.begin()上打印消息// 启动库 pinMode(8, OUTPUT); //引脚 8、10、13 输出引脚 pinMode(10, OUTPUT); pinMode(13, OUTPUT);}void loop() { digitalWrite(trigPin, LOW); //设置触发引脚低 delayMicroseconds(2000); //让信号稳定digitalWrite(trigPin, HIGH); //设置trigPin高delayMicroseconds(15); //高电平延时digitalWrite(trigPin, LOW); //ping 现在已经发送 delayMicroseconds(10); //高电平延时 pingTime =pulseIn(echoPin, HIGH); //以微秒为单位的pingTime pingTime =pingTime / 1000000; //通过除以 1000000(每秒微秒)将 pingTime 转换为秒 pingTime =pingTime / 3600; //通过除以 3600(一小时内的秒数)将 pingtime 转换为小时 targetDistance =speedOfSound * pingTime; //这将以英里为单位,因为我们将声速声明为公里/小时;虽然我们要把它转换回厘米 targetDistance =targetDistance / 2; //记住ping到达目标并从目标返回,因此您必须除以2才能获得实际目标距离。目标距离 =目标距离 * 160934.4; //通过乘以160934,4sensors.requestTemperatures()将英里转换为厘米; // 发送获取温度读数的命令 LCD.setCursor(10, 0); //设置光标到第一行第十列 LCD.print(" "); //打印空白以清除行 LCD.setCursor(10, 0); //再次设置Cursor到第一行第十列 LCD.print((int) (targetDistance + 0.5)); //打印测量距离 LCD.print("cm"); //打印你的单位 LCD.setCursor(0, 1); //设置光标到第二行第一列 LCD.print(" "); //打印空白以清除行 LCD.setCursor(0, 1); //再次设置光标到第二行的第一列 if (targetDistance> 40) { LCD.print("LEV LOW "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else if (targetDistance <40 &&targetDistance> 20) { LCD.print("LEV MED"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else (targetDistance <20); { LCD.print ("LEV HIGH"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } 延迟(2000); if (targetDistance> 40) { digitalWrite (13, HIGH); //绿色 LED 亮 } else { digitalWrite(13, LOW); //绿色 LED 关闭 } if (targetDistance <40 &&targetDistance> 20) { digitalWrite (8, HIGH); //黄色 LED 亮 } else { digitalWrite(8, LOW); //黄色 LED 灯关闭 } if (targetDistance <20) { digitalWrite(10, HIGH); //红色 LED 开启延迟(2000);数字写入(10,低); //红色 LED 关闭 } else { digitalWrite(10, LOW); //红色LED关闭}} 

代码

  • 无标题文件
无标题文件C/C++
#include //加载液晶库#include #include #define ONE_WIRE_BUS 6 // 数据线插入Arduino OneWire oneWire(ONE_WIRE_BUS ); // 设置 oneWire 实例以与任何 OneWire 设备通信//(不仅仅是 Maxim/Dallas 温度 IC)DallasTemperature sensor(&oneWire); // 将我们的oneWire 引用传递给Dallas Temperature.LiquidCrystal LCD(12, 11, 5, 4, 3, 2); //创建液晶对象LCDint trigPin =9; //Sensor Trip pin连接到Arduino pin 9int echoPin =7; //Sensor Echo pin连接到Arduino pin 7int myCounter =0; //声明你的变量 myCounter 并设置为 0float pingTime; //ping 从传感器到目标并返回浮动目标距离的时间; //以厘米为单位的目标距离float speedOfSound =776.5; //以英里每小时为单位的声音速度void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); LCD.begin(16, 2); //告诉Arduino启动你的16x2 LCD LCD.setCursor(0, 0); //设置LCD光标到左上角第0列第0行 LCD.print("Distance:"); //在第一行sensors.begin()上打印消息// 启动库 pinMode(8, OUTPUT); //引脚 8、10、13 输出引脚 pinMode(10, OUTPUT); pinMode(13, OUTPUT);}void loop() { digitalWrite(trigPin, LOW); //设置触发引脚低 delayMicroseconds(2000); //让信号稳定digitalWrite(trigPin, HIGH); //设置trigPin高delayMicroseconds(15); //高电平延时digitalWrite(trigPin, LOW); //ping 现在已经发送 delayMicroseconds(10); //高电平延时 pingTime =pulseIn(echoPin, HIGH); //以微秒为单位的pingTime pingTime =pingTime / 1000000; //通过除以 1000000(每秒微秒)将 pingTime 转换为秒 pingTime =pingTime / 3600; //通过除以 3600(一小时内的秒数)将 pingtime 转换为小时 targetDistance =speedOfSound * pingTime; //这将以英里为单位,因为我们将声速声明为公里/小时;虽然我们要把它转换回厘米 targetDistance =targetDistance / 2; //记住ping到达目标并从目标返回,因此您必须除以2才能获得实际目标距离。目标距离 =目标距离 * 160934.4; //通过乘以160934,4sensors.requestTemperatures()将英里转换为厘米; // 发送获取温度读数的命令 LCD.setCursor(10, 0); //设置光标到第一行第十列 LCD.print(" "); //打印空白以清除行 LCD.setCursor(10, 0); //再次设置Cursor到第一行第十列 LCD.print((int) (targetDistance + 0.5)); //打印测量距离 LCD.print("cm"); //打印你的单位 LCD.setCursor(0, 1); //设置光标到第二行第一列 LCD.print(" "); //打印空白以清除行 LCD.setCursor(0, 1); //再次设置光标到第二行的第一列 if (targetDistance> 40) { LCD.print("LEV LOW "); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else if (targetDistance <40 &&targetDistance> 20) { LCD.print("LEV MED"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } else (targetDistance <20); { LCD.print ("LEV HIGH"); LCD.print(sensors.getTempCByIndex(0)); LCD.print((char)223); LCD.print("C"); } 延迟(2000); if (targetDistance> 40) { digitalWrite (13, HIGH); //绿色 LED 亮 } else { digitalWrite(13, LOW); //绿色 LED 关闭 } if (targetDistance <40 &&targetDistance> 20) { digitalWrite (8, HIGH); //黄色 LED 亮 } else { digitalWrite(8, LOW); //黄色 LED 灯关闭 } if (targetDistance <20) { digitalWrite(10, HIGH); //红色 LED 开启延迟(2000);数字写入(10,低); //红色 LED 关闭 } else { digitalWrite(10, LOW); //红色 LED 关闭 } }

示意图

lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz

制造工艺

  1. 带二维码、RFID 和温度验证的访问控制
  2. 使用 1 线 DS18B20 传感器和 Raspberry Pi 测量温度
  3. Python 和 Raspberry Pi 温度传感器
  4. Raspberry Pi 温度和光传感器
  5. 带有 Raspberry Pi 和湿度传感器的 Aeroponics
  6. Raspberry Pi 温度传感器
  7. Portenta 和热电偶传感器(带 MAX6675)
  8. 带 LED 和压电扬声器的 DHT11 传感器
  9. 多温度传感器
  10. TM1637 具有时间设置和闹钟功能的数字时钟
  11. 带 DS1302 RTC 的简单闹钟
  12. 片上实验室流量和温度传感器