Arduino入门教程22--指尖开关「DFR0100」
本帖最后由 zoey不种土豆 于 2024-11-22 08:42 编辑在这个项目中,我们利用LED灯、三极管和电阻,打造了一个指尖控制的开关装置。通过指尖轻触,LED灯随即亮起,展现了电子元件的神奇互动。这个项目既简单又有趣,让我们在动手中探索电子世界的奥秘。
元件清单
硬件连接
注意这个项目中使用了两种阻值不同的电阻,在连接过程中注意区分。确保正确连接各元件,避免极性错误或引脚接反,请参考图1进行连接。
图 1 指尖开关连线图示例代码
样例代码:int ledPin = 13;
int NPNPin = 0;
void setup()
{
pinMode(ledPin,OUTPUT);
Serial.begin(9600);
}
void loop()
{
int n=analogRead(NPNPin); //读取NPN三极管模拟口数据
Serial.println(n);
if(n>0) //有电压反应就运行以下程序
{
digitalWrite(ledPin,HIGH); //点亮led
delay(100); //延时,让led比较亮
digitalWrite(ledPin,LOW); //熄灭led
}
}将代码上传完成后,用手指将两个跳线头相连,你会发现LED亮起,分开两个跳线头,LED熄灭。
代码回顾这个项目的代码比较容易理解,没有涉及到新的语句和概念。setup()函数做了两个常规操作,设置引脚的模式和初始化串口通信。
在loop函数中,int n = analogRead(NPNPin) 语句从模拟引脚0读取模拟值,并将其存储在变量n中。模拟信号范围通常是从0到1023,将读取到的模拟信号通过串口发送到计算机,并在串口监视器中显示。if(n>0) //有电压反应就运行以下程序
{
digitalWrite(ledPin,HIGH); //点亮led
delay(100); //延时,让led比较亮
digitalWrite(ledPin,LOW); //熄灭led
}if(n > 0) 语句检查变量n(NPN输出的模拟信号)的值是否大于0。如果是,说明NPN三极管输出了大于零的模拟信号。在if语句内部,digitalWrite(ledPin, HIGH) 语句向LED接入的数字引脚输出高电平,点亮LED灯。然后,delay(100) 语句使程序暂停执行100毫秒,这样LED灯就能保持点亮状态一段时间。之后,digitalWrite(ledPin, LOW) 语句将LED接入的数字引脚设置为低电平,熄灭LED灯。
利用人体作为外部电阻接入电路中,通过判断NPN三极管的输出模拟信号,打开和关闭LED小灯,“真正”实现人与电路的交互。
硬件回顾NPN三极管NPN型三极管,它包含三个极:基极(B)、集电极(C)和发射极(E)(如图2)。我们可以把三极管简单看作一个开关当B端没有电流或者电流极小时,CE看作是未导通状态;当B端有电流进入时,CE看作导通状态,此时IE的大小与B端流入的电流大小有一定的比例关系(由放大倍数决定)。发射极电流的变化可以间接反映输出模拟信号的强度变化,而三极管的放大作用则使得这种变化得以放大并输出为可用的模拟信号电压。图 2 NPN型三极管
由于在这个项目中,我们通过在基极(B)中接入电阻并连通,相当于给基极一个很小的电流,就能让三极管接通,电流从发射极(E)流出三极管。根据电压计算公式U=IR,电压恒定,与基极串联的电阻越大时,电流就越小。所以在读取串口数值时会发现,与基极串联的电阻较大时(比如人体,电阻在1MΩ~6MΩ),模拟读取出的信号就较小。如果将两端导线直接接触(电阻约等于0Ω),读取的模拟信号就较大。
当基极(B)没有连通时,基极电流(IB)为0,则集电极电流(IC)和发射极电流(IE)都为0,那么串口读取到的模拟信号也为0。
在本项目中,NPN三极管参与的工作流程如下:1.输入:读取三极管基极(B)的模拟信号。2.处理:比较操作。3.输出:打开或关闭小灯。
课后练习
本项目的电路可以通过读取NPN三极管的模拟信号来反映接入电路中的电阻的阻值。基于这个规律,我们想要制作一个阻值检测装置,它利用一个LED小灯来直观地展示电阻的大小。具体地,我们希望当接入的电阻阻值增大时,LED小灯能够变得更亮;相反,当电阻阻值减小时,LED小灯则变得较暗。
示例代码
下一课:Arduino入门教程23--换挡风扇「DFR0100」
页:
[1]