Страница 1 из 4
Замена константы
Добавлено: Пн июн 16, 2014 23:01:08
ATMEL86
Подскажите как менять константу: "Channel #2 = %.2f",resultat, ch_2)
На каждой кнопкой будет заменятся другим числом. Число %.2f на 3 и т.д.
Вот код:
lcd_gotoxy(0,1);
resultat=((5.00*adc_data[1])/1024.00);
sprintf(lcd_buffer,"Channel #2 = %.2f",resultat, ch_2);
lcd_puts(lcd_buffer);
if (PIND.4==0) {
delay_ms(10);
Re: Замена константы
Добавлено: Пн июн 16, 2014 23:06:30
Pink-Pank
через макрос попробуйте организовать
Re: Замена константы
Добавлено: Пн июн 16, 2014 23:39:33
ATMEL86
Так мне же нужно каждой кнопкой своё число ставить %.2f
Re: Замена константы
Добавлено: Вт июн 17, 2014 01:08:25
nirq
Заказчики очень любят в подобном стиле заказывать. В сочетании с вопросом "сколько ЭТО будет стоить". Особенно если спрашивает тётя с гуманитарного склада за полтинник.
Посылаются угадай куда. Не угадал, им просто даётся время подумать ещё лучше.
Вопрос-то какой? К.О.
Re: Замена константы
Добавлено: Вт июн 17, 2014 06:17:03
Kavka
ATMEL86 писал(а):sprintf(lcd_buffer,"Channel #2 = %.2f",resultat, ch_2);
ATMEL86, сейчас сообщу "гениальную" вещь
Форматную строку можно передавать тоже из переменной.
Спойлер
Код: Выделить всё
fmt_2f="Channel #2 = %.2f";
fmt_3f="Channel #2 = %.3f";
if(чего-то) {
sprintf(lcd_buffer,fmt_2f,resultat, ch_2);
}
else
{
sprintf(lcd_buffer,fmt_3f,resultat, ch_2);
}
Re: Замена константы
Добавлено: Вт июн 17, 2014 08:27:27
Pink-Pank
реально гениально! ))) Я, например, не знал.. ))
Re: Замена константы
Добавлено: Вт июн 17, 2014 09:35:34
ARV
среди параметров sprintf две переменных - resultat и ch_2, но только для первой имеется формат вывода в строке формата. судя по всему топикстартеру надо всего-навсего вместо #2 написать #%d и поменять местами переменные после строки формата, чтобы номер канала шел прежде результата.
Re: Замена константы
Добавлено: Вт июн 17, 2014 21:29:25
ATMEL86
Если поменять переменные: resultat и номер канала, то АЦП не преобразовывает и на дисплее 0.00 ...

Re: Замена константы
Добавлено: Вт июн 17, 2014 22:11:38
ARV
я не сказал "просто поменять", я сказал "дополнить строку формата и поменять". хотя не зная, что там вы суете в переменные - я не могу ручаться за правильность совета
Re: Замена константы
Добавлено: Ср июн 18, 2014 19:57:38
ATMEL86
Ошибка!!!
Объявил в глобальные переменные
fmt_2f="Channel #2 = %.2f";
fmt_3f="Channel #2 = %.3f";
и в цикле While (1)
lcd_gotoxy(0,1);
resultat=((5.00*adc_data[1])/1024.00);
sprintf(lcd_buffer,"Channel #2 = %.2f",resultat, ch_2);
lcd_puts(lcd_buffer);
if (PIND.4==0) {
delay_ms(10);
sprintf(lcd_buffer,fmt_2f,resultat, ch_2);
}
else
{
sprintf(lcd_buffer,fmt_3f,resultat, ch_2);
}
пишет ошибка missing'('
Что это может быть?
Re: Замена константы
Добавлено: Ср июн 18, 2014 22:52:55
Аlex
ATMEL86 писал(а):
Объявил в глобальные переменные
fmt_2f="Channel #2 = %.2f";
fmt_3f="Channel #2 = %.3f";
Это не объявление, а присваивание.
Объявление переменных подразумевает указывание типа переменной.
В Вашем случае, нужный тип переменной -
указатель на строку.
Re: Замена константы
Добавлено: Чт июн 19, 2014 19:24:24
ATMEL86
В роде всё правильно написано, почему ошибку выдаёт

???
Re: Замена константы
Добавлено: Чт июн 19, 2014 21:00:58
Danko
Код: Выделить всё
flash unsigned char *fmt_2f="Channel #2 = %.2f";
flash unsigned char *fmt_3f="Channel #2 = %.3f";
у Вас такие строки?
Re: Замена константы
Добавлено: Чт июн 19, 2014 21:16:27
ATMEL86
Danko! Тебе респект и уважуха !!!

Получилась!
Re: Замена константы
Добавлено: Чт июн 19, 2014 21:17:45
ARV
я один это вижу, или остальных просто не колыхает тот факт, что в строке формата ВСЕГО ОДИН символ % (т.е. только одна переменная выводится), а в функцию для вывода передается ДВЕ ПЕРЕМЕННЫХ? может, все-таки, вторая переменная и содержит в себе номер канала?
Re: Замена константы
Добавлено: Чт июн 19, 2014 21:28:16
ATMEL86
Здравствуйте ARV! Поправите пожалуйста если что то не так

Возможно я что то упустил.
Re: Замена константы
Добавлено: Чт июн 19, 2014 21:29:56
Danko
Что такое ch_2 ?
Re: Замена константы
Добавлено: Чт июн 19, 2014 21:32:05
ATMEL86
int ch_2; //-***Переменная хранения данных ADC1
Re: Замена константы
Добавлено: Чт июн 19, 2014 21:37:40
ATMEL86
ДА!... действительно я что то упустил
lcd_gotoxy(0,1);
resultat=((5.00*adc_data[1])/1024.00);
sprintf(lcd_buffer,"Channel #2 = %.2f",resultat, ch_2);
lcd_puts(lcd_buffer);
if (PIND.4==0) {
sprintf(lcd_buffer,fmt_2f,resultat, ch_2);
}
else
{
sprintf(lcd_buffer,fmt_3f,resultat, ch_2);
}
delay_ms(10);
}
При нажатии на кнопку не меняется константа %.2f"

Re: Замена константы
Добавлено: Чт июн 19, 2014 21:42:31
Danko
sprintf(lcd_buffer,fmt_2f,resultat, ch_2); // загрузить в буфер данные
lcd_puts(lcd_buffer); // вывести содержимое буфера на экран
а у Вас что
Код: Выделить всё
if (PIND.4==0) {
sprintf(lcd_buffer,fmt_2f,resultat, ch_2);
}
else
{
sprintf(lcd_buffer,fmt_3f,resultat, ch_2);
}
а вывести на экран где?