Запись значения на 7-сегментный дисплей max7219

Я новичок в arduino и пытаюсь создать интерфейс для своего авиасимулятора. Я использую плагин для программного обеспечения симулятора, который возвращает переменную с плавающей запятой на мой Arduino, которую я затем хочу отобразить на серии 7-сегментных дисплеев. Я подключил три модуля max7219, каждый по 8 цифр.

Я нашел библиотеку LedControl, которую мне удалось отобразить на моих модулях следующим образом:

#include <LedControl.h>

// входы: контакт DIN, контакт CLK, контакт LOAD. количество фишек
LedControl mydisplay = LedControl(48, 44, 46, 3);

void setup() {
  mydisplay.shutdown(0, false);  // включает дисплей
  mydisplay.shutdown(1, false);  // включает дисплей
  mydisplay.setIntensity(0, 7); // 15 = самый яркий
  mydisplay.setDigit(0, 0, 9, false);
  mydisplay.setDigit(0, 1, 8, false);
  mydisplay.setDigit(0, 2, 7, false);
  mydisplay.setDigit(0, 3, 6, false);
  mydisplay.setDigit(0, 4, 5, true);
  mydisplay.setDigit(0, 5, 4, false);
  mydisplay.setDigit(0, 6, 3, false);
  mydisplay.setDigit(0, 7, 2, false);

  mydisplay.setDigit(1, 0, 9, false);
  mydisplay.setDigit(1, 1, 8, false);
  mydisplay.setDigit(1, 2, 7, false);
  mydisplay.setDigit(1, 3, 6, false);
  mydisplay.setDigit(1, 4, 5, true);
  mydisplay.setDigit(1, 5, 4, false);
  mydisplay.setDigit(1, 6, 3, false);
  mydisplay.setDigit(1, 7, 2, false);

}

void loop() {
}

Однако код Arduino для плагина, который я использую, имеет следующую функцию:

void ProgOut(byte id, float val) {

  if (id == 1)
  {
       // напечатайте это для отображения
  } 
}

Итак, мой вопрос: прямо сейчас, основываясь на тестовом скетче LedControl, я должен отображать каждый отдельный символ один за другим, но я получаю переменную с плавающей запятой.. так как я могу просто сделать что-то вроде "mydisplay.set(floatvariable )"?

, 👍-1

Обсуждение

Почему бы не использовать библиотеку, которая поддерживает это напрямую? https://github.com/mikaelpatel/Arduino-LCD. Затем вы можете написать код типа "led.print(3.1415, 4)", т.е. использовать тот же интерфейс, что и Serial., @Mikael Patel

Я не знал об этой библиотеке. Я проверю это, спасибо., @Bruno


1 ответ


1

как я могу просто сделать что-то вроде "mydisplay.set(floatvariable)"?

напишите свой собственный код.

Допустим, вы хотите отобразить до двух знаков после запятой. Умножьте число с плавающей запятой на 100, сохраните его в переменную типа int и используйте существующий код для отображения этой целочисленной переменной + десятичной точки в нужной цифре.

,