Arduino temperatur Sensor Kit (8 / 8 steg)
Steg 8: Programmet Arduino
Anslut datorn till Arduino med FTDI anslutningen och ladda upp programmet termistor (källa program ingår här som består av delar från prov online)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int Ai5 = A5;
int Value5;
booleska hb = hög;
int hbCNT = 0;
int digit1 = 10; 11. PWM Display stift 1
int digit2 = 11; 10. PWM Display stift 2
int segD = 12; A1; // 5; Display stift 3
används inte 13. stift 4
int segE = A0; A0; Display stift 5
int digit3 = A1; 12. // 9; PWM Display stift 6
int dp3 = A2; // 9; 12.
Steg 11-7 segment botten
Bekräfta stiften på 7 segment displayen passar i hålen på nedre främre av Arduino.
int digit4 = A3; 13. // 6; PWM Display stift 8
int segB = 9; // 3; Visa pin 16
int segG = 8. Visa pin 15
int segA = 7. 5. A1; Display stift 14
int segC = 6; // 4; Display stift 13
inte används 5. stift 12
int segF = 4; // 7; // 7; Display stift 11
int dphb = 3; A3; stift 10
GND / / pin 9
void setup() {
pinMode (segA, produktionen);
pinMode (segB, produktionen);
pinMode (segC, produktionen);
pinMode (segD, produktionen);
pinMode (segE, produktionen);
pinMode (segF, produktionen);
pinMode (segG, produktionen);
pinMode (digit1, produktionen);
pinMode (digit2, produktionen);
pinMode (digit3, produktionen);
pinMode (digit4, produktionen);
pinMode (dp3, produktionen);
pinMode(Ai5,INPUT);
Serial.BEGIN(9600);
Serial.println();
}
void loop()
{
Visa temp
displayNumber(Value5);
Visa heartbeat
om (! () hbCNT % 100)) hb =! hb;
fråga temp
om (hbCNT ++ > 300)
{
hbCNT = 1;
lagra termistor motstånd värde
Value5 = analogRead(Ai5); Läsa värdet på AI1 (pin2) och skriva den till värde1
Serial.Print(Value5);
Serial.Print ("[]");
Serial.Print (1000 / (float (1023/float(Value5)) -1));
float steinhart, genomsnittliga;
genomsnittliga = 1023 / float(Value5) - 1;
genomsnittliga = 10000 / genomsnittliga;
Steinhart = genomsnitt / 1000; (R/Ro)
Steinhart = log(steinhart); ln(R/ro)
Steinhart = 3636; 1/B * ln(R/Ro)
Steinhart += 1.0 / (25 + 273.15); + (1/till)
Steinhart = 1,0 / steinhart; Invertera
Serial.Print ("[]");
Serial.Print(Average);
Serial.Print ("[k]");
Serial.Print (steinhart); //kelvin
Serial.Print ("[c]"), //celcius
Steinhart-= 273.15;
Serial.Print(Steinhart);
Serial.Print ("[f]"), //fahrn
Steinhart = steinhart * 9 / 5 + 32;
Serial.Print(Steinhart);
Serial.Print("|||");
Value5 = steinhart * 10;
Serial.println(Value5);
}
}
void displayNumber (int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON hög
#define DIGIT_OFF låg
lång beginTime = millis();
för (int siffra = 4; tal > 0; siffriga--) {
digitalWrite (dp3, hög);
Slå på en siffra för en kort tid
Switch(DIGIT) {
fall 1:
digitalWrite (digit1, DIGIT_ON);
bryta;
fall 2:
digitalWrite (digit2, DIGIT_ON);
bryta;
fall 3:
digitalWrite (digit3, DIGIT_ON);
digitalWrite (dp3,! hb);
bryta;
fall 4:
digitalWrite (digit4, DIGIT_ON);
bryta;
}
digitalWrite (dphb,! hb);
Slå på rätt segment för denna siffra
lightNumber (toDisplay % 10).
toDisplay = 10;
delayMicroseconds(DISPLAY_BRIGHTNESS); Visa denna siffra för en bråkdel av en sekund (mellan 1us och 5000us, 500 är ganska
bra)
Stäng av alla segment
lightNumber(10);
Stäng av alla siffror
digitalWrite (digit1, DIGIT_OFF);
digitalWrite (digit2, DIGIT_OFF);
digitalWrite (digit3, DIGIT_OFF);
digitalWrite (digit4, DIGIT_OFF);
}
medan ((millis() - beginTime) < 10); Vänta på 20ms innan vi målar displayen igen
}
Med tanke på ett nummer, vänder på dessa segment
Om tal == 10, sedan stänga av nummer
void lightNumber (int numberToDisplay) {
#define SEGMENT_ON låg
#define SEGMENT_OFF hög
växel (numberToDisplay) {
fall 0:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_ON);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_OFF);
bryta;
fall 1:
digitalWrite (segA, SEGMENT_OFF);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_OFF);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_OFF);
bryta;
fall 2:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_OFF);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_ON);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_ON);
bryta;
fall 3:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_ON);
bryta;
fall 4:
digitalWrite (segA, SEGMENT_OFF);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_OFF);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
bryta;
fall 5:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_OFF);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
bryta;
fall 6:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_OFF);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_ON);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
bryta;
fall 7:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_OFF);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_OFF);
bryta;
mål 8:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_ON);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
bryta;
mål 9:
digitalWrite (segA, SEGMENT_ON);
digitalWrite (segB, SEGMENT_ON);
digitalWrite (segC, SEGMENT_ON);
digitalWrite (segD, SEGMENT_ON);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_ON);
digitalWrite (segG, SEGMENT_ON);
bryta;
mål 10:
digitalWrite (segA, SEGMENT_OFF);
digitalWrite (segB, SEGMENT_OFF);
digitalWrite (segC, SEGMENT_OFF);
digitalWrite (segD, SEGMENT_OFF);
digitalWrite (segE, SEGMENT_OFF);
digitalWrite (segF, SEGMENT_OFF);
digitalWrite (segG, SEGMENT_OFF);
bryta;
}
}