1602 или 0802 свои символы

Вопросы от новичков
MTSnik1
Рядовой
Сообщения: 92
Зарегистрирован: 12.07.2018{, 17:06}
Репутация: 2
Имя: Timofey

1602 или 0802 свои символы

#61

Сообщение MTSnik1 » 29.08.2018{, 20:07}

Ясно. И на том СПАСИБО. :smile9: :smile9: :smile9:

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

1602 или 0802 свои символы

#62

Сообщение kalobyte » 29.08.2018{, 20:38}

скажи как должно работать, я перепишу завтра или на днях

MTSnik1
Рядовой
Сообщения: 92
Зарегистрирован: 12.07.2018{, 17:06}
Репутация: 2
Имя: Timofey

1602 или 0802 свои символы

#63

Сообщение MTSnik1 » 30.08.2018{, 04:24}

В моём проекте пригодился бы блок где движение палок происходит от середины направо и налево одновременно.

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

1602 или 0802 свои символы

#64

Сообщение kalobyte » 30.08.2018{, 10:38}

на одной строке или на разных?

MTSnik1
Рядовой
Сообщения: 92
Зарегистрирован: 12.07.2018{, 17:06}
Репутация: 2
Имя: Timofey

1602 или 0802 свои символы

#65

Сообщение MTSnik1 » 30.08.2018{, 11:49}

На одной

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

1602 или 0802 свои символы

#66

Сообщение kalobyte » 30.08.2018{, 12:04}

сделаю сегодня наверное универсальный индикатор слево и вправо на любой строке любой длины с минимальным расходом озу и пзу
на плату надо будет добавить основной индикатор + основной блок пользовательского индикатора + блок отрисовки полоски и выставить там параметры
надо только понимать, что максимальный входной уровень будет зависеть от длины строки и составляет количество мест * 5
если индикатор 16 мест и на одной строке по 2 индикатора, то максимальный уровень для каждого будет 8 * 5 = 40

это сделано для сокращения расхода кода, все вычисления, которые можно сделать в голове заранее - должны быть сделаны в голове заранее
в худшем случае использовать стандартный блок подгонки значений, забыл как он там называется
---
разобрался в индикаторе, как в него залить сразу все символы без затрат памяти контроллера и использовании кучи высокоуровневых функций :D

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

1602 или 0802 свои символы

#67

Сообщение kalobyte » 30.08.2018{, 12:34}

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

а что за блок для управления? можно линк глянуть? может быть его можно допилить до нормального состояния? в мелкасхему регулятора ведь тоже не отрицательные числа записываются :D

Аватара пользователя
Fuji1604
Сержант
Сообщения: 282
Зарегистрирован: 19.01.2016{, 06:09}
Репутация: 40
Откуда: Березники
Имя: Сергей

1602 или 0802 свои символы

#68

Сообщение Fuji1604 » 30.08.2018{, 14:03}

Можно за среднюю точку принять какое либо число (например 50) и к нему прибавлять значение баланса. Т.Е. При 50 индикатор будет в среднем положении, при 20 в минусе, при 80 в плюсе.
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

1602 или 0802 свои символы

#69

Сообщение kalobyte » 30.08.2018{, 15:38}

av,
можно перепилить код, там отрицательные числа зачем-то конвертируются обратно в положительные
можно подавать на входы беззнаковые, а доделать выходы строковые, которые сразу на индикатор пойдут
или использовать блок масштабирования уже в своем проекте

Аватара пользователя
Fuji1604
Сержант
Сообщения: 282
Зарегистрирован: 19.01.2016{, 06:09}
Репутация: 40
Откуда: Березники
Имя: Сергей

1602 или 0802 свои символы

#70

Сообщение Fuji1604 » 30.08.2018{, 15:47}

Зачем костыли, после сложения число станет положительным -30+50=20, только типы переменных после сложения привести к int
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

1602 или 0802 свои символы

#71

Сообщение kalobyte » 30.08.2018{, 15:53}

av,
я подправлю код, сейчас смотрю в даташите диапазоны чисел для всех этих регуляторов
сделано как-то все костыль на костыле

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

1602 или 0802 свои символы

#72

Сообщение kalobyte » 30.08.2018{, 16:37}

av,
изначально автор темы хотел отображать не просто целые блоки, а чтобы еще в каждом блоке было по вертикальной линии, тем самым увеличив точность шкалы
а как у тебя на картинках, то там вообще все просто - надо забить всю шкалу черными блоками, а потом двигать строку в области видеопамяти
она будет тупо уходить за границы видимости, но будет оставаться все 16 символов черными

Отправлено спустя 8 минут 15 секунд:
av писал(а):
30.08.2018{, 15:56}
Я просто спросил есть ли возможность сделать блок с входным значением в (int).
ты можеш прилепить к байтовому входу выход инт от своего блока
просто мой байт он беззнаковый, поэтому твой знаковый инт будет неправильно интерпретирован

т.к. в индикаторе тоже нет отрицательных строк или адресов памяти, то поэтому в моем блоке счет идет от 0 до 80 или до 100, если индикатор 20 символов
поэтому 100 влазит в 1 байт и я не использовал вход типа инт, куда влезет до 65535, т.к. это бесполезный расход озу, а я стараюсь все оптимизировать, т.к. флпрог вност кучу своих переменных и жрет память

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

1602 или 0802 свои символы

#73

Сообщение kalobyte » 30.08.2018{, 17:37}

av,
я имел в виду свой алгоритм работы, чтобы не вычислять подстроку для отрисовки пустого символа для затирания черных блоков
можно просто двигать всю строку черных блоков вправо и тогда слева будет автоматом пустое место
это более эффективный алгоритм, правда он работает только на уровне целых блоков, а если использовать полосочки в одном блоке, то не прокатит

это я говорю, если вдруг гому хватает индикатора как выше приведено - в виде целых блоков

Отправлено спустя 6 часов 23 минуты 59 секунд:
бен, ай нид хелп :smile37:

кажется моя оптимизация проваливается
если массив находится в озу, то все работает
если читается из пзу, то почему-то в озу индикатора он пишется 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 утра сижу :smile250:

специально внизу вывел 8 полных блоков, чтобы на их фоне видеть разницу в верхних блоках и все равно глаз замылился :D
потрачен час на отлов несуществующего глюка
Вложения
lcd_left_-_right_bar.ino
(1.18 КБ) 86 скачиваний
lcd.png
lcd.png (2.3 КБ) 1080 просмотров

kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22.10.2016{, 14:22}
Репутация: 28

1602 или 0802 свои символы

#74

Сообщение kalobyte » 31.08.2018{, 00:48}

av писал(а):
31.08.2018{, 00:22}
Если две то они увеличиваются в одном направлении.
это обман зрения, сравнивай с нижней строкой где края первого символа и 5го - они по разные стороны знакоместа, как и должно быть
av писал(а):
31.08.2018{, 00:22}
Вот только не понятно в первой строке две шкалы или одна ?
это пока только образцы символов, просто выведены для наглядности
не знаю как у других, но я пишу код по кускам и каждый кусок тестирую
вот тут тестируется пока правильное отображение всех кастомных символов, потому что если они неправильно отображаются, то весь последущий код будет неправильным

кстати в программировании под кп есть т.н. юниттесты, когда специальная приблуда вызывает отдельно нужные функции твоего кода, передает туда нужные параметры и получает ответы, потом сравнивает с заранее правильными ответами
если все совпало, то тест пройден

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

MTSnik1
Рядовой
Сообщения: 92
Зарегистрирован: 12.07.2018{, 17:06}
Репутация: 2
Имя: Timofey

1602 или 0802 свои символы

#75

Сообщение MTSnik1 » 29.11.2018{, 09:43}

Привет форумчане. Снова понадобился в моём проекте блок движения палочек, использую блок который любезно разработал
kalobyte "Горизонт.альный индикатор уровня"
вход блока в byte, можно как-то переделать в string? Или конвертировать. Нужно для соединения с выходом меню (переменная 1).
Вложения
P_20181129_112310.jpg
Test.flp
(99.29 КБ) 75 скачиваний

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

1602 или 0802 свои символы

#76

Сообщение RedSky » 29.11.2018{, 11:03}

А почему бы не использовать значение из блока, который выводит уставку из меню?
А блок конвертирования строк работает в обе стороны.

MTSnik1
Рядовой
Сообщения: 92
Зарегистрирован: 12.07.2018{, 17:06}
Репутация: 2
Имя: Timofey

1602 или 0802 свои символы

#77

Сообщение MTSnik1 » 29.11.2018{, 11:47}

Это как? :smile37: можно пример. :smile427:

Aleksandr1
Рядовой
Сообщения: 41
Зарегистрирован: 22.09.2018{, 02:46}
Репутация: 0
Имя: Александр

1602 или 0802 свои символы

#78

Сообщение Aleksandr1 » 24.12.2018{, 21:21}

Уважаемые господа! Как вывести на дисплей символ "градус" в нужной строке в нужном месте? Прочитал все страницы! Ничего не понял. :smile37:

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

1602 или 0802 свои символы

#79

Сообщение AlexCrane » 24.12.2018{, 21:53}

Aleksandr1, Вот так
Вложения
Градусы Цельсия на экран.png
Градусы Цельсия на экран.png (9.25 КБ) 855 просмотров
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Aleksandr1
Рядовой
Сообщения: 41
Зарегистрирован: 22.09.2018{, 02:46}
Репутация: 0
Имя: Александр

1602 или 0802 свои символы

#80

Сообщение Aleksandr1 » 25.12.2018{, 04:35}

AlexCrane, Александр, большое спасибо! Заработало!

Ответить

Вернуться в «Начинающим»