По организации блока пользователя

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

По организации блока пользователя

Сообщение RedSky »

Подскажите, можно ли в блоках пользователя сделать так что-бы последняя строчка кода и в скетче тоже оказалась последней.
Делаю набор блоков для 5110 на библиотеках Adafruit с кириллицей и графикой. Будут разные блоки для строк по аналогии с 1602 и блоки фигур. Нужно что-то типа:

void loop()
{
display.setContrast(contrast);      // Устанавливаем контраст
display.clearDisplay();       // Очищаем дисплей
//тут ещё что-то будет
display.display();//конец скетча

Сейчас приходится разносить display.clearDisplay() и display.display() в первую и последнюю кучу, а хочется служебные функции уместить в один блок инициализации.
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

По организации блока пользователя

Сообщение Boroda »

Не до конца понял...

Вот пример кода:



Код: Выделить всё

void setup()
{ // секция настроек
    ...............
    // код из платы
    ..............
} // конец секции настроек

void loop()
{ // секция цикла
    ..............................
    // код из платы
    ..............................
    // тут код вашего блока
    display.setContrast(contrast);      // Устанавливаем контраст
    display.clearDisplay();       // Очищаем дисплей
    //тут ещё что-то будет
    display.display();
    //конец вашего кода
    ..............................
    // код из платы
    ..............................
{ // конец секции цикла

// далее секция подпрограмм и прерываний

bool _isTimer(unsigned long startTime, unsigned long period )
{
    unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return     (currentTime >=(4294967295-startTime+period));}
}

ISR(TIMER2_OVF_vect)
{ TCNT2=100;
    if(_PWDC >= 1000){asm volatile ("jmp 0x0000");}else{_PWDC = _PWDC+1;};
}
Что и как должно быть?
Последний раз редактировалось Boroda 04 фев 2017, 16:49, всего редактировалось 1 раз.
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

По организации блока пользователя

Сообщение RedSky »

Функция display.display() должна завершать вывод текста и графики. Так как блоки в проекте могут располагаться произвольным образом, то display.display() проще всего поместить в самый конец. Хотелось так, чтобы если блок пользователя, в котором есть display.display() находясь в начале проекта помещал её в конец.
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01 май 2016, 01:04
Откуда: Коломна
Имя: Станислав
Контактная информация:

По организации блока пользователя

Сообщение Boroda »

Тут надо понимать, что вывод на такой индикатор занимает очень много времени, поэтому обновлять его надо только по необходимости (переход по пунктам меню, изменение значения, которое отображается в данный момент на индикаторе и т.д.). Следовательно блоки подготовки и обработки данных вставляем в любое место программы, а вот блок вывода индикации необходимо поставить на отдельную плату с битом разрешения работы (в версии FLProg 2.3.1 появилась возможность запускать платы по условию).

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 05 фев 2017, 11:30, всего редактировалось 1 раз.
Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя