Светодиодный матричный модуль FC-16 на базе MAX7219
ИЗМЕНИТЬ:
const char *pc[NUM_ZONES] =
{
"ROOM", //0
"SUBJECT", //1
"GRADE",//2
};
Я сделал это, но не могу заставить их отображать все строки одновременно.
void loop(void)
{
DateTime now = rtc.now();
char buffer[] = "hh:mm"; // часы и минуты
for (uint8_t i=0; i<NUM_ZONES; i++){
P.displayZoneText(0,now.toString(buffer), PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT);
P.displayZoneText(1, pc[1], PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT);
P.displayZoneText(2, pc[2], PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT); // отображать
P.displayZoneText(3, pc[3], PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT);
}
}
Таким образом, я могу отображать только одну строку за раз, теперь отображается только час:мин.
Скажите, что я делаю не так
EDIT2:
Или так:
-это моя цель, изменить текст в зависимости от часа
void loop(void)
{
DateTime now = rtc.now();
char buffer[] = "hh:mm"; // часы и минуты
P.displayZoneText(0,now.toString(buffer), PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT);
if(now.hour()==21){
P.displayZoneText(1, pc[1], PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT);
P.displayZoneText(2, pc[2], PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT); // отображать
P.displayZoneText(3, pc[3], PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT);
}
P.displayAnimate();
}
И на данный момент с этим кодом отображаются только часы и минуты
@Rehoboam, 👍0
Обсуждение1 ответ
Лучший ответ:
Я не использовал эту библиотеку, но, читая документацию, кажется, что она работает с концепцией зон.
- Создайте зону для каждой строки (зона — это непрерывный блок модулей, образующих своего рода вспомогательный дисплей).
- Выполняйте операции над зонами с помощью специальных функций зоны.
Например, настройка ваших зон может быть следующей:
P.begin(4); // У нас будет 4 зоны
P.setZone(0, 0, 3); // Модули 0-3 в зоне 0
P.setZone(1, 4, 7); // Модули 4-7 в зоне 1
P.setZone(2, 8, 11); // Модули 8-11 в зоне 2
P.setZone(3, 12, 15); // Модули 12-15 в зоне 3
Затем вы можете очистить зону с помощью:
P.displayClear(2); // Очистить зону 2
И напишите текст в зону с помощью:
P.displayZoneText(3, "P03", PA_CENTER, 0, 0, PA_NO_EFFECT, PA_NO_EFFECT);
Я не уверен, что означают все параметры, но прототип:
void displayZoneText(uint8_t z, const char *pText, textPosition_t align, uint16_t speed, uint16_t pause, textEffect_t effectIn, textEffect_t effectOut = PA_NO_EFFECT);
Мне это удалось. Я создал свои 4 зоны и теперь могу отображать текст в любой из них. Теперь я хотел бы знать, как отображать час: минуты из модуля часов и текста одновременно. Часы и минуты в одном ряду и текст в другом 3, @Rehoboam
Вы печатаете время в зоне 0 и другой текст в других зонах., @Majenko
Да, но я не знаю прототипа этого. Я не могу их распечатать. Только отдельно, @Rehoboam
Я привожу вам явный пример в своем ответе., @Majenko
я дал тебе правку, @Rehoboam
- Как мигать светодиодом и одновременно запускать другой код?
- Запись значения на 7-сегментный дисплей max7219
- Может ли Arduino UNO постоянно хранить код?
- Прокрутка слева направо на дисплее MAX7219
- Случайный сброс Arduino Nano
- Можно ли отправить 2 или более сигнала o/p одновременно?
- Запуск кода кодировщика одновременно с другим кодом в Arduino
- Оценить время работы soc батареи и разрядки с помощью Arduino Uno
Когда вы делаете это вручную, как вы вычисляете, сколько пробелов нужно поставить между словами? Все, что вам действительно нужно сделать, это сделать то же самое в программе, но не совсем ясно, что это за процесс., @Delta_G