Jednoduché počítadlo se zápisem na segmentový display
Napsal: 05 lis 2019, 22:58
Dobrý den,
toto je kód pro jednoduché počítadlo. Čísla se na displeji zobrazují ve formátu: 0003, 0015 adt., potřeboval bych se těchto nul před čísly zbavit. Prosím pomožte mi s úpravou kódu. Děkuji!
Zde je kód:
toto je kód pro jednoduché počítadlo. Čísla se na displeji zobrazují ve formátu: 0003, 0015 adt., potřeboval bych se těchto nul před čísly zbavit. Prosím pomožte mi s úpravou kódu. Děkuji!
Zde je kód:
Kód: Vybrat vše
#define pinLatch 4
#define pinClk 7
#define pinData 8
#define ON LOW
#define OFF HIGH
int counter = 0;
const byte mapSegment[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
const byte mapDigit[] = {0xF1,0xF2,0xF4,0xF8};
void setup () {
pinMode(pinLatch, OUTPUT);
pinMode(pinClk, OUTPUT);
pinMode(pinData, OUTPUT);
WriteNumberToSegment(3 , 0);
}
void WriteNumberToSegment(byte Segment, byte Value) {
digitalWrite(pinLatch, LOW);
shiftOut(pinData, pinClk, MSBFIRST, mapSegment[Value]);
shiftOut(pinData, pinClk, MSBFIRST, mapDigit[Segment] );
digitalWrite(pinLatch, HIGH);
}
void WriteNumberToDisplay(byte number) {
WriteNumberToSegment(0 , number / 1000);
WriteNumberToSegment(1 , (number / 100) % 10);
WriteNumberToSegment(2 , (number / 10) % 10);
WriteNumberToSegment(3 , number % 10);
}
void loop() {
bool button1 = digitalRead(A1);
bool button2 = digitalRead(A2);
bool button3 = digitalRead(A3);
if (button1 == ON) {
counter++;
if (counter > 9999) {
counter = 9999;
}
delay(200);
}
if (button2 == ON) {
counter--;
if (counter < 0) {
counter = 0;
}
delay(200);
}
if (button3 == ON) {
counter = 0;
delay(200);
}
WriteNumberToDisplay(counter);
}