#include "SevSegShift.h"
#include <Bounce2.h>
SevSeg sevseg;
const int increaseButtonPin = 10; // Oshirish tugmasidagi pin raqami
const int decreaseButtonPin = 11; // Kamaytirish tugmasidagi pin raqami
const int resetButtonPin = 12; // Qaytarish tugmasidagi pin raqami
int buttonPushCounter = 0; // Tugma bosilishlarini sanaydigan o'zgaruvchi
const int LATCH_PIN = A1; // Latch pin raqami
const int DATA_PIN = A0; // DATA pin raqami
const int CLOCK_PIN = A2; // CLOCK pin raqami
byte segmentPatterns[] = {0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000};
Bounce increaseButton = Bounce(); // Oshirish tugmasi
Bounce decreaseButton = Bounce(); // Kamaytirish tugmasi
Bounce resetButton = Bounce(); // Qaytarish tugmasi
void setup() {
byte numDigits = 1; // Raqam soni
byte digitPins[] = {2}; // Raqam pinlari
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9}; // Segment pinlari (A dan G gacha)
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_ANODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90); // Yorug`lik darajasi
pinMode(increaseButtonPin, INPUT_PULLUP); // Oshirish tugmasini sozlash
pinMode(decreaseButtonPin, INPUT_PULLUP); // Kamaytirish tugmasini sozlash
pinMode(resetButtonPin, INPUT_PULLUP); // Qaytarish tugmasini sozlash
pinMode(LATCH_PIN, OUTPUT); // Latch pinini sozlash
pinMode(CLOCK_PIN, OUTPUT); // CLOCK pinini sozlash
pinMode(DATA_PIN, OUTPUT); // DATA pinini sozlash
increaseButton.attach(increaseButtonPin); // Oshirish tugmasini ulash
decreaseButton.attach(decreaseButtonPin); // Kamaytirish tugmasini ulash
resetButton.attach(resetButtonPin); // Qaytarish tugmasini ulash
}
void loop() {
increaseButton.update(); // Oshirish tugmasini yangilash
decreaseButton.update(); // Kamaytirish tugmasini yangilash
resetButton.update(); // Qaytarish tugmasini yangilash
if (increaseButton.fell()) { // Oshirish tugmasi bosilganda
buttonPushCounter = (buttonPushCounter + 1) % 10; // Qiymatni oshirish
updateDisplay(); // Displeyga yangi qiymatni chiqarish
}
if (decreaseButton.fell()) { // Kamaytirish tugmasi bosilganda
buttonPushCounter = (buttonPushCounter - 1 + 10) % 10; // Qiymatni kamaytirish
updateDisplay(); // Displeyga yangi qiymatni chiqarish
}
if (resetButton.fell()) { // Qaytarish tugmasi bosilganda
buttonPushCounter = 0; // Qiymatni nol qilish
updateDisplay(); // Displeyga yangi qiymatni chiqarish
}
}
void updateDisplay() {
shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, segmentPatterns[buttonPushCounter]);
digitalWrite(LATCH_PIN, HIGH); // Latch pinini yuqoriga sozlash
digitalWrite(LATCH_PIN, LOW); // Latch pinini pastga sozlash
}