Страница 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 ... :o

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
В роде всё правильно написано, почему ошибку выдаёт :dont_know: ???

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! Тебе респект и уважуха !!! :beer: Получилась!

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" :dont_know:

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);
}
а вывести на экран где?