Замена константы

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение 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);
Реклама
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

через макрос попробуйте организовать
Fucking static initialization order fiasco
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение ATMEL86 »

Так мне же нужно каждой кнопкой своё число ставить %.2f
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Сообщение nirq »

Заказчики очень любят в подобном стиле заказывать. В сочетании с вопросом "сколько ЭТО будет стоить". Особенно если спрашивает тётя с гуманитарного склада за полтинник.
Посылаются угадай куда. Не угадал, им просто даётся время подумать ещё лучше.

Вопрос-то какой? К.О.
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Аватара пользователя
Сообщения: 1811
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение 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);
}
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

реально гениально! ))) Я, например, не знал.. ))
Fucking static initialization order fiasco
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

среди параметров sprintf две переменных - resultat и ch_2, но только для первой имеется формат вывода в строке формата. судя по всему топикстартеру надо всего-навсего вместо #2 написать #%d и поменять местами переменные после строки формата, чтобы номер канала шел прежде результата.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение ATMEL86 »

Если поменять переменные: resultat и номер канала, то АЦП не преобразовывает и на дисплее 0.00 ... :o
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

я не сказал "просто поменять", я сказал "дополнить строку формата и поменять". хотя не зная, что там вы суете в переменные - я не могу ручаться за правильность совета
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение 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'('

Что это может быть?
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

ATMEL86 писал(а): Объявил в глобальные переменные
fmt_2f="Channel #2 = %.2f";
fmt_3f="Channel #2 = %.3f";
Это не объявление, а присваивание. Объявление переменных подразумевает указывание типа переменной.
В Вашем случае, нужный тип переменной - указатель на строку.
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение ATMEL86 »

В роде всё правильно написано, почему ошибку выдаёт :dont_know: ???
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

Код: Выделить всё

flash unsigned char *fmt_2f="Channel #2 = %.2f";
flash unsigned char *fmt_3f="Channel #2 = %.3f";
у Вас такие строки?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение ATMEL86 »

Danko! Тебе респект и уважуха !!! :beer: Получилась!
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

я один это вижу, или остальных просто не колыхает тот факт, что в строке формата ВСЕГО ОДИН символ % (т.е. только одна переменная выводится), а в функцию для вывода передается ДВЕ ПЕРЕМЕННЫХ? может, все-таки, вторая переменная и содержит в себе номер канала?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение ATMEL86 »

Здравствуйте ARV! Поправите пожалуйста если что то не так :) Возможно я что то упустил.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

Что такое ch_2 ?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение ATMEL86 »

int ch_2; //-***Переменная хранения данных ADC1
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение 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:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение 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);
}
а вывести на экран где?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Ответить

Вернуться в «AVR»