7 сегментный дисплей 39121. как вывести точку?
- Войдите на сайт для отправки комментариев
Пт, 14/04/2017 - 18:16
Ребята, помогите вывести точку на четырех значном семи сегментном дисплее. числа библиотека выводит а точку опускает.
ссылка на дисплей
//цифры
#include "Four7Seg74hc595.h"
esl::Four7Seg74hc595 display(6 ,5,4 );
//6 SCLK (1 число)
//5 RCLK (2 число)
//4 DIO (3 число)
char sbuf[5];
unsigned long t1=0;
unsigned long cnt;
float f_old;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
float f;
int a;
a=analogRead(A0);
f=a;
f=(f*1.256)/268;
if (f_old==f) {cnt++;}
if (cnt==300) {cnt=0; t1=1;}
f_old=f;
if (f<=2) {
if (t1==1) {
t1=0;
f=f*100;
a=int(f);
sprintf( sbuf, "%04u", a);
//String stringVar=String(f);
//char charVar[sizeof(stringVar)];
//stringVar.toCharArray(charVar, sizeof(charVar));
//Serial.print(charVar);
//Serial.print(" ");
Serial.print(f);
Serial.print("v ");
Serial.println(a);
display.setDigits( sbuf, 4 );
}
}
display.update();
//показываем на цифровом дисплее
}
А в каком месте кода Вы пытаетесь точку вывести?
http://www.catincoat.ru/2016/03/arduino-atmega328-4-bit-led-digital.html
Я этим пользовался.
ЕвгенийП - в закоментированном коде пытался через charVar. мерию вольтаж батарейки 1.27 хотел бы вывести на дисплей показания с точкой.
Sanyaba, пробывал я её ранее. в этих библиотеках управление идет именно 7 сегментными диодами а как поставить точку именно - ну никак не пойму.
по возможности подскажите как нужно правильно
ЕвгенийП - в закоментированном коде пытался через charVar. мерию вольтаж батарейки 1.27 хотел бы вывести на дисплей показания с точкой.
Вы не поняли мой вопрос. В каком именно месте кода (номер строки) Вы пытаетесь вывести тточку и у Вас не получается?
display.setDigits( charVar, 4 );
я думал что 5й пост весьма понятен? попытка потролить и поглумиться?
я думал что 5й пост весьма понятен? попытка потролить и поглумиться?
А Вы не заметили, что мой вопрос был в первом, сильно раньше пятого?
Попытка потроллить и поглумиться?
А в пятом посте написано что-то невразумительное. Совсем невразумительное.
ЕвгенийП - вот не надо сейчас писать эти доводы в последнем посте. Так пишут только школьники. Сохраните достоинство - уйдите с темы. был вопрос на который у меня нет ответа, а имея верный ответ - форум был бы лишним.
вот не надо сейчас писать эти доводы.
С Вашего позволнеия (или без такового) я сам буду решать что мне надо, что нет.
Я написал, что код даже близео не похож на разумный (с трудом удержался от слова "бред"). Если бы в ответ от Вас послледовал нормальный вопрос типа "а что в нём не так?", был бы нормальный ответ. Но вместо нормально вопроса последовало требование
уйдите с темы
Я то могу уйти. Только проблема Ваша никуда не уйдёт, с Вами и останется.
а имея верный ответ - форум был бы лишним.
Выт правда считаете, что форум создан исключительно для того, чтобы давать Вам правильные ответы на детсадовские вопросы?
Боюсь, что я Вас разочарую, но форум - он для общения по интересам. Здесь общаются люди, у которых общие интересы и которым интересно друг с другом. Лично Вам никто здесь ничего не должен. Поэтому либо Вы вежливо задаёте вопросы, и, возможно, получаете ответы, либо, требуете. чтобы люди "ушли с темы" и остаётесь со своими проблемами наедине.
Удачи!
А Ваша библиотека вообще точку умеет выводить? Вы проверяли? Есть рабочий пример выводящий точку? Скорее всего нет, иначе вряд ли бы возник этот вопрос. Либо разбирайтесь в коде этой библиотеки, либо найдите другую.
Писал, пока ещё не видел последних сообщений. Как-то не вызывают желания общаться.
kalapanga- мне знаний не хватило разобраться в библиотеке. в примере небыло. некоторые библиотеки аналогично не содержали примера. уже подумывал купить иной дислпей что бы напрямую управлять сегментами
спасибо
Вы проверяли?
я запретил.
*пошто бурята русофобите, словяне?
Sanyaba - по вашей ссылке тоже пробывал. но в примере использование точки не было.
по возможности подскажите как нужно правильно
Правильно - пристрелить кобылу, которая это набредила, чтоб не мучилапсь. Советы по лечению - только выкачивание бабла ветеринарами.
kalapanga - скорее всего умеет. есть упоминание в коментариях про dot
void Four7Seg74hc595::update() { uint8_t value, max_index = num_digits-1; for ( uint8_t i=0; i < num_digits; i++ ) { value = raw_digits[ max_index-i ] ^ invert_mask; shiftOut( dio_pin, sclk_pin, MSBFIRST, value ); // seven segments + dot (common-anode type) shiftOut( dio_pin, sclk_pin, MSBFIRST, (1 << i) ); // select digit digitalWrite( rclk_pin, HIGH ); digitalWrite( rclk_pin, LOW ); delayMicroseconds( delay_usec ); } shiftOut( dio_pin, sclk_pin, MSBFIRST, 0xff ); // seven segments + dot (common-anode type) shiftOut( dio_pin, sclk_pin, MSBFIRST, 0 ); // select digit digitalWrite( rclk_pin, HIGH ); digitalWrite( rclk_pin, LOW ); }Ворота и почему так не корректно?
на дисплее вижу 1 (пустой сегмент)26 . функция ожидает char , вместо пустого сегмента в char точка.
kalapanga -вы правы . все таки там нет это функции в библиотеке. посмотрел по внимательней... спасибо
P.S. по поводу сообщений - он хотел что бы все это так и закончилось изначально. а если слова мои *по возможности подскажите как нужно правильно* - для него звучат как требования и пытается учить меня вежлости - это бред сивой кобылы .
Ворота и почему так не корректно?
Учитывая куда ты посылаешь тех, кто знает больше тебя, я даже боюсь тебе отвечать.
Попробуй создать строки разной длины и напечатать от них sizeof(str). Посмотри, что получится, подумай (если есть чем).
ну, не знаю - заюзать библиотеку для 7-ми сегментного индикатора, пытаться зажечь 8-й сегмент по ходу треда размазывая розовые сопли.
Клапауций 112 -я осознал. спасибо. kalapanga подсказал верное направление.
Ворота - корректней было воспользоваться length()? я брал пример с др. сайта...
Не знаю, что там "корректней". Ты напечатал, как я говорил? Судя по всему - нет. Значит. корректней пристрелить кобылу, как я и советовал, поскольку работать ты явно не желаешь.
http://www.catincoat.ru/2016/03/arduino-atmega328-4-bit-led-digital.html
Я этим пользовался.
Функция disp.dispFloat(-1.32, 2); выводит число с точкой (и с минусом если нужно).
Второй параметр - число знаков после запятой.