软件运用|关于arduino基础教程与实操的整合运用:超声波与LED(1)
这是一个前言。
虽说早就写过不定期更新,其实不过是拖延症作祟【……】。这次重新打开,主要是想重新整理一下自己的思路,顺便尝试对学的东西进行系统的整合。请不要当作正经教程,这只是碎碎念而已。
最终效果:超声波传感器检测到人靠近,先亮灯,再变绿,再渐渐变红,最后熄灭。
——————制作过程————————
一:准备材料
1.LED三色模块一个(共阴共阳任意)
2.超声波模块一个
3.UNO一块
4.跳线若干
二:基础代码
因为用到了超声波传感器的输入和三色LED的输出,所以分别从两个模块出发寻找基础代码,再加以整合。
1.超声波模块:这里运用了DFrobot的超声波模块,所以超声波模块的基础信息都来自DFrobot的wiki。
网址:https://wiki.dfrobot.com/URM37_V5.0_Ultrasonic_Sensor_SKU_SEN0001_
参照了原件的demo code和接线
// # Editor : roker// # Date : 05.03.2018
// # Product name: URM V5.0 ultrasonic sensor
// # Product SKU : SEN0001
// # Version : 1.0
// # Description:
// # The Sketch for scanning 180 degree area 3-500cm detecting range
// # The sketch for using the URM37 PWM trigger pin mode from DFRobot
// # and writes the values to the serialport
// # Connection:
// # Vcc (Arduino) -> Pin 1 VCC (URM V5.0)
// # GND (Arduino) -> Pin 2 GND (URM V5.0)
// # Pin 3 (Arduino) -> Pin 4 ECHO (URM V5.0)
// # Pin 5 (Arduino) -> Pin 6 COMP/TRIG (URM V5.0)
// # Working Mode: PWM trigger pin mode.
int URECHO = 3; // PWM Output 0-25000US,Every 50US represent 1cm
int URTRIG = 5; // trigger pin
unsigned int DistanceMeasured = 0;
void setup()
{
//Serial initialization
Serial.begin(9600); // Sets the baud rate to 9600
pinMode(URTRIG, OUTPUT); // A low pull on pin COMP/TRIG
digitalWrite(URTRIG, HIGH); // Set to HIGH
pinMode(URECHO, INPUT); // Sending Enable PWM mode command
delay(500);
Serial.println("Init the sensor");
}
void loop()
{
Serial.print("Distance=");
digitalWrite(URTRIG, LOW);
digitalWrite(URTRIG, HIGH);
unsigned long LowLevelTime = pulseIn(URECHO, LOW) ;
if (LowLevelTime >= 50000) // the reading is invalid.
{
Serial.println("Invalid");
}
else
{
DistanceMeasured = LowLevelTime / 50; // every 50us low level stands for 1cm
Serial.print(DistanceMeasured);
Serial.println("cm");
}
delay(200);
}
2.三色LED模块
这个模块的教程很好找,这里随便例举一个
CSDN博主谢厂节的教程:
https://blog.csdn.net/xundh/article/details/83690856
PS:因为这个模块五花八门,所以需要花点时间测试一下255和0哪一个代表有色哪一个代表无色。没有别的注意事项,看看是共阴还是共阳就好。
鼓捣鼓捣就出来了。
三:整合
我习惯把两个code同时打开,再新建一个空白文件,这样会比较一目了然。
按void setup()和void loop()把两个文件整合到新的文件里面。void loop()void loop()
效果:超声波测距在串口监视器显示数值,LED变色。要把两个串联在一起还需要使用if函数,通过调整距离来改变LED的颜色。
参考代码(前面都是不需要修改的,所以就放loop部分
void loop()
{
Serial.print("Distance=");
digitalWrite(URTRIG, LOW);
digitalWrite(URTRIG, HIGH);
unsigned long LowLevelTime = pulseIn(URECHO, LOW) ;
if (LowLevelTime >= 50000)
{
Serial.println("Invalid");
}
else
{
DistanceMeasured = LowLevelTime / 50;
Serial.print(DistanceMeasured);
Serial.println("cm");
}
delay(200);
int i,j;
if(DistanceMeasured<=5)
{
setColor(255,255,0);
delay(2500);
for(i=255;i>0;i--)
{
setColor(i,i,0);
delay(10);
}
setColor(0,0,0);
delay(2500);
for(i=0;i<256;i++)
{
setColor(i,0,0);
delay(10);
}
setColor(255,0,0);
delay(2500);
for(i=0,j=255;i<256,j>0;i++,j--)
{
setColor(j,i,0);
delay(10);
}
setColor(0,255,0);
delay(2500);
}
else
{
setColor(255,255,0);
delay(2500);
}
}
最终效果:
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com