ds18b20溫度顯示-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4610|回复: 2

[已解决] ds18b20溫度顯示

[复制链接]
发表于 2013-12-9 02:02 | 显示全部楼层 |阅读模式
本帖最后由 a2823411 于 2013-12-9 13:56 编辑

以下是我參考別人的可是為什麼卡在
pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);
刪掉的話又可以run
所以要怎麼辦 #include <OneWire.h>#include <DallasTemperature.h>
// pin setups
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
int tempPin = 7;
// librraries for connecting to sensor
OneWire oneWire(tempPin);
DallasTemperature tempSens(&oneWire);
// characters for displaying on 7-seg display 0-9
byte numberSet[10] = {  
B01111011, B01000001, B00110111, B01100111,        // 0,1,2,3
B01001101, B01101110, B01111110, B01000011,        // 4,5,6,7
B01111111, B01101111 // 8,9};
void setup() {
  // init serial
Serial.begin(9600);
// init temp sensor
tempSens.begin();
  // set pin modes for shift registors
  pinMode(latchPin, OUTPUT);
pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);
}
void loop() {
tempSens.requestTemperatures();  
  float t = tempSens.getTempCByIndex(0);
  Serial.println(t);  
  // cast to float (only have 2 digits to use on display)
int rT = (int)t;   
// get units of temp
  int units = rT % 10;
   // get tens value of temp
rT = rT/10;
  int tens = rT % 10;
  displayNumb(units, tens);
delay(100);
}
void displayNumb(int a, int b) {
// get the code for the numbers
byte bitsA = numberSet[a];
byte bitsB = numberSet;   
// set ready to shift out
digitalWrite(latchPin, LOW);
  // shift units
shiftOut(dataPin, clockPin, bitsA);
// shift tens
shiftOut(dataPin, clockPin, bitsB);  
  // shift out data
digitalWrite(latchPin, HIGH);
}
// shift the data out to the shift registors
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  int i=0;
  int pinState;
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);
   // iterate over each bit in the myDataOut byte
for (i=7; i>=0; i--)  {  
  digitalWrite(myClockPin, 0);  
  if ( myDataOut & (1<<i) ) {
     pinState= 1;  
  }   
else {
              pinState= 0;
   }   
    digitalWrite(myDataPin, pinState);  
    digitalWrite(myClockPin, 1);
    digitalWrite(myDataPin, 0);
  }
  digitalWrite(myClockPin, 0);
}

发表于 2013-12-9 06:11 | 显示全部楼层
首先建议你排下版,这么乱每人想看.
另外你是怎么知道是卡在这两句的呢?
最后,不用这两句,程序才是正确的
 楼主| 发表于 2013-12-9 13:59 | 显示全部楼层
奈何col 发表于 2013-12-9 06:11
首先建议你排下版,这么乱每人想看.
另外你是怎么知道是卡在这两句的呢?
最后,不用这两句,程序才是正确的 ...

我有刪掉那兩段    後面就RUN的過
可是下面又會出現clockpin.datapin這些
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-4 04:00 , Processed in 0.069517 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表