环形电阻、数码管、随机数字程序
本篇文章将会手动搭建一个电路,使用到的硬件主要有面包板一个、若干杜邦线、UNO开发板一个、按键开关一个、一个200-500欧姆的电阻、共阴极数码管一个
由于对即将要使用的环形电阻和共阴极数码管的结构不太清晰,就去查了一下,具体如正文所示。
环形电阻
概念
环形电阻是一种环形结构的电阻器,它通常是将电阻材料以环形的方式绕制在一个绝缘的环形骨架上,两端引出电极,形成一个具有一定电阻值的电子元件。它在一些需要高精度、高稳定性或特定的功率处理能力的情况下能起到很大的作用。
特点
① 高精度:环形电阻的误差范围比较小,可以用于精密测量仪器、传感器校准电路等仪器。
② 高稳定性:环形电阻在不同的环境条件下能够保持较为稳定的电阻特性,因此它们可以长期在各种复杂环境中稳定工作,减少因环境因素导致的电阻值变化而引起的电路性能波动。
③ 功率承受能力高:环形电阻可以设计为能够承受相对较高的功率,不会因为电流通过时产生的热量而迅速失效或电阻值发生较大偏差。在电源电路、功率放大器等大电流、高功率的场景很有优势。
③ 低电感:环形电阻的电感特性通常较低,相比于一些长条形或其他形状的电阻,它受到高频信号的影响相对较小,能够应用在高频的电路中。
但在我使用过程中,也能够明显感觉到缺点:环形电阻体型很小,并且颜色色差小,即使打光在上面也依旧难以辨认,导致在判断它的大小时非常困难,对于这一点,我们应当使用万用表来更便捷地测定电阻值。
电阻值对应表
共阴极数码管
概念
共阴极数码管是一种七段数码显示器件,它由七个(LED)组成,这些 LED 被排列成一个数字 “8” 的形状,通过点亮不同组合的段来显示数字 0-9 和一些字母及符号。其内部结构是将所有的发光二极管的阴极连接在一起,形成一个公共阴极,当真值为1时,数码管点亮;真值为0时,数码管不亮。
在实际使用时,只要记住数码管的那个引脚连接了开发板上的哪个引脚,再对开发板上的引脚进行操作即可。
随机数字程序
电路图纸:
电路搭建完成
由于没有面包跳线,导致接完线后整个电路的构造比较混乱,还没学习更高级的连线方式,因此电路的连接可能也显得比较臃肿,以后学得深了应该就会明白怎么优化。
源代码
void setup() {
// 将引脚 2 设为上拉输入模式
pinMode(2, INPUT_PULLUP);
// 初始化串口通信,波特率为 9600
Serial.begin(9600);
int pinNumber = 3;
// 将引脚 3 到 9 设为输出模式
while(pinNumber <= 9){
pinMode(pinNumber, OUTPUT);
pinNumber = pinNumber + 1;
}
// 用模拟引脚 A0 的模拟值作为随机数种子
randomSeed(analogRead(A0));
}
void loop() {
int myNumber;
// 若引脚 2(按下按钮)
if(!digitalRead(2)){
// 调用 getRandomNumber 函数获取随机数
myNumber = getRandomNumber(0, 10);
}
// 调用 displayNumber 函数显示数字
displayNumber(myNumber);
}
// 获取随机数的函数,范围在 minNumber 到 maxNumber 之间
int getRandomNumber(int minNumber, int maxNumber){
int randomNumber;
int i = 0; // 初始化循环计数器 i
// 循环 5 次
while(i < 5){
i = i + 1;
randomNumber = random(minNumber,maxNumber);
// 调用 displayNumber 函数显示生成的随机数
displayNumber(randomNumber);
// 延迟 100 毫秒
delay(100);
// 调用 displayClear 函数清除显示
displayClear();
// 再延迟 100 毫秒
delay(100);
// 打印当前循环次数
Serial.print("i = ");
Serial.println(i);
// 打印生成的随机数
Serial.print("randomNumber = ");
Serial.println(randomNumber);
Serial.println("");
}
// 返回最后生成的随机数
return randomNumber;
}
// 根据输入的数字显示相应数字的函数
void displayNumber(int ledNumber){
switch(ledNumber){
case 1: // 显示 1
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 2: // 显示 2
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 3: // 显示 3
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 4: // 显示 4
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
break;
case 5: // 显示 5
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 6: // 显示 6
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 7: // 显示 7
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
break;
case 8: // 显示 8
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
case 9: // 显示 9
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
break;
case 0: // 显示 0
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
break;
default: // 显示默认情况
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
}
// 清除数码管显示的函数,将所有相关引脚置为低电平
void displayClear(){
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
从结果上看,当点击按钮的时候,数码管将连续变换五个数字,并且停留在最后一个数字,直至下一次点击。写代码的时候注意,digitalWrite()所控制的引脚应当与连接的具体电路相吻合,否则无法实现相同效果。
标签:电阻,引脚,digitalWrite,环形,嵌入式,HIGH,数码管,自学 From: https://blog.csdn.net/STAB_/article/details/145235629