实验1.15 数码管显示液位,同时led点亮报警
/*调电位器的整模拟值(相当于液位值)到预定值,数码管显示对应的数字,led灯亮
同时串口监视器显示模拟值
*/
//电位器控制数码管显示0-9数字,同时串口监视器显示
//电位器控制共阴极数码管显示0-9数字,同时串口监视器显示
//led灯随着数码管数字增大,亮度增大,
//led灯只能用模拟引脚3,5,6,9,10,11这几个引脚
//原程序如下:
int a = 3; //声明引脚
int b = 4;
int c = 5;
int d = 6;
int e = 7;
int f = 8;
int g = 9;
int i; //声明一个全局变量
int led = 11; //声明led引脚
void D0() //自定义显示数字的函数0
{
digitalWrite(a, 1);
digitalWrite(b, 1);
digitalWrite(c, 1);
digitalWrite(d, 1);
digitalWrite(e, 1);
digitalWrite(f, 1);
digitalWrite(g, 0);
}
void D1() //自定义显示数字的函数1
{
digitalWrite(a, 0);
digitalWrite(b, 1);
digitalWrite(c, 1);
digitalWrite(d, 0);
digitalWrite(e, 0);
digitalWrite(f, 0);
digitalWrite(g, 0);
}
void D2() //自定义显示数字的函数2
{
digitalWrite(a, 1);
digitalWrite(b, 1);
digitalWrite(c, 0);
digitalWrite(d, 1);
digitalWrite(e, 1);
digitalWrite(f, 0);
digitalWrite(g, 1);
}
void D3() {
digitalWrite(a, 1);
digitalWrite(b, 1);
digitalWrite(c, 1);
digitalWrite(d, 1);
digitalWrite(e, 0);
digitalWrite(f, 0);
digitalWrite(g, 1);
}
void D4() {
digitalWrite(a, 0);
digitalWrite(b, 1);
digitalWrite(c, 1);
digitalWrite(d, 0);
digitalWrite(e, 0);
digitalWrite(f, 1);
digitalWrite(g, 1);
}
void D5() {
digitalWrite(a, 1);
digitalWrite(b, 0);
digitalWrite(c, 1);
digitalWrite(d, 1);
digitalWrite(e, 0);
digitalWrite(f, 1);
digitalWrite(g, 1);
}
void D6() {
digitalWrite(a, 1);
digitalWrite(b, 0);
digitalWrite(c, 1);
digitalWrite(d, 1);
digitalWrite(e, 1);
digitalWrite(f, 1);
digitalWrite(g, 1);
}
void D7() {
digitalWrite(a, 1);
digitalWrite(b, 1);
digitalWrite(c, 1);
digitalWrite(d, 0);
digitalWrite(e, 0);
digitalWrite(f, 0);
digitalWrite(g, 0);
}
void D8() {
digitalWrite(a, 1);
digitalWrite(b, 1);
digitalWrite(c, 1);
digitalWrite(d, 1);
digitalWrite(e, 1);
digitalWrite(f, 1);
digitalWrite(g, 1);
}
void D9() {
digitalWrite(a, 1);
digitalWrite(b, 1);
digitalWrite(c, 1);
digitalWrite(d, 1);
digitalWrite(e, 0);
digitalWrite(f, 1);
digitalWrite(g, 1);
}
void qingping() //自定义清屏函数,可以不用清屏
{
for (int i = 2; i <= 9; i++) {
digitalWrite(i, LOW);
}
}
void setup() {
Serial.begin(9600); //串口初始化
pinMode(A0, INPUT); //数字模拟就为输入模式,也可以不设置
pinMode(led, OUTPUT); //设置led引脚为输出模式
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}
void loop() {
i = analogRead(A0); //读取模拟引脚值到变量i
analogWrite(led, analogRead(A0) / 4);
//数字引脚是8位255,模拟引脚是10位1024,所以除以4换算成意义的//值,否则,调节时,led灯在255时会闪烁
Serial.print(i); //打印变量值到串口监视器
Serial.println(" cm"); //打印液位单位
Serial.println("液位值:"); //打印名称
delay(500); //延时
if (i >= 50) { //判断数码管在模拟值数字转换点,大于50时显示0
// qingping();
D0();
}
if (i >= 100) //模拟值大于100时,显示1。
{
D1();
}
if (i >= 150) { //模拟值大于150时,显示2。
// qingping();
D2();
}
if (i >= 200) {
// qingping();
D3();
}
if (i >= 230) {
// qingping();
D4();
}
if (i >= 270) {
// qingping();
D5();
}
if (i >= 320) {
// qingping();
D6();
}
if (i >= 370) {
// qingping();
D7();
}
if (i >= 450) {
// qingping();
D8();
}
if (i >= 500) {
// qingping();
D9();
}
}
实验结果: