Выравнивание символов по правому краю

Вопросы от новичков
Ответить
MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28 сен 2017, 12:14
Откуда: Tashkent

Выравнивание символов по правому краю

Сообщение MTSnik »

Всем привет. Возможно плохо искал, но не смог найти на форуме как сдвинуть число влево при подсчете на один символ. Накидал схемку, работает. Единицы,десятки,сотни,тысячи. Но в схеме идет привязка к нескольким блокам дисплеев. Возможно ли как-то по-другому собрать схему чтоб был один блок дисплея и сдвиг осуществлялся через вход?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Сдвиг числ влево.

Сообщение edyapd »

Кое-как понял, что вы написали. Сказали бы проще "Как выравнять строку по правому краю на дисплее HD44780?"
Если честно, то я не знаю. Но вашу схему я бы маленько упростил. После поиска длины строки поставил DMS (демультиплексор). И с его помощью выбирал экран.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Сдвиг числ влево.

Сообщение Sancho »

[ref]MTSnik[/ref], Скажите, Эдуард, [ref]edyapd[/ref], правильно уловил Вашу затею?
Если да, тоя где-то выкладывал блок.
Но можно и штатными средствами.

Отправлено спустя 2 минуты 3 секунды:
Нарисуйте хотя-бы от руки на бумаге , сфоткайте и выложите зодумку.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28 сен 2017, 12:14
Откуда: Tashkent

Сдвиг числ влево.

Сообщение MTSnik »

Верно.
То есть идет перебор чисел. Например единицы (числа от 0...9) располагаются на 16столбце, при переходе с10 до 99 идет отображение 15,16 столбце. Сотни 14,15,16. Тысячи 13,14,15,16 и т.д.

Отправлено спустя 3 минуты 13 секунд:
____________5
___________23
__________100
_________3890
Так
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Сдвиг числ влево.

Сообщение Sancho »

[ref]MTSnik[/ref], Понял, сейчас набросаю штатными блоками...

Отправлено спустя 16 минут 55 секунд:
Типа так

Отправлено спустя 2 минуты 54 секунды:
Это для неспешных проектов.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28 сен 2017, 12:14
Откуда: Tashkent

Сдвиг числ влево.

Сообщение MTSnik »

:smile9: проверил , работает. СПАСИБО. :smile9:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28 сен 2017, 12:14
Откуда: Tashkent

Сдвиг числ влево.

Сообщение MTSnik »

По совету Edyapd переделал свой проект, добавил [dms] пришлось еще добавить блок (вычитание). Без него число начинало показ с 19Го столбца.

Отправлено спустя 5 минут 11 секунд:
Как-то так.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Сдвиг числ влево.

Сообщение edyapd »

[ref]MTSnik[/ref], уберите блок вычитания. А на первый дисплей возьмите с Q1, второй с Q2 и т.д.
MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28 сен 2017, 12:14
Откуда: Tashkent

Сдвиг числ влево.

Сообщение MTSnik »

Понятно. Исправил.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Сдвиг числ влево.

Сообщение Sancho »

[ref]MTSnik[/ref], [ref]edyapd[/ref], По моему - неправильна сама идея по сути в том формате, в котором сейчас есть блок для дисплея. Код - просто монстр...
Если у блока дисплея появится вход позиции - тогда да!
Сама плата №2 в посте 5 имеет всего
несколько строк цикла. И всё.

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

//Плата:2
//Наименование:Дополняем пробелами слева
//Комментарии:Значение - сколько хотим получить символов всего
while (_gtv2 != 5) {
_gtv1 = ((String("")) + (_gtv1));
_gtv2 = (_gtv2)+(1);
}
//Плата:3
При желании можно ускорить проект, добавив детектор изменения и обработку переменной при этом.
ИМХО.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Сдвиг числ влево.

Сообщение edyapd »

[ref=#ff8000]Sancho[/ref], я разве спорю? Даже более, на основе вашего решения хотел сделать ПБ. Просто если это будет единичный случай, то не хочется заморачиваться. А если это супер нужная вещь, то стоит просить автора программы, чтобы добавил возможность выбора координат через вход.
[ref]MTSnik[/ref], возможно просто не решился добавлять ещё две дополнительные платы.
Просто вы смотрите на код, а он на визуальное восприятие схемы(моё мнение).
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Сдвиг числ влево.

Сообщение Sancho »

edyapd писал(а): 28 дек 2019, 08:39 хотел сделать ПБ
Не нашёл сначала...
Но там немного по другому.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Сдвиг числ влево.

Сообщение edyapd »

Интересно, а так будет работать? У меня такого дисплея нет, чтобы проверить.
сдвиг3_1.flp
Отправлено спустя 2 минуты 33 секунды:
Если так не заработает, тогда надо добавить мультиплексору ещё один вход. На всех входах константу увеличить на один пробел. А вывод на дисплей сдвинуть на одну позицию влево.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Сдвиг числ влево.

Сообщение Sancho »

edyapd писал(а): 28 дек 2019, 09:52 Интересно, а так будет работать?
Будет. Только нужно корректно вставить константы :)
Или, что-бы не запутаться, вот так:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Сдвиг числ влево.

Сообщение edyapd »

Так я посмотрел, что топикстартер использует только четырёхзначные числа, поэтому и сделал такие константы.
У меня просто сомнения были, что будет на выходе у MUX(а соответственно на входе строкового сумматора), когда на входе будет 4.
Если там будет null, то это как раз то, что надо.
[ref=#ff8000]Sancho[/ref], а ваш проект получается для пятизначных цифр.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Сдвиг числ влево.

Сообщение Sancho »

edyapd писал(а): 28 дек 2019, 10:48 а ваш проект получается для пятизначных цифр.
как-бы да, но это только как пример, как идея не запутаться. но есть ещё отрицательные числа, у нас ведь int, а не uint, -12345, а это шесть символов :)
Под каждый конкретный случай делать необходимое - и будет ок.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28 сен 2017, 12:14
Откуда: Tashkent

Сдвиг числ влево.

Сообщение MTSnik »

Я привел пример для теста, дальше лень было делать. Поэтому только на 4 цифры. Сборка ув. Sancho на 5, после идет счет сначала.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Сдвиг числ влево.

Сообщение Sancho »

Решил, таки, допилить :)
Каждый переделает или сделает дополнительные под свои нужду, при необходимости.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Сдвиг числ влево.

Сообщение edyapd »

Sancho писал(а): 28 дек 2019, 10:53 но это только как пример, как идея не запутаться ....
Под каждый конкретный случай делать необходимое
Но тогда и в блоке дисплея надо было исправить. Вывод должен начинаться с 16-го знакоместа.
А так да, мы любую программу делаем под конкретный случай. :yes:
И тогда пожалуй я бы внёс ещё одно исправление. После блока "Вычитание", я бы поставил переменную. И уже эту переменную подавал на блок MUX. Как мне кажется скорость маленько должна была бы возрасти. Иначе длина строки высчитывается для каждого входа MUX.

[spoiler]
Офтопик
Вот ещё бы попросить автора программы изменить код MUX и DMS. Сделать вместо конструкции if - else if. Скорость выполнения могла бы слегка увеличиться.
[/spoiler]
Ответить

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

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

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