Как управлять сегментами с помощью библиотеки SevSeg

В библиотеке SevSeg Дина Ридинга есть ключевое слово для управления отдельными сегментами на SSD. Я использую четыре одноразрядных дисплея с общим катодом. Кто-нибудь знает, как программировать отдельные сегменты?

#include "SevSeg.h"; 

SevSeg sevseg; 

void setup() {
  // поместите сюда код установки для однократного запуска:

  byte numDigits = 4;
  byte digitPins[] = {2, 3, 4, 5};
  byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
  bool resistorsOnSegments = false; // 'false' означает, что резисторы находятся на цифровых выводах
  byte hardwareConfig = COMMON_CATHODE; // См. README.md для опций
  bool updateWithDelays = false; // Рекомендуется значение по умолчанию false
  bool leadingZeros = false; // Используйте 'true', если хотите сохранить ведущие нули
  bool disableDecPoint = false; // Используйте 'true', если ваша десятичная точка не существует или не связана. Затем вам нужно указать только 7 segmentPins[]

  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, 
    resistorsOnSegments,
    updateWithDelays, leadingZeros, disableDecPoint);

}


void loop() {
  // поместите сюда ваш основной код для многократного запуска:

  sevseg.setSegments();
  //sevseg.setNumber(1234,0);
  //sevseg.setChars("");
  //sevseg.blank();
  sevseg.refreshDisplay();

}

, 👍0

Обсуждение

почему вы не добавили параметр в вызов функции setSegments()?, @jsotola

Потому что я еще не знаю, какой параметр поставить или как использовать функцию., @BobaJFET

попробовал это. показывает кучу бреда., @BobaJFET

Это всегда одно и то же, если вы просто вводите 1, или 2, или 25 и т. д. Я не думаю, что функция работает так. Однако отображение чисел с помощью функции setNumber работает отлично, поэтому мои дисплеи подключены правильно., @BobaJFET

что здесь непонятно https://github.com/DeanIsMe/SevSeg/blob/9cdc6d03d820ffbc18174921fb7bd0a3d030fd8b/SevSeg.cpp#L435, @Juraj


1 ответ


Лучший ответ:

0

Вы не можете с этой библиотекой. Автор не предоставил общедоступных методов, которые выполняли бы эту работу.

Существуют закрытые методы (segmentOn и segmentOff), которые можно использовать, но для доступа к ним вам потребуется изменить библиотеку.

,

Являются ли 4 и 2 просто произвольными числами, которые вы выбрали?, @BobaJFET

Да. Это номер сегмента, который вы хотите включить или выключить., @Majenko

Как бы вы определили, какая цифра?, @BobaJFET

Возможно с другими номерами. Поэкспериментируйте и узнайте., @Majenko

Последний вопрос. Где эти функции должны быть размещены в коде? Я получаю «частное в этом контексте»., @BobaJFET

На самом деле, похоже, что это может быть так. Я никогда не использовал эту библиотеку, поэтому просто читал исходный код. Похоже, что фактический ответ может быть «Вы не можете с этой библиотекой». Проклятие., @Majenko

Простой ответ, вероятно, заключается в использовании другой библиотеки., @Majenko

Интересно, почему тогда он включил функцию setSegment(). И да, использование другой библиотеки тоже не кажется плохой идеей., @BobaJFET

Он, вероятно, использует его внутренне., @Majenko