1602 или 0802 свои символы
1602 или 0802 свои символы
В моём проекте пригодился бы блок где движение палок происходит от середины направо и налево одновременно.
1602 или 0802 свои символы
сделаю сегодня наверное универсальный индикатор слево и вправо на любой строке любой длины с минимальным расходом озу и пзу
на плату надо будет добавить основной индикатор + основной блок пользовательского индикатора + блок отрисовки полоски и выставить там параметры
надо только понимать, что максимальный входной уровень будет зависеть от длины строки и составляет количество мест * 5
если индикатор 16 мест и на одной строке по 2 индикатора, то максимальный уровень для каждого будет 8 * 5 = 40
это сделано для сокращения расхода кода, все вычисления, которые можно сделать в голове заранее - должны быть сделаны в голове заранее
в худшем случае использовать стандартный блок подгонки значений, забыл как он там называется
---
разобрался в индикаторе, как в него залить сразу все символы без затрат памяти контроллера и использовании кучи высокоуровневых функций
на плату надо будет добавить основной индикатор + основной блок пользовательского индикатора + блок отрисовки полоски и выставить там параметры
надо только понимать, что максимальный входной уровень будет зависеть от длины строки и составляет количество мест * 5
если индикатор 16 мест и на одной строке по 2 индикатора, то максимальный уровень для каждого будет 8 * 5 = 40
это сделано для сокращения расхода кода, все вычисления, которые можно сделать в голове заранее - должны быть сделаны в голове заранее
в худшем случае использовать стандартный блок подгонки значений, забыл как он там называется
---
разобрался в индикаторе, как в него залить сразу все символы без затрат памяти контроллера и использовании кучи высокоуровневых функций
1602 или 0802 свои символы
это все усложняет намного, т.к. я стараюсь избегать отрицательных чисел, т.к. их в природе не существует и еще не придумали такой процессор, который бы понимал отрицательные числа
а что за блок для управления? можно линк глянуть? может быть его можно допилить до нормального состояния? в мелкасхему регулятора ведь тоже не отрицательные числа записываются
а что за блок для управления? можно линк глянуть? может быть его можно допилить до нормального состояния? в мелкасхему регулятора ведь тоже не отрицательные числа записываются
1602 или 0802 свои символы
Можно за среднюю точку принять какое либо число (например 50) и к нему прибавлять значение баланса. Т.Е. При 50 индикатор будет в среднем положении, при 20 в минусе, при 80 в плюсе.
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
1602 или 0802 свои символы
[ref]av[/ref],
можно перепилить код, там отрицательные числа зачем-то конвертируются обратно в положительные
можно подавать на входы беззнаковые, а доделать выходы строковые, которые сразу на индикатор пойдут
или использовать блок масштабирования уже в своем проекте
можно перепилить код, там отрицательные числа зачем-то конвертируются обратно в положительные
можно подавать на входы беззнаковые, а доделать выходы строковые, которые сразу на индикатор пойдут
или использовать блок масштабирования уже в своем проекте
1602 или 0802 свои символы
Зачем костыли, после сложения число станет положительным -30+50=20, только типы переменных после сложения привести к int
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
1602 или 0802 свои символы
[ref]av[/ref],
я подправлю код, сейчас смотрю в даташите диапазоны чисел для всех этих регуляторов
сделано как-то все костыль на костыле
я подправлю код, сейчас смотрю в даташите диапазоны чисел для всех этих регуляторов
сделано как-то все костыль на костыле
1602 или 0802 свои символы
[ref]av[/ref],
изначально автор темы хотел отображать не просто целые блоки, а чтобы еще в каждом блоке было по вертикальной линии, тем самым увеличив точность шкалы
а как у тебя на картинках, то там вообще все просто - надо забить всю шкалу черными блоками, а потом двигать строку в области видеопамяти
она будет тупо уходить за границы видимости, но будет оставаться все 16 символов черными
Отправлено спустя 8 минут 15 секунд:
просто мой байт он беззнаковый, поэтому твой знаковый инт будет неправильно интерпретирован
т.к. в индикаторе тоже нет отрицательных строк или адресов памяти, то поэтому в моем блоке счет идет от 0 до 80 или до 100, если индикатор 20 символов
поэтому 100 влазит в 1 байт и я не использовал вход типа инт, куда влезет до 65535, т.к. это бесполезный расход озу, а я стараюсь все оптимизировать, т.к. флпрог вност кучу своих переменных и жрет память
изначально автор темы хотел отображать не просто целые блоки, а чтобы еще в каждом блоке было по вертикальной линии, тем самым увеличив точность шкалы
а как у тебя на картинках, то там вообще все просто - надо забить всю шкалу черными блоками, а потом двигать строку в области видеопамяти
она будет тупо уходить за границы видимости, но будет оставаться все 16 символов черными
Отправлено спустя 8 минут 15 секунд:
ты можеш прилепить к байтовому входу выход инт от своего блокаav писал(а): 30 авг 2018, 15:56 Я просто спросил есть ли возможность сделать блок с входным значением в (int).
просто мой байт он беззнаковый, поэтому твой знаковый инт будет неправильно интерпретирован
т.к. в индикаторе тоже нет отрицательных строк или адресов памяти, то поэтому в моем блоке счет идет от 0 до 80 или до 100, если индикатор 20 символов
поэтому 100 влазит в 1 байт и я не использовал вход типа инт, куда влезет до 65535, т.к. это бесполезный расход озу, а я стараюсь все оптимизировать, т.к. флпрог вност кучу своих переменных и жрет память
1602 или 0802 свои символы
[ref]av[/ref],
я имел в виду свой алгоритм работы, чтобы не вычислять подстроку для отрисовки пустого символа для затирания черных блоков
можно просто двигать всю строку черных блоков вправо и тогда слева будет автоматом пустое место
это более эффективный алгоритм, правда он работает только на уровне целых блоков, а если использовать полосочки в одном блоке, то не прокатит
это я говорю, если вдруг гому хватает индикатора как выше приведено - в виде целых блоков
Отправлено спустя 6 часов 23 минуты 59 секунд:
бен, ай нид хелп
кажется моя оптимизация проваливается
если массив находится в озу, то все работает
если читается из пзу, то почему-то в озу индикатора он пишется 2 раза, но только первая его половина
все это правильно выводится в консоль, правда в протеусе, но в индикатор не заходит правильно
ставим указатель на адрес озу индикатора и записываем туда байты все за раз, счетчик адреса озу сам увеличивается
все байты как раз занимают весь объем озу в 8 символов
глюк возник именно с PROGMEM , когда данные читаются из флеша
из озу контроллера все норм работает, вторые 4 символа должны быть зеркальным отображением первых 4х
если кому не лень - проверьте в железе, завтра попробую сам, а то индикаторы эти надо еще поискать и уже 11 вечера
Отправлено спустя 5 минут :
так, я тут помедитировал на картинку с индикатором с минуту и таки узрел, что все таки отображается все правильно
это у меня в голове уже шарики за ролики заходят и пора спать, а то я с 7 утра сижу
специально внизу вывел 8 полных блоков, чтобы на их фоне видеть разницу в верхних блоках и все равно глаз замылился
потрачен час на отлов несуществующего глюка
я имел в виду свой алгоритм работы, чтобы не вычислять подстроку для отрисовки пустого символа для затирания черных блоков
можно просто двигать всю строку черных блоков вправо и тогда слева будет автоматом пустое место
это более эффективный алгоритм, правда он работает только на уровне целых блоков, а если использовать полосочки в одном блоке, то не прокатит
это я говорю, если вдруг гому хватает индикатора как выше приведено - в виде целых блоков
Отправлено спустя 6 часов 23 минуты 59 секунд:
бен, ай нид хелп
кажется моя оптимизация проваливается
если массив находится в озу, то все работает
если читается из пзу, то почему-то в озу индикатора он пишется 2 раза, но только первая его половина
Код: Выделить всё
const uint8_t cgram[64] PROGMEM = {
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // left1
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // left2
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, // left3
0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, // left4
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // right1
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, // right2
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, // right3
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f // right4
};Код: Выделить всё
_lcd1.command(LCD_SETCGRAMADDR);
for (byte i=0; i<64; i++){
_lcd1.write(pgm_read_byte(cgram +i));
}все байты как раз занимают весь объем озу в 8 символов
глюк возник именно с PROGMEM , когда данные читаются из флеша
из озу контроллера все норм работает, вторые 4 символа должны быть зеркальным отображением первых 4х
если кому не лень - проверьте в железе, завтра попробую сам, а то индикаторы эти надо еще поискать и уже 11 вечера
Отправлено спустя 5 минут :
так, я тут помедитировал на картинку с индикатором с минуту и таки узрел, что все таки отображается все правильно
это у меня в голове уже шарики за ролики заходят и пора спать, а то я с 7 утра сижу
специально внизу вывел 8 полных блоков, чтобы на их фоне видеть разницу в верхних блоках и все равно глаз замылился
потрачен час на отлов несуществующего глюка
У вас нет необходимых прав для просмотра вложений в этом сообщении.
1602 или 0802 свои символы
это обман зрения, сравнивай с нижней строкой где края первого символа и 5го - они по разные стороны знакоместа, как и должно быть
это пока только образцы символов, просто выведены для наглядности
не знаю как у других, но я пишу код по кускам и каждый кусок тестирую
вот тут тестируется пока правильное отображение всех кастомных символов, потому что если они неправильно отображаются, то весь последущий код будет неправильным
кстати в программировании под кп есть т.н. юниттесты, когда специальная приблуда вызывает отдельно нужные функции твоего кода, передает туда нужные параметры и получает ответы, потом сравнивает с заранее правильными ответами
если все совпало, то тест пройден
писать тесты это как писать код, только еще сложнее и еще унылее
есть даже целая профессия - тестировщик кода, правда там платят меньше, чем программисту, который пишет этот код
а вот тестировать код для мк автоматом не выходит никак, приходится вот так по кускам на виртуальном или реальном желез + отладочная инфа в консоль или мигать светодиодом или дергать выводами, а логическим анализатором замерять время или передаваемую инфу по разным шинам
та еще работа, а платят тоже меньше, чем разработчику под мобильные платформы
1602 или 0802 свои символы
Привет форумчане. Снова понадобился в моём проекте блок движения палочек, использую блок который любезно разработал
kalobyte "Горизонт.альный индикатор уровня"
вход блока в byte, можно как-то переделать в string? Или конвертировать. Нужно для соединения с выходом меню (переменная 1).
kalobyte "Горизонт.альный индикатор уровня"
вход блока в byte, можно как-то переделать в string? Или конвертировать. Нужно для соединения с выходом меню (переменная 1).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- RedSky
- Лейтенант
- Сообщения: 576
- Зарегистрирован: 19 дек 2016, 20:07
- Откуда: Днепропетровск
- Имя: Алексей
- Поблагодарили: 2 раза
1602 или 0802 свои символы
А почему бы не использовать значение из блока, который выводит уставку из меню?
А блок конвертирования строк работает в обе стороны.
А блок конвертирования строк работает в обе стороны.
-
Aleksandr1
- Рядовой
- Сообщения: 41
- Зарегистрирован: 22 сен 2018, 02:46
- Имя: Александр
1602 или 0802 свои символы
Уважаемые господа! Как вывести на дисплей символ "градус" в нужной строке в нужном месте? Прочитал все страницы! Ничего не понял. 
- AlexCrane
- Капитан
- Сообщения: 903
- Зарегистрирован: 20 окт 2017, 13:22
- Откуда: Ульяновск
- Имя: Александр
- Поблагодарили: 12 раз
1602 или 0802 свои символы
[ref]Aleksandr1[/ref], Вот так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Если нет возможности отблагодарить материально, хотя бы оцени пост....
-
Aleksandr1
- Рядовой
- Сообщения: 41
- Зарегистрирован: 22 сен 2018, 02:46
- Имя: Александр
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей