Stap 8: Programma Arduino
Uw computer aansluiten op de Arduino met uw FTDI verbinding en upload het thermistor programma (bronprogramma opgenomen hier samengesteld uit delen die zijn ontleend aan voorbeelden online)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int Ai5 = A5;
int Value5;
Booleaanse hb = hoog;
int hbCNT = 0;
int digit1 = 10; 11; PWM Display pin 1
int digit2 = 11; 10; PWM Display pin 2
int segD = 12; A1 WORDEN VERKREGEN; // 5; Display pin 3
niet gebruikt 13; pin 4
int segE = A0; A0; Display pin 5
int digit3 = a1 worden verkregen; 12; // 9; PWM Display pin 6
int dp3 = A2; // 9; 12;
Stap 11-7-segment onder
Bevestig dat de pinnen op het 7 segment display passen in de openingen van de onderkant voorzijde van de Arduino.
int digit4 = A3; 13; // 6; PWM Display pin 8
int segB = 9; // 3; Display pin 16
int segG = 8; Display pin 15
int segA = 7; 5; A1 WORDEN VERKREGEN; Display pin 14
int segC = 6; // 4; Display pin 13
niet gebruikt 5; pin 12
int segF = 4; // 7; // 7; Display pin 11
int dphb = 3; A3; pin 10
GND / / pin 9
VOID Setup {}
pinMode (segA, OUTPUT);
pinMode (segB, OUTPUT);
pinMode (segC, OUTPUT);
pinMode (segD, OUTPUT);
pinMode (segE, OUTPUT);
pinMode (segF, OUTPUT);
pinMode (segG, OUTPUT);
pinMode (digit1, OUTPUT);
pinMode (digit2, OUTPUT);
pinMode (digit3, OUTPUT);
pinMode (digit4, OUTPUT);
pinMode (dp3, OUTPUT);
pinMode(Ai5,INPUT);
Serial.begin(9600);
Serial.println();
}
void loop
{
Toon temp
displayNumber(Value5);
Toon heartbeat
Als (! () hbCNT % 100)) hb =! hb;
query temp
Als (hbCNT ++ > 300)
{
hbCNT = 1;
thermistor weerstandswaarde opslaan
Value5 = analogRead(Ai5); De waarde van AI1 lezen (pin2) en naar waarde1 schrijven
Serial.Print(Value5);
Serial.Print ("[]");
Serial.Print (1000 / (float (1023/float(Value5)) -1));
float steinhart, gemiddelde;
gemiddelde = 1023 / float(Value5) - 1;
gemiddelde = 10000 / gemiddelde;
Steinhart = gemiddelde / 1000; (R/Ro)
Steinhart = log(steinhart); LN(R/ro)
Steinhart / = 3636; 1/B * ln(R/Ro)
Steinhart += 1.0 / (25 + 273.15); + (1/to)
Steinhart = 1.0 / steinhart; Omkeren
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 om) {}
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON hoog
#define DIGIT_OFF laag
lange beginTime = millis();
voor (int cijfer = 4 cijfers > 0; cijfer--) {}
digitalWrite (dp3, hoge);
Een cijfer voor een korte hoeveelheid tijd inschakelen
switch(DIGIT) {}
Case 1:
digitalWrite (digit1, DIGIT_ON);
breken;
Case 2:
digitalWrite (digit2, DIGIT_ON);
breken;
Case 3:
digitalWrite (digit3, DIGIT_ON);
digitalWrite (dp3,! hb);
breken;
Case 4:
digitalWrite (digit4, DIGIT_ON);
breken;
}
digitalWrite (dphb,! hb);
Inschakelen van de juiste segmenten voor dit cijfer
lightNumber (om 10%);
Om / = 10;
delayMicroseconds(DISPLAY_BRIGHTNESS); Dit cijfer voor een fractie van een seconde weergeven (tussen 1us en 5000us, 500 is mooi
goed)
Alle segmenten uitschakelen
lightNumber(10);
Alle cijfers uitschakelen
digitalWrite (digit1, DIGIT_OFF);
digitalWrite (digit2, DIGIT_OFF);
digitalWrite (digit3, DIGIT_OFF);
digitalWrite (digit4, DIGIT_OFF);
}
terwijl ((millis() - beginTime) < 10); Wachten op 20ms geschiedde voordat we de weergave opnieuw schilderen
}
Gezien een aantal, draait op die segmenten
Als getal == 10, schakel nummer
VOID lightNumber (int numberToDisplay) {}
#define SEGMENT_ON laag
#define SEGMENT_OFF hoog
schakelaar (numberToDisplay) {}
Case 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);
breken;
Case 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);
breken;
Case 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);
breken;
Case 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);
breken;
Case 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);
breken;
Case 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);
breken;
Case 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);
breken;
Case 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);
breken;
zaak 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);
breken;
Case 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);
breken;
zaak 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);
breken;
}
}