сигментный дисплей вывод числа помогите
- Войдите на сайт для отправки комментариев
Чт, 18/01/2018 - 22:20
я новичек
есть ардуино и 8 разрядный 7 сигментный экран
подлючил - демо выводит
в ручную разобрался как выводит по 1 символу в нужный сигмент
но столкнулся с вроде бы простым, но для меня сложным моментом
как вывести большое число разом???
скажем есть d = 81726354
ну никак не могу понять как передать его экрану чтобы оно отобразилось....
а да, забыл - подключил через "LedControl.h"
А вы что больше любите - математику или литературу?
???
при чем тут это?
или вы знаете готовую библиотеку которая делает то, что мне надо?
Я знаю два способа, которыми вы можете это сделать - математический и филологический.
Хотя, может и библиотеки есть. За ними в гугл.
гугл уже 2й день ничего толком не дает - всё сводится к матрицам 8*8, но они мне не нужны
какой математический вы знаете?
Математический - разбить число на разряды. Последовательным делением на 10^N...10^0, например. При этом вы получаете цифирь, которую можете вывести на соответсвующую позицию индикатора.
UPD Или вот, например:
https://stackoverflow.com/questions/9994742/want-to-convert-integer-to-s...
ищите void getDecStr(..)
Если в цикле не будете делать + '0', то в переменной, которую будете использовать вместо str[len-i] последовательно получите цифири, которые останется закинуть последовательно в позиции индикатора.
это выходит посимвольно
но str[i-1] = '\0'; ведь конец строви вроде? - он выходит мне не нужен
и еще, как быть с точкой? 87654.321 например? тут же точка пропадет....
Про точку речь не шла.
В таком случае вам проще на данный момент пойти филологическим путем: создать массив char, скормить его вместе с числом функции dtostrf(), получить в массиве ASCII-коды цифирей. Потом бежите по нему с начала (в цикле) поячеечно и вычитаете '0' (символ) из значения ячейки, если там не '-' и не '.'. Ну и запихиваете полученное значение тудыть, в свой индикатор. Номер ячейки, положим, равен индексу текущей ячейки.
UPD. В вашей библиотеке, оказывается, можно прямо char совать на вход setChar(), так что даже не надо вычитать. Просто бежать и вызывать эту функцию с текущим символом из ячейки массива.
гугл уже 2й день ничего толком не дает - всё сводится к матрицам 8*8, но они мне не нужны
какой математический вы знаете?
Если надо - завтра могу скинуть готовый проект часы /барометр /термометр + уличный градусник
http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie?page=2...
Если надо - завтра могу скинуть готовый проект часы /барометр /термометр + уличный градусник
http://arduino.ru/forum/programmirovanie/attiny13a-101-primenenie?page=2...
на самом деле, код вывода длинных чисел на сегментный индикатор гуглится на раз в нескольких вариантах - и как часть готовых проектов, и как библиотеки. Автор просто невероятно ленив и на самом деле ничего не искал, а сразу побежал спрашивать...
я Си знаю плохо очень
я тут подумал немного еще, и из знаний бейскика/паскали/js делалбы так
а можно ли просто число перевести с строку както быстро типа
string str = IntToStr(8765.3210)
сделать массив бийтов всех знаков
buty b[] ={В00000000 /*0*/, В00000010 /*1*/,.... В00001001 /*9*/, точка хз как ..}
а дальше просто сопоставление циклом собирать массив данных
buty data[]
for i=0 i==eof(str) {str[i]!="."?data[]=b[str[i]]?data[]=b[точка]}
в итоге я получаю набор бийт, которые просто остается передать драйверу табло....
но вот как это правильно на языке ардуино написать, я чтото не понимаю... функций нет никаких, преобразований тоже.... :(
"язык ардуино" - это С++, всё там есть, просто кому-то лень читать :)
мне гуг выдает кучу примеров, где выводят заранее разложенное по сигментам по байтам число
но у меня нет известного числа - надо вывести от -2^16 до +2^16 с плавующей точкой
//и да, С++ для меня, как учившегося на бейсике с паскалем - не логичен и непонятен, уже лет 5 не дается никак дальше простейших самых действий :(
и дело не в лени - я вначале первые 2 десятка страниц гугла/яндеккса изучаю, и только потом на форуме спрашиваю, если ничего не выходит
С арифметикой у вас как? Если я вам задам вопрос, сколько в числе 1234 тысяч, сотен, десятков, единиц - вы мне ответите? Вот вам и алгоритм.
но вот как это правильно на языке ардуино написать, я чтото не понимаю... функций нет никаких, преобразований тоже.... :(
В #8 я уже вам все расписал (с функциями).