Arduino-Powered binära termometer (3 / 4 steg)
Steg 3: kod
Denna del är också ganska självförklarande. Mycket av termistor koden kom från här. Jag har kommenterat koden för att försöka göra det lättare att förstå. Den fet linjen visar var du ska ange dina värden på a, B och C för termistor:#include < math.h >
int led1 = 7. Ställa in pin-koder
int led2 = 8.
int led3 = 9;
int led4 = 10;
int led5 = 11;
int led6 = 12;
dubbel termistor (int RawADC) {
dubbel härda;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.000760464581576 + (0.000231192417594 + (0.000000072965780 * Temp * Temp)) * Temp); Detta kommer ut temperaturen i Kelvin
Temp = Temp - 273.15; Konvertera Kelvin till Celcius
returnera härda;
} / / Funktion för att konvertera termistor spänning data för temperaturer i Celcius med hjälp
Steinhart-Hart ekvationen
void setup() {
Serial.BEGIN(115200);
pinMode (led1, produktionen); Ange stift som utgångar
pinMode (led2, produktionen);
pinMode (led3, produktionen);
pinMode (led4, produktionen);
pinMode (led5, produktionen);
pinMode (led6, produktionen);
}
void loop() {
int Temp = Thermistor(analogRead(0)); Ange variabeln Temp till läsning från analoga stift 0
int tempdata [6]. Skapa tomma matris
för (int jag = 0; jag < 6; i ++) {
tempdata [i] = (Temp >> jag) & 1;
} / / Gå igenom det binära talet, spara varje plats som en post i en matris
Serial.println(int(temp)); Visa temperaturen i följetong monitor
om (tempdata [0] == 1) {
digitalWrite (led1, hög);
} / / If/Else uttalanden går igenom matrisen med de binära siffrorna och ljus LED om posten = 1 och dim LED om posten = 0
annat {
digitalWrite (led1, låg);
}
om (tempdata [1] == 1) {
digitalWrite (led2, hög);
}
annat {
digitalWrite (led2, låg);
}
om (tempdata [2] == 1) {
digitalWrite (led3, hög);
}
annat {
digitalWrite (led3, låg);
}
om (tempdata [3] == 1) {
digitalWrite (led4, hög);
}
annat {
digitalWrite (led4, låg);
}
om (tempdata [4] == 1) {
digitalWrite (led5, hög);
}
annat {
digitalWrite (led5, låg);
}
om (tempdata [5] == 1) {
digitalWrite (led6, hög);
}
annat {
digitalWrite (led6, låg);
}
Delay(100); Vänta 100 millisekunder
}