Arduino Thermometer(7-Segment) (3 / 4 steg)
Steg 3: Sätta den tillsammans
Är koden jag har satt ihop i slutet av detta inlägg. I princip sätter upp temperaturen bibliotek, läser temp och sedan sätter detta i skift register.#include OneWire.h
#include DallasTemperature.h
PIN uppställningar
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
int tempPin = 7.
librraries för att ansluta till sensor
OneWire oneWire(tempPin);
DallasTemperature tempSens(&oneWire);
tecken för att visa på 7-seg Visa 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 följetong
Serial.BEGIN(9600);
init temp sensor
tempSens.begin();
ställa in pin lägen för SKIFT registors
pinMode (latchPin, produktionen);
pinMode (myClockPin, produktionen);
pinMode (myDataPin, produktionen);
}
void loop() {
tempSens.requestTemperatures();
flyta t = tempSens.getTempCByIndex(0);
Serial.println(t);
gjutna att flyta (endast har 2 siffror att använda på displayen)
int rT = (int) t;
få enheter av temp
int enheter = rT % 10.
get TEN värdet av temp
rT = rT/10;
int tior = rT % 10.
displayNumb (enheter, tens);
Delay(100);
}
void displayNumb (int a, int b) {
få koden för nummer
byte bitsA = numberSet [a];
byte bitsB = numberSet [b];
Ange redo att flytta ut
digitalWrite (latchPin, låg);
Shift enheter
shiftOut (dataPin, clockPin, bitsA);
skifta TEN
shiftOut (dataPin, clockPin, bitsB);
flytta ut data
digitalWrite (latchPin, hög);
}
flytta data ut till SKIFT registors
void shiftOut (int myDataPin, int myClockPin, byte myDataOut) {
int jag = 0;
int pinState;
digitalWrite (myDataPin, 0);
digitalWrite (myClockPin, 0);
iterera över varje bit i den myDataOut byten
för (jag = 7; jag > = 0; i--) {
digitalWrite (myClockPin, 0);
om (myDataOut & (1 < pinState = 1; digitalWrite (myDataPin, pinState); digitalWrite (myClockPin, 0);
}
annat {
pinState = 0;
}
digitalWrite (myClockPin, 1);
digitalWrite (myDataPin, 0);
}
}