標(biāo)題:
新手嘗試Arduino溫度數(shù)碼管顯示程序 可調(diào)亮度
[打印本頁]
作者:
ADE7755
時間:
2019-4-15 11:16
標(biāo)題:
新手嘗試Arduino溫度數(shù)碼管顯示程序 可調(diào)亮度
175346i6kgs62wjwxc3s6h_WPS圖片.jpg
(4.41 MB, 下載次數(shù): 47)
下載附件
2019-4-15 11:09 上傳
int a = 15;//設(shè)置端口
int b = 19;
int c = 7;
int d = 5;
int e = 4;
int f = 16;
int g = 8;
int dp = 6;
int tempPin = 7;
int d1 = 14;
int d2 = 17;
int d3 = 18;
int d4 = 9;
int n = 0;//溫度變量
int del = 2; //數(shù)碼管的亮度
unsigned long m=0
byte segs[7] = { a, b, c, d, e, f, g }
byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },
{ 0,1,1,0,0,0,0 },
{ 1,1,0,1,1,0,1 },
{ 1,1,1,1,0,0,1 },
{ 0,1,1,0,0,1,1 },
{ 1,0,1,1,0,1,1 },
{ 1,0,1,1,1,1,1 },
{ 1,1,1,0,0,0,0 },
{ 1,1,1,1,1,1,1 },
{ 1,1,1,1,0,1,1 }
};
void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
pinMode(11, OUTPUT);
digitalWrite(11, LOW);
Serial.begin(9600);
}
void loop()//運行程序
{
float tempval=analogRead(tempPin)* 4.6;
if (m%30==0) n=int(tempval);
if (n>300) digitalWrite(11, HIGH);
if (n<=300) digitalWrite(11, LOW);
clearLEDs()
delay(del)
lightSegments(n/1000%10);
pickDigit((n/1000%10>0));
clearLEDs();
delay(del);
pickDigit(2);
lightSegments(n/100%10);
delay(del+2);
clearLEDs();
pickDigit(3);
lightSegments(n/10%10);
dispDec(3);
delay(del+2);
clearLEDs();
delay(del);
pickDigit(4);
lightSegments(n%10);
delay(del-1);
m++;
Serial.println(analogRead(tempPin));
Serial.println(n);
}
void pickDigit(int x)
{
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
digitalWrite(d3, LOW);
digitalWrite(d4, LOW);
switch(x)
{
case 1:
digitalWrite(d1, HIGH);
break;
case 2:
digitalWrite(d2, HIGH);
break;
case 3:
digitalWrite(d3, HIGH);
break;
case 4:// default:
digitalWrite(d4, (m%100>=30));
break;
}
}
void dispDec(int x)
{
digitalWrite(dp, LOW);//點亮小數(shù)點
}
void clearLEDs()
{
for (int i = 0; i < 7; i++)
{
digitalWrite(segs[ i], HIGH);
}
digitalWrite(dp, HIGH);
}
void lightSegments(int x)
{
for (int i = 0; i < 7; i++)
{
digitalWrite(segs[ i], 1-seven_seg_digits[x][ i]);
}
}
復(fù)制代碼
作者:
admin
時間:
2019-4-15 16:53
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1