Перейти к содержанию
    

Редактирование значения типа float

Есть символьный ЖКИ Winstar 20x2, и пять кнопок (вперед, назад, вверх, вниз и ввод) необходимо редактировать значение типа float с двумя знаками после точки. Значение отображается на экране (при нажатии вперед-назад курсор должен перейти на следующее знакоместо числа, а при нажатии на вверх-вниз должен поменять значение цифры. Может кто проделывал уже такое, подскажите пожалуйста. :1111493779:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в чем проблема? Чтобы все не сбивалось на экране, хранить придется все равно байт на символ (минимум, пол-байта, если памяти совсем нет), изменять их по стрелочкам, а затем пересчитывать в плавучку, умножая каждую цифру на соответствующий множитель (при каждом нажатии стрелочки вверх или вниз).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в чем проблема? Чтобы все не сбивалось на экране, хранить придется все равно байт на символ (минимум, пол-байта, если памяти совсем нет), изменять их по стрелочкам, а затем пересчитывать в плавучку, умножая каждую цифру на соответствующий множитель (при каждом нажатии стрелочки вверх или вниз).

а алгоритм можете привести? свободной памяти много...

Изменено пользователем clpe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а алгоритм можете привести? свободной памяти много...

Я делал. Просто вверх/вниз, увеличение скорости изменения по экспоненте (чем дольше нажатие тем быстрее изменяется, в зависимости от текущего значения - если к примеру текущее 0.01 то следующем будет 0.02 а если текущее 100, то 101). Получилось очень прикольно. Но я на семисегментниках делал. На ЖКИ может не так прикольно получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делал. Просто вверх/вниз, увеличение скорости изменения по экспоненте (чем дольше нажатие тем быстрее изменяется, в зависимости от текущего значения - если к примеру текущее 0.01 то следующем будет 0.02 а если текущее 100, то 101). Получилось очень прикольно. Но я на семисегментниках делал. На ЖКИ может не так прикольно получится.

Ага прикольно когда надо редактировать от 0.00 до 999.99

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага прикольно когда надо редактировать от 0.00 до 999.99

Так ведь оно щелкает все быстрее и быстрее. Очень быстро получается. Чем дольше жмеш, тем быстрее оно переключается. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так ведь оно щелкает все быстрее и быстрее. Очень быстро получается. Чем дольше жмеш, тем быстрее оно переключается. :)

...и тем труднее остановиться когда надо, и начинается: вверх-вниз-вверх-вниз.. :rolleyes:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

вот-вот такое есть у кого нибудь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Преобразуйте число в строку функцией ftoa или snprintf или dtostrf, отредактируйте строку кнопочкми и обратно из строки в число atof.

Какой алгоритм Вам ещё нужен? Вы же программист и творец, вот и творите, экспериментируйте...

Нет ничего более ценного, чем знания и опыт, полученные собственным трудом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

преобразуйте число в строку функцией ftoa или snprintf, отредактируйте строку кнопочкми и обратно из строки в число atof. Какой алгоритм Вам ещё нужен? Вы же программист и творец, вот и творите, экспериментируйте... Нет ничего более ценного, чем знания и опыт, полученные собственным трудом.

В редактировании целого числа проблем никаких нет, а вот при редактировании чисел с запятой :crying: слишком большой код. Одну из позиций точка занимает, нужно перепрыгивать, и начинается путаница.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В редактировании целого числа проблем никаких нет,
А я Вам говорю как раз не о целых числах, а о float.

а вот при редактировании чисел с запятой :crying: слишком большой код. Одну из позиций точка занимает, нужно перепрыгивать, и начинается путаница.
Эка проблема! Если считаете это СЛИШКОМ сложным, то я даже и не знаю что и сказать. Терпение и труд всё перетрут. Главное начать, а там глядишь и конец работы начнёт проглядываться. Устал - пойди погуляй с девушкой, да не с одной!:) От того что долго вылупаешься в монитор и тупишь пользы ноль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А я Вам говорю как раз не о целых числах, а о float.

Эка проблема! Если считаете это СЛИШКОМ сложным, то я даже и не знаю что и сказать.

Просто с float на МК редко сталкивался... :1111493779:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...и тем труднее остановиться когда надо, и начинается: вверх-вниз-вверх-вниз.. :rolleyes:

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

Господи! Сделайте и поиграйтесь. Ваш вариант и есть в общем-то мой. У меня сначала медленно ползет младшая цифра, потом болшее старшая потом еще более старшая итд... В общем скорость нарастает. Вы не читали "машина времени"?

 

Я уже рассказывал о болезненных и муторных ощущениях, которые вызывает путешествие по Времени. Но на этот раз я к тому же плохо сидел в седле, неловко свесившись набок. Не знаю, долго ли я провисел таким образом, не замечая, как моя Машина дрожит и раскачивается. Когда я пришел в себя и снова посмотрел на циферблаты, то был поражен. На одном из циферблатов отмечались дни, на другом тысячи, на третьем миллионы и на четвертом миллиарды дней. Оказалось, что вместо того, чтобы повернуть рычаги назад, я привел их в действие таким образом, что Машина помчалась вперед, и, взглянув на указатели, я увидел, что стрелка, отмечающая тысячи дней, вертелась с быстротой секундной стрелки, — я уносился в Будущее.

По мере движения все вокруг начало принимать какой‑то необыкновенный вид. Дрожащая серая пелена стала темнее; потом снова — хотя я все еще продолжал двигаться с невероятной скоростью — началась мерцающая смена ночи и дня, обычно указывавшая на не очень быстрое движение Машины. Это чередование становилось все медленнее и отчетливее. Сначала я очень удивился. День и ночь уже не так быстро сменяли друг друга. Солнце тоже постепенно замедляло свое движение по небу, пока наконец мне не стало казаться, что сутки тянутся целое столетие. В конце концов над землей повисли сумерки, которые лишь но временам прорывались ярким светом мчавшейся по темному небу кометы. Красная полоса над горизонтом исчезла; солнце больше не закатывалось — оно просто поднималось и опускалось на западе, становясь все более огромным и кровавым. Луна бесследно исчезла. Звезды, медленно описывавшие свои круговые орбиты, превратились из сплошных полосок света в отдельные, ползущие по небу точки. Наконец, незадолго до того, как я остановился, солнце, кровавое и огромное, неподвижно застыло над горизонтом; оно походило на огромный купол, горевший тусклым светом и на мгновения совершенно потухавший. Один раз оно запылало прежним своим ярким огнем, но быстро вновь приобрело угрюмо‑красный цвет. Из того, что солнце перестало всходить и закатываться, я заключил, что периодическое торможение наконец завершилось. Земля перестала вращаться, она была обращена к Солнцу одной стороной, точно так же, как в наше время обращена к Земле Луна. Помня свое предыдущее стремительное падение, я с большой осторожностью принялся замедлять движение Машины. Стрелки стали крутиться все медленней и медленней, пока наконец та, что указывала тысячи дней, не замерла неподвижно, а та, что указывала дни, перестала казаться сплошным кругом. Я еще замедлил движение, и передо мной стали смутно вырисовываться очертания пустынного берега.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В редактировании целого числа проблем никаких нет, а вот при редактировании чисел с запятой :crying: слишком большой код. Одну из позиций точка занимает, нужно перепрыгивать, и начинается путаница.
У нас в приборах редактирование чисел с плавающей точкой реализовано посимвольно. Раскладываете float на символы, выводите на LCD и редактируете символьную строку, следя чтобы десятичная точка была только в одной позиции (заведите семафорчик как признак, что в какой-то позиции уже есть точка). При нажатии кнопки "ввод" преобразуете символьную строку во float, запоминаете значение и затем преобразуете снова в символьную строку для вывода на LCD. При посимвольном редактировании кнопки влево/вправо двигают курсор по символам(знакоместам), а вверх/вниз изменяют значение символа из следующего ряда: "пробел", ".", "0", "1", "2", .... "8", "9".

Упомянутый выше автоповтор последней нажатой клавиши (а также увеличивающийся со временем темп автоповтора) относится с функции клавиатуры, а не собственно функции редактирования. Хотя для столь малого набора символов (11 символов) (авто)увеличение темпа автоповтора ИМХО излишнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто с float на МК редко сталкивался... :1111493779:

А что, на МК флоат какой-то особенный чтоли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...