带有蜂鸣器和LED闪烁的Arduino光传感器

电子说

1.3w人已加入

描述

步骤1:

光传感器

从基础开始:将板连接到GND和5V引脚,并确保您有跨接器将正极和负极导轨连接到面包板的另一侧,使它们“活动”,并帮助您构建电路而不会过多地跨过面包板。

我们要创建一个独立运行的LED序列。

让我们连接第一个LED。 LED的正极连接到引脚13。LED的负极将连接一个220欧姆的电阻,然后将其连接到GND。

第2步:第2步-为其他4个LED接线

光传感器

现在按照相同的方案为其他4个LED接线:正分别使用220欧姆电阻将每个引脚分别连接到引脚12、11、10和9,将负极分别接地。

LED就绪:您将能够通过单独的PIN单独控制它们。

第3步:第3步-连接压电

光传感器

我们希望蜂鸣器响起。为此,我们将使用压电式蜂鸣器,因此进行接线。

负极线连接到GND,正极线首先连接到100欧姆电阻,而不是引脚7。正如我之前所说,我在网上找到的其他项目中建议使用100欧姆电阻。

步骤4:步骤4-为光伏电池接线

光传感器

光伏电池是一个简单的电阻器,暴露后会导电点亮。因此,在零光下,它阻止了100%的电流,而在全光下,它允许电流流过。 Arduino“读取”的方式是零光返回值为0,全光返回值为1024。

光伏电池没有正负极。因此,您需要将一侧连接到电路板的正极。负极侧的接线有些复杂:您将使用500欧姆电阻和(b)将其两者(a)连接到负极轨,并直接连接到A0引脚。

电路已准备就绪。让我们看一下代码。

步骤5:步骤5-代码

您将在下面找到完整的代码,以进行剪切和粘贴。它具有//注释,因此您可以了解发生了什么。

这就是代码的作用:

1-传感器读取光水平,将其测量范围从0到1024

2-我们“翻译”

3-对于LED,我们将光的读数转换为闪烁的毫秒数。光线越少,闪烁的速度就越慢。进行一些测试,即使光线很强,它的读数也不会超过700或800(很难达到1024),因此我将700用作“最高”光线水平。由于MAP功能的工作方式,如果光线达到700以上,它将把闪烁时间变成一个负数-整个事情都崩溃了。因此,我创建了一个规则,即Blink_Time不能短于20毫秒。

4-LED依次点亮(即第一个LED点亮,然后关闭时,下一个点亮等等)

5-对于蜂鸣器,我们将光的读数(0-1024)转换为赫兹(120到1500),因此,光越多,音高就越高。

6-蜂鸣器在第一个,第三个和第五个LED同时发出蜂鸣声(并持续销售时间),然后随着LED暂停而暂停。这样可以以相同的节奏产生脉动效果,光和声音。

就是这样。好好享受!

代码:

///带有蜂鸣声和指示灯序列的光传感器,如机场

//用于闪烁的整数

int Blink_Time = 20;//创建此变量以用于眨眼和间隔时间

int Light_Level = 0;//创建此变量以用于光照级别

int light_Pin = A0;//引脚0将用于光电管

//蜂鸣器的输入

int Buzz_Tone = 300;//为蜂鸣器的声音创建此变量

int Buzz_Tone_Max = 1500;//蜂鸣音的最大赫兹

int Buzz_Tone_Min = 120;//最小值为蜂鸣音

void setup(){

pinMode(9,OUTPUT);//将品脱9-13初始化为led的输出

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

pinMode(12,OUTPUT);

pinMode(13,OUTPUT);

pinMode(7,OUTPUT);//设置蜂鸣器-引脚7作为蜂鸣器的输出

Serial.begin(9600); Serial.println( “就绪”);//以9600波特打开串行端口以监视变量的行为

}

void loop(){

Light_Level = AnalogRead(Light_Pin);//读取灯光水平

Blink_Time =地图(Light_Level,0、700、300、1);//如果灯光强度(Blink_Time 《= 20){Blink_Time = 20;}//设置闪烁时间的下限,则根据灯光强度(更多灯光,更快速度)

//。因为光线水平可以超过700,所以映射功能可能导致闪烁时间变为负值,在这种情况下程序将冻结。

//根据灯光水平设置蜂鸣音(更多灯光,更多赫兹,更高音调)

Buzz_Tone =地图(Light_Level,0、700,Buzz_Tone_Min,Buzz_Tone_Max);

//在串行监视器中打印所有变量,以供您查看正在发生的情况

Serial.print(“ Light level =”);

Serial.print(Light_Level);

Serial.print(“闪烁时间=”);

Serial.print(Blink_Time);

Serial.print(“ Buzz_Tone =”);

Serial.print(Buzz_Tone);

Serial.println(“”);

//第一个LED

音(7,Buzz_Tone);////在第一个LED亮起的同时开始发出蜂鸣声

digitalWrite(9,HIGH);//打开LED(HIGH是电压电平)

delay(Blink_Time);//等待[blink time]

digitalWrite(9,LOW);//通过降低电压来关闭LED

noTone(7);//停止发出哔哔声

//在此不发出哔哔声

//在此不发出哔哔声,我只希望发出三声哔哔声,因此将它们放在第一,第三和第五个指示灯

digitalWrite(10,HIGH);//打开LED(HIGH是电压电平)

delay(Blink_Time);//等待[blink time]

digitalWrite(10,LOW);//通过降低电压来关闭LED

//第三个LED

tone(7,Buzz_Tone);//beep

digitalWrite(11,HIGH);//打开LED(HIGH是电压电平)

delay(Blink_Time);//等待[blink time]

digitalWrite(11,LOW);//通过降低电压来关闭LED

noTone(7);

//第四个LED

digitalWrite(12,HIGH);//打开LED(HIGH是电压电平)

delay(Blink_Time);//等待[blink time]

digitalWrite(12,LOW);//通过降低电压来关闭LED

//第五个LED

tone(7,Buzz_Tone);

digitalWrite(13,HIGH);//打开LED(HIGH是电压电平)

delay(Blink_Time);//等待[blink time]

digitalWrite(13,LOW);//通过降低电压来关闭LED

noTone(7);

延迟(5 * Blink_Time);//在一系列闪烁的LED +蜂鸣声之间暂停

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分