Systemövervakaren med Arduino och 7 segment display (3 / 5 steg)
Steg 3: programmering
Jag använde detta bibliotek, vilket ger ett mycket lätt sätt att styra våra 7-segment display: den stöder decimalkomma, bokstäver (som inte ser bra ut på en liten skärm)
Det finns även en PDF-fil som beskriver hur man gör det!
Denna skiss använder avbrott så Arduino kan vänta för seriell och använda displayen. Utan att skulle skärmen omedelbart vända tillbaka till svart efter att ha visat något.
Om bildskärmen är gemensam katod, måste du ersätta disp.setCommonAnode(); med disp.setCommonCathode();
#include < sevenseg.h >
SevenSeg disp(12,8,4,6,7,11,3); Här kan du lägga stiften som är anslutna till segmenten
i alfabetisk ordning: A, B, C, D, E, F, G
CONST int numOfDigits = 3;
int digitPins [numOfDigits] = {13,10,9}.
String inputString = "";
booleska stringComplete = false
void setup() {
disp.setDigitPins(numOfDigits,digitPins);
disp.setDPPin(5); Ange PIN-koden för decimalkommat, om du har en
disp.setCommonAnode(); Ersätt denna med disp.setCommonCathode(); OM DIN BILDSKÄRM ÄR GEMENSAM KATOD
disp.setTimer(2);
disp.startTimer();
Serial.BEGIN(9600);
}
void loop() {
om (stringComplete) {
Serial.println(inputString);
Disp.write(inputString);
inputString = "";
Rensa strängen:
stringComplete = false;
}
}
void serialEvent() {
samtidigt (Serial.available()) {
char inChar = (char)Serial.read();
Lägg till det inputString:
om (inChar! = '\n') {
inputString += inChar;
}
om det inkommande tecknet är en newline, ange en flagga
så den viktigaste loopen kan göra något åt det:
annat {
stringComplete = sant;
}
}
}
ISR(TIMER2_COMPA_vect) {
disp.interruptAction(); tillmäter Avbryt timern
}