Étape 11 : Le Code
#include < OneWire.h >Câble de données est branché sur la broche 3 sur l’Arduino
int DS18S20_Pin = 3 ; Broche DS18S20 Signal numérique 2
Configurer une instance oneWire pour communiquer avec les périphériques OneWire
OneWire ds(DS18S20_Pin) ;
digit1 int ;
int digit2 ;
int digit3 ;
int x ;
int num ;
int start ;
oneA int = 0 ; ARDUINO ne épingle pas Atmega
int oneB = 1 ;
oneC int = 2 ;
oneD int = 4 ;
oneE int = 5 ;
oneF int = 6 ;
oneG int = 7 ;
twoA int = 8 ;
twoB int = 9 ;
twoC int = 10 ;
int utaku = 11 ;
int twoE = 12 ;
int twoF = 13 ;
int twoG = A0 ;
threeA int = A1 ;
threeB int = A2 ;
Sub setup(void)
{
pinMode (oneA, OUTPUT); //digit1
pinMode(oneB,OUTPUT) ;
pinMode(oneC,OUTPUT) ;
pinMode(oneD,OUTPUT) ;
pinMode(oneE,OUTPUT) ;
pinMode(oneF,OUTPUT) ;
pinMode(oneG,OUTPUT) ;
pinMode (twoA, sortie); //digit2
pinMode(twoB,OUTPUT) ;
pinMode(twoC,OUTPUT) ;
pinMode(twoD,OUTPUT) ;
pinMode(twoE,OUTPUT) ;
pinMode(twoF,OUTPUT) ;
pinMode(twoG,OUTPUT) ;
pinMode (threeA, sortie); //digit3
pinMode(threeB,OUTPUT) ;
}
Sub loop(void)
{
flotteur de température = getTemp() ;
flotteur tempf = (((temperature*(9))/5)+32) ;
num = (int) tempf ;
Si (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)}
case 0 :
digitalWrite(oneA,HIGH) ;
digitalWrite(oneB,HIGH) ;
digitalWrite(oneC,HIGH) ;
digitalWrite(oneD,HIGH) ;
digitalWrite(oneE,HIGH) ;
digitalWrite(oneF,HIGH) ;
digitalWrite(oneG,LOW) ;
rupture ;
cas 1 :
digitalWrite(oneA,LOW) ;
digitalWrite(oneB,HIGH) ;
digitalWrite(oneC,HIGH) ;
digitalWrite(oneD,LOW) ;
digitalWrite(oneE,LOW) ;
digitalWrite(oneF,LOW) ;
digitalWrite(oneG,LOW) ;
rupture ;
cas 2 :
digitalWrite(oneA,HIGH) ;
digitalWrite(oneB,HIGH) ;
digitalWrite(oneC,LOW) ;
digitalWrite(oneD,HIGH) ;
digitalWrite(oneE,HIGH) ;
digitalWrite(oneF,LOW) ;
digitalWrite(oneG,HIGH) ;
rupture ;
cas 3 :
digitalWrite(oneA,HIGH) ;
digitalWrite(oneB,HIGH) ;
digitalWrite(oneC,HIGH) ;
digitalWrite(oneD,HIGH) ;
digitalWrite(oneE,LOW) ;
digitalWrite(oneF,LOW) ;
digitalWrite(oneG,HIGH) ;
rupture ;
cas 4 :
digitalWrite(oneA,LOW) ;
digitalWrite(oneB,HIGH) ;
digitalWrite(oneC,HIGH) ;
digitalWrite(oneD,LOW) ;
digitalWrite(oneE,LOW) ;
digitalWrite(oneF,HIGH) ;
digitalWrite(oneG,HIGH) ;
rupture ;
cas no 5 :
digitalWrite(oneA,HIGH) ;
digitalWrite(oneB,LOW) ;
digitalWrite(oneC,HIGH) ;
digitalWrite(oneD,HIGH) ;
digitalWrite(oneE,LOW) ;
digitalWrite(oneF,HIGH) ;
digitalWrite(oneG,HIGH) ;
rupture ;
cas 6 :
digitalWrite(oneA,HIGH) ;
digitalWrite(oneB,LOW) ;
digitalWrite(oneC,HIGH) ;
digitalWrite(oneD,HIGH) ;
digitalWrite(oneE,HIGH) ;
digitalWrite(oneF,HIGH) ;
digitalWrite(oneG,HIGH) ;
rupture ;
cas 7 :
digitalWrite(oneA,HIGH) ;
digitalWrite(oneB,HIGH) ;
digitalWrite(oneC,HIGH) ;
digitalWrite(oneD,LOW) ;
digitalWrite(oneE,LOW) ;
digitalWrite(oneF,LOW) ;
digitalWrite(oneG,LOW) ;
rupture ;
cas 8 :
digitalWrite(oneA,HIGH) ;
digitalWrite(oneB,HIGH) ;
digitalWrite(oneC,HIGH) ;
digitalWrite(oneD,HIGH) ;
digitalWrite(oneE,HIGH) ;
digitalWrite(oneF,HIGH) ;
digitalWrite(oneG,HIGH) ;
rupture ;
cas 9 :
digitalWrite(oneA,HIGH) ;
digitalWrite(oneB,HIGH) ;
digitalWrite(oneC,HIGH) ;
digitalWrite(oneD,LOW) ;
digitalWrite(oneE,LOW) ;
digitalWrite(oneF,HIGH) ;
digitalWrite(oneG,HIGH) ;
rupture ;
}
{Switch(digit2)}
case 0 :
digitalWrite(twoA,HIGH) ;
digitalWrite(twoB,HIGH) ;
digitalWrite(twoC,HIGH) ;
digitalWrite(twoD,HIGH) ;
digitalWrite(twoE,HIGH) ;
digitalWrite(twoF,HIGH) ;
digitalWrite(twoG,LOW) ;
rupture ;
cas 1 :
digitalWrite(twoA,LOW) ;
digitalWrite(twoB,HIGH) ;
digitalWrite(twoC,HIGH) ;
digitalWrite(twoD,LOW) ;
digitalWrite(twoE,LOW) ;
digitalWrite(twoF,LOW) ;
digitalWrite(twoG,LOW) ;
rupture ;
cas 2 :
digitalWrite(twoA,HIGH) ;
digitalWrite(twoB,HIGH) ;
digitalWrite(twoC,LOW) ;
digitalWrite(twoD,HIGH) ;
digitalWrite(twoE,HIGH) ;
digitalWrite(twoF,LOW) ;
digitalWrite(twoG,HIGH) ;
rupture ;
cas 3 :
digitalWrite(twoA,HIGH) ;
digitalWrite(twoB,HIGH) ;
digitalWrite(twoC,HIGH) ;
digitalWrite(twoD,HIGH) ;
digitalWrite(twoE,LOW) ;
digitalWrite(twoF,LOW) ;
digitalWrite(twoG,HIGH) ;
rupture ;
cas 4 :
digitalWrite(twoA,LOW) ;
digitalWrite(twoB,HIGH) ;
digitalWrite(twoC,HIGH) ;
digitalWrite(twoD,LOW) ;
digitalWrite(twoE,LOW) ;
digitalWrite(twoF,HIGH) ;
digitalWrite(twoG,HIGH) ;
rupture ;
cas no 5 :
digitalWrite(twoA,HIGH) ;
digitalWrite(twoB,LOW) ;
digitalWrite(twoC,HIGH) ;
digitalWrite(twoD,HIGH) ;
digitalWrite(twoE,LOW) ;
digitalWrite(twoF,HIGH) ;
digitalWrite(twoG,HIGH) ;
rupture ;
cas 6 :
digitalWrite(twoA,HIGH) ;
digitalWrite(twoB,LOW) ;
digitalWrite(twoC,HIGH) ;
digitalWrite(twoD,HIGH) ;
digitalWrite(twoE,HIGH) ;
digitalWrite(twoF,HIGH) ;
digitalWrite(twoG,HIGH) ;
rupture ;
cas 7 :
digitalWrite(twoA,HIGH) ;
digitalWrite(twoB,HIGH) ;
digitalWrite(twoC,HIGH) ;
digitalWrite(twoD,LOW) ;
digitalWrite(twoE,LOW) ;
digitalWrite(twoF,LOW) ;
digitalWrite(twoG,LOW) ;
rupture ;
cas 8 :
digitalWrite(twoA,HIGH) ;
digitalWrite(twoB,HIGH) ;
digitalWrite(twoC,HIGH) ;
digitalWrite(twoD,HIGH) ;
digitalWrite(twoE,HIGH) ;
digitalWrite(twoF,HIGH) ;
digitalWrite(twoG,HIGH) ;
rupture ;
cas 9 :
digitalWrite(twoA,HIGH) ;
digitalWrite(twoB,HIGH) ;
digitalWrite(twoC,HIGH) ;
digitalWrite(twoD,LOW) ;
digitalWrite(twoE,LOW) ;
digitalWrite(twoF,HIGH) ;
digitalWrite(twoG,HIGH) ;
rupture ;
}
if(digit3 == 1) {}
digitalWrite(threeA,HIGH) ;
digitalWrite(threeB,HIGH) ;
}
else {}
digitalWrite(threeA,LOW) ;
digitalWrite(threeB,LOW) ;
}
}
flotteur getTemp() {//Code partir est de Bildr.org
renvoie la température d’un DS18S20 en degrés Celsius
octet de données [12] ;
addr octet [8] ;
Si (! ds.search(addr)) {}
pas plus de capteurs sur chaîne, réinitialiser recherche
DS.reset_search() ;
retour -1000 ;
}
Si (OneWire::crc8 (addr, 7)! = {addr[7])}
Serial.Print ("CRC n’est pas valide! \n") ;
retour -1000 ;
}
Si (addr [0]! = 0 x 10 & & addr [0]! = 0 x 28) {}
Serial.Print ("la périphérique n’est pas reconnu") ;
retour -1000 ;
}
DS.Reset() ;
DS.Select(addr) ;
DS.Write(0x44,1) ; lancer la conversion, avec puissance parasite sur à la fin
octet présent = ds.reset() ;
DS.Select(addr) ;
DS.Write(0xBE) ; Bloc-notes de lecture
pour (int i = 0; j’ai < 9; i ++) {/ / nous avons besoin de 9 octets
données [i] = ds.read() ;
}
DS.reset_search() ;
octet MSB = données [1] ;
octet LSB = data [0] ;
float tempRead = ((MSB << 8) | LSB) ; à l’aide de deux compliment
float TemperatureSum = tempRead / 16 ;
Return TemperatureSum ;
}