4-Значный 7-сегментный дисплей мигает
Я пытаюсь сделать счетчик Arduino, используя 4-значный 7-сегментный дисплей. Проблема, с которой я сталкиваюсь, - это мерцание дисплея. Я использую Arduino Uno и цифровой дисплей 5641AS (так часто используется катод). Вот моя программа:
#include "SevSeg.h"
SevSeg sevseg;
int buttonPress{}; // Переменная, используемая в последовательном мониторе, имитирует нажатие кнопки для увеличения счетчика
void setup(){
byte numDigits = 4;
byte digitPins[] = {10, 11, 12, 13};
byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};
bool resistorsOnSegments = true;
bool updateWithDelays = false;
byte hardwareConfig = COMMON_CATHODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
Serial.begin(9600);
sevseg.setNumber(0);
sevseg.refreshDisplay();
}
void loop(){
static int number = 0;
if (Serial.available() > 0) { // Serial monitor input for buttonPress
buttonPress = Serial.read();
}
Serial.println("The value of buttonPress is: ");
Serial.println(buttonPress);
if (buttonPress == 10){ // Increment counter if buttonPress Serial monitor input = 10
number += 15;
buttonPress = 0;
sevseg.setNumber(number); // Отображение числа на 4 значном 7 сегментном дисплее
}
sevseg.refreshDisplay(); // Обновить дисплей
}
Я подозреваю , что эта проблема связана с sevseg.refreshDisplay ()
, я пытался переместить его в программу безрезультатно. Моя проводка правильна, так как программа отображает правильные цифры. Спасибо!
@Sony, 👍2
Обсуждение1 ответ
Лучший ответ:
▲ 2
С помощью Мадженко и джсотолы в комментариях я все исправил! Это был текст, который я показывал на Последовательном мониторе, который замедлял отображение. Вот обновленная программа, которая работает:
#include "SevSeg.h"
SevSeg sevseg;
int buttonPress{}; // Переменная, используемая в последовательном мониторе, имитирует нажатие кнопки для увеличения счетчика
void setup(){
byte numDigits = 4;
byte digitPins[] = {10, 11, 12, 13};
byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};
bool resistorsOnSegments = true;
bool updateWithDelays = false;
byte hardwareConfig = COMMON_CATHODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
Serial.begin(9600);
sevseg.setNumber(0);
sevseg.refreshDisplay();
}
void loop(){
static int number = 0;
if (Serial.available() > 0) { // Serial monitor input for buttonPress
buttonPress = Serial.read();
}
// СЛЕДУЮЩИЕ ДВЕ СТРОКИ БЫЛИ ЗАКОММЕНТИРОВАНЫ ДЛЯ РАБОТЫ
// Serial.println("The value of buttonPress is: ");
// Serial.println(buttonPress);
if (buttonPress == 10){ // Increment counter if buttonPress Serial monitor input = 10
number += 15;
buttonPress = 0;
sevseg.setNumber(number); // Отображение числа на 4 значном 7 сегментном дисплее
}
sevseg.refreshDisplay(); // Обновить дисплей
}
Я оставляю изменения программы здесь на случай, если кто-то еще получит ту же проблему.
,
@Sony
Смотрите также:
- Почему у меня 7 сегмент не обновляется каждую секунду как в программе?
- TM1637 Десятичные точки
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Как отобразить символ º на ЖК-дисплее?
- Путаница между SPI и I2C для SSD1306 OLED
- Потенциометр 10 кОм против резистора 10 кОм на ЖК-дисплее
- Не могу заставить 4 значный 7 сегментный дисплей показывать разные значения
- Сделать CS (chip select) для работаты в SPI (для и SD карты и OLED)
Это, вероятно, спам сериала, который замедляет все., @Majenko
удалите серийный код и код кнопки ... дисплей
1234
только ... он все еще мерцает, @jsotolaБольшое спасибо Маенко и джсотоле!! Запуск последовательного выхода монитора исправляет это, @Sony