clpe 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба Есть символьный ЖКИ Winstar 20x2, и пять кнопок (вперед, назад, вверх, вниз и ввод) необходимо редактировать значение типа float с двумя знаками после точки. Значение отображается на экране (при нажатии вперед-назад курсор должен перейти на следующее знакоместо числа, а при нажатии на вверх-вниз должен поменять значение цифры. Может кто проделывал уже такое, подскажите пожалуйста. :1111493779: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 3 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба А в чем проблема? Чтобы все не сбивалось на экране, хранить придется все равно байт на символ (минимум, пол-байта, если памяти совсем нет), изменять их по стрелочкам, а затем пересчитывать в плавучку, умножая каждую цифру на соответствующий множитель (при каждом нажатии стрелочки вверх или вниз). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
clpe 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 (изменено) · Жалоба А в чем проблема? Чтобы все не сбивалось на экране, хранить придется все равно байт на символ (минимум, пол-байта, если памяти совсем нет), изменять их по стрелочкам, а затем пересчитывать в плавучку, умножая каждую цифру на соответствующий множитель (при каждом нажатии стрелочки вверх или вниз). а алгоритм можете привести? свободной памяти много... Изменено 11 февраля, 2009 пользователем clpe Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Methane 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба а алгоритм можете привести? свободной памяти много... Я делал. Просто вверх/вниз, увеличение скорости изменения по экспоненте (чем дольше нажатие тем быстрее изменяется, в зависимости от текущего значения - если к примеру текущее 0.01 то следующем будет 0.02 а если текущее 100, то 101). Получилось очень прикольно. Но я на семисегментниках делал. На ЖКИ может не так прикольно получится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
clpe 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба Я делал. Просто вверх/вниз, увеличение скорости изменения по экспоненте (чем дольше нажатие тем быстрее изменяется, в зависимости от текущего значения - если к примеру текущее 0.01 то следующем будет 0.02 а если текущее 100, то 101). Получилось очень прикольно. Но я на семисегментниках делал. На ЖКИ может не так прикольно получится. Ага прикольно когда надо редактировать от 0.00 до 999.99 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Methane 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба Ага прикольно когда надо редактировать от 0.00 до 999.99 Так ведь оно щелкает все быстрее и быстрее. Очень быстро получается. Чем дольше жмеш, тем быстрее оно переключается. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nl5 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба Так ведь оно щелкает все быстрее и быстрее. Очень быстро получается. Чем дольше жмеш, тем быстрее оно переключается. :) ...и тем труднее остановиться когда надо, и начинается: вверх-вниз-вверх-вниз.. :rolleyes: Иногда делают просто выбор позиции стрелками вправо-влево, и изменение этой позиции стрелками вверх-вниз, с переносом в старшую позицию если переполняется вверх или вниз. По-моему это удобнее, чем переменная скорость, хотя кому как. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
clpe 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба Иногда делают просто выбор позиции стрелками вправо-влево, и изменение этой позиции стрелками вверх-вниз, с переносом в старшую позицию если переполняется вверх или вниз. По-моему это удобнее, чем переменная скорость, хотя кому как. вот-вот такое есть у кого нибудь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба Преобразуйте число в строку функцией ftoa или snprintf или dtostrf, отредактируйте строку кнопочкми и обратно из строки в число atof. Какой алгоритм Вам ещё нужен? Вы же программист и творец, вот и творите, экспериментируйте... Нет ничего более ценного, чем знания и опыт, полученные собственным трудом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
clpe 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба преобразуйте число в строку функцией ftoa или snprintf, отредактируйте строку кнопочкми и обратно из строки в число atof. Какой алгоритм Вам ещё нужен? Вы же программист и творец, вот и творите, экспериментируйте... Нет ничего более ценного, чем знания и опыт, полученные собственным трудом. В редактировании целого числа проблем никаких нет, а вот при редактировании чисел с запятой :crying: слишком большой код. Одну из позиций точка занимает, нужно перепрыгивать, и начинается путаница. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба В редактировании целого числа проблем никаких нет,А я Вам говорю как раз не о целых числах, а о float. а вот при редактировании чисел с запятой :crying: слишком большой код. Одну из позиций точка занимает, нужно перепрыгивать, и начинается путаница.Эка проблема! Если считаете это СЛИШКОМ сложным, то я даже и не знаю что и сказать. Терпение и труд всё перетрут. Главное начать, а там глядишь и конец работы начнёт проглядываться. Устал - пойди погуляй с девушкой, да не с одной!:) От того что долго вылупаешься в монитор и тупишь пользы ноль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
clpe 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба А я Вам говорю как раз не о целых числах, а о float. Эка проблема! Если считаете это СЛИШКОМ сложным, то я даже и не знаю что и сказать. Просто с float на МК редко сталкивался... :1111493779: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Methane 0 11 февраля, 2009 Опубликовано 11 февраля, 2009 · Жалоба ...и тем труднее остановиться когда надо, и начинается: вверх-вниз-вверх-вниз.. :rolleyes: Иногда делают просто выбор позиции стрелками вправо-влево, и изменение этой позиции стрелками вверх-вниз, с переносом в старшую позицию если переполняется вверх или вниз. По-моему это удобнее, чем переменная скорость, хотя кому как. Господи! Сделайте и поиграйтесь. Ваш вариант и есть в общем-то мой. У меня сначала медленно ползет младшая цифра, потом болшее старшая потом еще более старшая итд... В общем скорость нарастает. Вы не читали "машина времени"? Я уже рассказывал о болезненных и муторных ощущениях, которые вызывает путешествие по Времени. Но на этот раз я к тому же плохо сидел в седле, неловко свесившись набок. Не знаю, долго ли я провисел таким образом, не замечая, как моя Машина дрожит и раскачивается. Когда я пришел в себя и снова посмотрел на циферблаты, то был поражен. На одном из циферблатов отмечались дни, на другом тысячи, на третьем миллионы и на четвертом миллиарды дней. Оказалось, что вместо того, чтобы повернуть рычаги назад, я привел их в действие таким образом, что Машина помчалась вперед, и, взглянув на указатели, я увидел, что стрелка, отмечающая тысячи дней, вертелась с быстротой секундной стрелки, — я уносился в Будущее. По мере движения все вокруг начало принимать какой‑то необыкновенный вид. Дрожащая серая пелена стала темнее; потом снова — хотя я все еще продолжал двигаться с невероятной скоростью — началась мерцающая смена ночи и дня, обычно указывавшая на не очень быстрое движение Машины. Это чередование становилось все медленнее и отчетливее. Сначала я очень удивился. День и ночь уже не так быстро сменяли друг друга. Солнце тоже постепенно замедляло свое движение по небу, пока наконец мне не стало казаться, что сутки тянутся целое столетие. В конце концов над землей повисли сумерки, которые лишь но временам прорывались ярким светом мчавшейся по темному небу кометы. Красная полоса над горизонтом исчезла; солнце больше не закатывалось — оно просто поднималось и опускалось на западе, становясь все более огромным и кровавым. Луна бесследно исчезла. Звезды, медленно описывавшие свои круговые орбиты, превратились из сплошных полосок света в отдельные, ползущие по небу точки. Наконец, незадолго до того, как я остановился, солнце, кровавое и огромное, неподвижно застыло над горизонтом; оно походило на огромный купол, горевший тусклым светом и на мгновения совершенно потухавший. Один раз оно запылало прежним своим ярким огнем, но быстро вновь приобрело угрюмо‑красный цвет. Из того, что солнце перестало всходить и закатываться, я заключил, что периодическое торможение наконец завершилось. Земля перестала вращаться, она была обращена к Солнцу одной стороной, точно так же, как в наше время обращена к Земле Луна. Помня свое предыдущее стремительное падение, я с большой осторожностью принялся замедлять движение Машины. Стрелки стали крутиться все медленней и медленней, пока наконец та, что указывала тысячи дней, не замерла неподвижно, а та, что указывала дни, перестала казаться сплошным кругом. Я еще замедлил движение, и передо мной стали смутно вырисовываться очертания пустынного берега. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 12 февраля, 2009 Опубликовано 12 февраля, 2009 · Жалоба В редактировании целого числа проблем никаких нет, а вот при редактировании чисел с запятой :crying: слишком большой код. Одну из позиций точка занимает, нужно перепрыгивать, и начинается путаница.У нас в приборах редактирование чисел с плавающей точкой реализовано посимвольно. Раскладываете float на символы, выводите на LCD и редактируете символьную строку, следя чтобы десятичная точка была только в одной позиции (заведите семафорчик как признак, что в какой-то позиции уже есть точка). При нажатии кнопки "ввод" преобразуете символьную строку во float, запоминаете значение и затем преобразуете снова в символьную строку для вывода на LCD. При посимвольном редактировании кнопки влево/вправо двигают курсор по символам(знакоместам), а вверх/вниз изменяют значение символа из следующего ряда: "пробел", ".", "0", "1", "2", .... "8", "9". Упомянутый выше автоповтор последней нажатой клавиши (а также увеличивающийся со временем темп автоповтора) относится с функции клавиатуры, а не собственно функции редактирования. Хотя для столь малого набора символов (11 символов) (авто)увеличение темпа автоповтора ИМХО излишнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 17 12 февраля, 2009 Опубликовано 12 февраля, 2009 · Жалоба Просто с float на МК редко сталкивался... :1111493779: А что, на МК флоат какой-то особенный чтоли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться