Utomhus LED termometer (11 / 11 steg)
Steg 11: Koden
#include < OneWire.h >Data kabeln är ansluten till stift 3 på Arduino
int DS18S20_Pin = 3; DS18S20 Signal stift på digital 2
Setup en oneWire instans att kommunicera med någon OneWire enheter
OneWire ds(DS18S20_Pin);
int digit1;
int digit2;
int digit3;
int x;
int num;
int start;
int kostnadstäckninggrad = 0; ARDUINO stift inte Atmega
int oneB = 1;
int oneC = 2;
int oneD = 4;
int oneE = 5;
int oneF = 6;
int oneG = 7.
int twoA = 8;
int twoB = 9;
int twoC = 10;
int twoD = 11;
int twoE = 12;
int twoF = 13.
int twoG = A0;
int threeA = A1;
int threeB = A2;
void setup(void)
{
pinMode (kostnadstäckninggrad, produktionen); //digit1
pinMode(oneB,OUTPUT);
pinMode(oneC,OUTPUT);
pinMode(oneD,OUTPUT);
pinMode(oneE,OUTPUT);
pinMode(oneF,OUTPUT);
pinMode(oneG,OUTPUT);
pinMode (twoA, produktionen); //digit2
pinMode(twoB,OUTPUT);
pinMode(twoC,OUTPUT);
pinMode(twoD,OUTPUT);
pinMode(twoE,OUTPUT);
pinMode(twoF,OUTPUT);
pinMode(twoG,OUTPUT);
pinMode (threeA, produktionen); //digit3
pinMode(threeB,OUTPUT);
}
void loop(void)
{
flyta temperatur = getTemp();
flyta tempf = (((temperature*(9))/5)+32);
NUM = (int) tempf;
om (x > = 0)
{
NUM = (int) tempf;
x = 0;
NUM = tempf;
digit1 = num % 10.
NUM = num/10;
digit2 = num % 10.
NUM = num/10;
digit3 = num % 10.
NUM = num/10;
}
Switch(digit1) {
fall 0:
digitalWrite(oneA,HIGH);
digitalWrite(oneB,HIGH);
digitalWrite(oneC,HIGH);
digitalWrite(oneD,HIGH);
digitalWrite(oneE,HIGH);
digitalWrite(oneF,HIGH);
digitalWrite(oneG,LOW);
bryta;
fall 1:
digitalWrite(oneA,LOW);
digitalWrite(oneB,HIGH);
digitalWrite(oneC,HIGH);
digitalWrite(oneD,LOW);
digitalWrite(oneE,LOW);
digitalWrite(oneF,LOW);
digitalWrite(oneG,LOW);
bryta;
fall 2:
digitalWrite(oneA,HIGH);
digitalWrite(oneB,HIGH);
digitalWrite(oneC,LOW);
digitalWrite(oneD,HIGH);
digitalWrite(oneE,HIGH);
digitalWrite(oneF,LOW);
digitalWrite(oneG,HIGH);
bryta;
fall 3:
digitalWrite(oneA,HIGH);
digitalWrite(oneB,HIGH);
digitalWrite(oneC,HIGH);
digitalWrite(oneD,HIGH);
digitalWrite(oneE,LOW);
digitalWrite(oneF,LOW);
digitalWrite(oneG,HIGH);
bryta;
fall 4:
digitalWrite(oneA,LOW);
digitalWrite(oneB,HIGH);
digitalWrite(oneC,HIGH);
digitalWrite(oneD,LOW);
digitalWrite(oneE,LOW);
digitalWrite(oneF,HIGH);
digitalWrite(oneG,HIGH);
bryta;
fall 5:
digitalWrite(oneA,HIGH);
digitalWrite(oneB,LOW);
digitalWrite(oneC,HIGH);
digitalWrite(oneD,HIGH);
digitalWrite(oneE,LOW);
digitalWrite(oneF,HIGH);
digitalWrite(oneG,HIGH);
bryta;
fall 6:
digitalWrite(oneA,HIGH);
digitalWrite(oneB,LOW);
digitalWrite(oneC,HIGH);
digitalWrite(oneD,HIGH);
digitalWrite(oneE,HIGH);
digitalWrite(oneF,HIGH);
digitalWrite(oneG,HIGH);
bryta;
fall 7:
digitalWrite(oneA,HIGH);
digitalWrite(oneB,HIGH);
digitalWrite(oneC,HIGH);
digitalWrite(oneD,LOW);
digitalWrite(oneE,LOW);
digitalWrite(oneF,LOW);
digitalWrite(oneG,LOW);
bryta;
mål 8:
digitalWrite(oneA,HIGH);
digitalWrite(oneB,HIGH);
digitalWrite(oneC,HIGH);
digitalWrite(oneD,HIGH);
digitalWrite(oneE,HIGH);
digitalWrite(oneF,HIGH);
digitalWrite(oneG,HIGH);
bryta;
mål 9:
digitalWrite(oneA,HIGH);
digitalWrite(oneB,HIGH);
digitalWrite(oneC,HIGH);
digitalWrite(oneD,LOW);
digitalWrite(oneE,LOW);
digitalWrite(oneF,HIGH);
digitalWrite(oneG,HIGH);
bryta;
}
Switch(digit2) {
fall 0:
digitalWrite(twoA,HIGH);
digitalWrite(twoB,HIGH);
digitalWrite(twoC,HIGH);
digitalWrite(twoD,HIGH);
digitalWrite(twoE,HIGH);
digitalWrite(twoF,HIGH);
digitalWrite(twoG,LOW);
bryta;
fall 1:
digitalWrite(twoA,LOW);
digitalWrite(twoB,HIGH);
digitalWrite(twoC,HIGH);
digitalWrite(twoD,LOW);
digitalWrite(twoE,LOW);
digitalWrite(twoF,LOW);
digitalWrite(twoG,LOW);
bryta;
fall 2:
digitalWrite(twoA,HIGH);
digitalWrite(twoB,HIGH);
digitalWrite(twoC,LOW);
digitalWrite(twoD,HIGH);
digitalWrite(twoE,HIGH);
digitalWrite(twoF,LOW);
digitalWrite(twoG,HIGH);
bryta;
fall 3:
digitalWrite(twoA,HIGH);
digitalWrite(twoB,HIGH);
digitalWrite(twoC,HIGH);
digitalWrite(twoD,HIGH);
digitalWrite(twoE,LOW);
digitalWrite(twoF,LOW);
digitalWrite(twoG,HIGH);
bryta;
fall 4:
digitalWrite(twoA,LOW);
digitalWrite(twoB,HIGH);
digitalWrite(twoC,HIGH);
digitalWrite(twoD,LOW);
digitalWrite(twoE,LOW);
digitalWrite(twoF,HIGH);
digitalWrite(twoG,HIGH);
bryta;
fall 5:
digitalWrite(twoA,HIGH);
digitalWrite(twoB,LOW);
digitalWrite(twoC,HIGH);
digitalWrite(twoD,HIGH);
digitalWrite(twoE,LOW);
digitalWrite(twoF,HIGH);
digitalWrite(twoG,HIGH);
bryta;
fall 6:
digitalWrite(twoA,HIGH);
digitalWrite(twoB,LOW);
digitalWrite(twoC,HIGH);
digitalWrite(twoD,HIGH);
digitalWrite(twoE,HIGH);
digitalWrite(twoF,HIGH);
digitalWrite(twoG,HIGH);
bryta;
fall 7:
digitalWrite(twoA,HIGH);
digitalWrite(twoB,HIGH);
digitalWrite(twoC,HIGH);
digitalWrite(twoD,LOW);
digitalWrite(twoE,LOW);
digitalWrite(twoF,LOW);
digitalWrite(twoG,LOW);
bryta;
mål 8:
digitalWrite(twoA,HIGH);
digitalWrite(twoB,HIGH);
digitalWrite(twoC,HIGH);
digitalWrite(twoD,HIGH);
digitalWrite(twoE,HIGH);
digitalWrite(twoF,HIGH);
digitalWrite(twoG,HIGH);
bryta;
mål 9:
digitalWrite(twoA,HIGH);
digitalWrite(twoB,HIGH);
digitalWrite(twoC,HIGH);
digitalWrite(twoD,LOW);
digitalWrite(twoE,LOW);
digitalWrite(twoF,HIGH);
digitalWrite(twoG,HIGH);
bryta;
}
IF(digit3 == 1) {
digitalWrite(threeA,HIGH);
digitalWrite(threeB,HIGH);
}
annat {
digitalWrite(threeA,LOW);
digitalWrite(threeB,LOW);
}
}
flyta getTemp() {//Code och framåt är från Bildr.org
Returnerar temperaturen från en DS18S20 i grader Celsius
byte data [12].
byte addr [8].
om (! ds.search(addr)) {
Inga fler sensorer på kedja, Återställ sökning
DS.reset_search();
återvända-1000;
}
om (OneWire::crc8 (addr, 7)! = addr[7]) {
Serial.Print ("CRC är inte giltig! \n");
återvända-1000;
}
om (addr [0]! = 0x10 & & addr [0]! = 0x28) {
Serial.Print ("enhet identifieras inte");
återvända-1000;
}
DS.Reset();
DS.Select(addr);
DS.write(0x44,1); Starta konvertering, med parasit driver på i slutet
byte närvarande = ds.reset();
DS.Select(addr);
DS.write(0xBE); Läs Scratchpad
för (int jag = 0; jag < 9; i ++) {/ / vi behöver 9 byte
data [i] = ds.read();
}
DS.reset_search();
byte MSB = data [1].
byte LSB = data [0];
flyta tempRead = ((MSB << 8) | LSB); med hjälp av två komplimang
flyta TemperatureSum = tempRead / 16;
återvända TemperatureSum;
}