[問題] 74CH595 搭配 DS18B20水溫感測器的問題
我買的LED數字顯示是用兩片74CH595
總共可以顯示4個數字
http://i.imgur.com/xp5mHZk.jpg
爬了一下文發現是用視覺暫留的方法輪流顯示數字
現在我要搭配DS18B20水溫感測器
我發現幾個問題
1. 取DS18B20感測器溫度時用的sensors.requestTemperatures();
似乎會讓程式停頓一下
變成前面三位數字很快閃過
只剩下最後一個數字一直亮著
2. 前三個數字變得暗暗的
最後一個數字很明亮
http://i.imgur.com/SmBddP1.jpg
想知道是我哪邊寫不對嗎?
能不能改善這兩個情況
謝謝
程式碼:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
const byte dataPin = 7; // 74HC595 序列腳接「數位 7」 //DIO
const byte latchPin = 6; // 74HC595 暫存器時脈腳接「數位 6」//RCK
const byte clockPin = 5; // 74HC595 序列時脈腳接「數位 5」//SCK
int index = 0; // 七段顯示器的數字索引
int temp;
int first = 0;
int second = 0;
int third = 0;
int fourth = 0;
const byte LED[10] = { // 記錄0~9的七段數字
B00111111,
B00000110,
B01011011,
B01001111,
B01100110,
B01101101,
B01111101,
B00100111,
B01111111,
B01101111,
};
const byte LED_P[10] = { // 記錄0~9的七段數字
B10111111,
B10000110,
B11011011,
B11001111,
B11100110,
B11101101,
B11111101,
B10100111,
B11111111,
B11101111,
};
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Temperature Sensor");
// 初始化
sensors.begin();
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
sensors.requestTemperatures();
temp = sensors.getTempCByIndex(0) * 100;
fourth = temp % 10;
temp = temp / 10;
third = temp % 10;
temp = temp / 10;
second = temp % 10;
temp = temp / 10;
first = temp % 10;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, LED[first]);
shiftOut(dataPin, clockPin, MSBFIRST, 0xFE);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, LED_P[second]);
shiftOut(dataPin, clockPin, MSBFIRST, 0xFD);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, LED[third]);
shiftOut(dataPin, clockPin, MSBFIRST, 0xFB);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, LED[fourth]);
shiftOut(dataPin, clockPin, MSBFIRST, 0xF7);
digitalWrite(latchPin, HIGH);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.121.71.185
※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1528191163.A.51E.html
※ 編輯: rrr518 (140.121.71.185), 06/05/2018 17:44:32
→
06/05 18:17,
6年前
, 1F
06/05 18:17, 1F
→
06/05 18:17,
6年前
, 2F
06/05 18:17, 2F
我用了timer 效果好像還是...
有別的錯開時間的方法嗎?
→
06/05 22:32,
6年前
, 3F
06/05 22:32, 3F
→
06/06 00:08,
6年前
, 4F
06/06 00:08, 4F
→
06/06 00:08,
6年前
, 5F
06/06 00:08, 5F
→
06/06 00:09,
6年前
, 6F
06/06 00:09, 6F
→
06/06 00:10,
6年前
, 7F
06/06 00:10, 7F
→
06/06 01:17,
6年前
, 8F
06/06 01:17, 8F
→
06/06 15:42,
6年前
, 9F
06/06 15:42, 9F
→
06/06 15:43,
6年前
, 10F
06/06 15:43, 10F
→
06/06 15:43,
6年前
, 11F
06/06 15:43, 11F
→
06/06 15:44,
6年前
, 12F
06/06 15:44, 12F
→
06/06 15:46,
6年前
, 13F
06/06 15:46, 13F
我有試過加上小delay
但是效果不是很好
他會變成肉眼就看得見的每個數字獨立顯示ˊ ˋ
推
06/06 17:50,
6年前
, 14F
06/06 17:50, 14F
→
06/06 17:50,
6年前
, 15F
06/06 17:50, 15F
→
06/06 17:50,
6年前
, 16F
06/06 17:50, 16F
!!
這個感覺很棒!
→
06/06 19:15,
6年前
, 17F
06/06 19:15, 17F
真的QQ
→
06/08 17:41,
6年前
, 18F
06/08 17:41, 18F
→
06/09 16:00,
6年前
, 19F
06/09 16:00, 19F
推
06/09 16:32,
6年前
, 20F
06/09 16:32, 20F
因為我讀取的溫度在第二位會有小數點
LED_P是有小數點的數字
推
06/09 16:46,
6年前
, 21F
06/09 16:46, 21F
→
06/09 16:47,
6年前
, 22F
06/09 16:47, 22F
→
06/09 16:48,
6年前
, 23F
06/09 16:48, 23F
→
06/09 16:49,
6年前
, 24F
06/09 16:49, 24F
推
06/09 17:10,
6年前
, 25F
06/09 17:10, 25F
對
這個我其實不太懂原理
跟我上網查資料的說法不太一樣QQ
※ 編輯: rrr518 (140.121.71.185), 06/11/2018 19:14:04
推
06/12 20:10,
6年前
, 26F
06/12 20:10, 26F
→
06/12 20:10,
6年前
, 27F
06/12 20:10, 27F
→
06/13 16:47,
6年前
, 28F
06/13 16:47, 28F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章