Страница 3 из 4

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

Добавлено: Пт июн 20, 2014 23:06:34
ATMEL86
Просто функция lcd_puts(lcd_buffer); находится в цикле, и пока я не нажму на кнопку показания не покажутся.

При нажатии на кнопку будет выполнятся эта функция:
sprintf(lcd_buffer,"Channel #2 = %.3f",resultat);
lcd_puts(lcd_buffer); // Выводим в строку

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

Добавлено: Пт июн 20, 2014 23:09:23
Danko
в цикле или в условии?

второй вопрос: а в моем варианте?

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

Добавлено: Пт июн 20, 2014 23:15:50
ATMEL86
В цикле в вашем варианте :

if (PIND.4==0) { // порт на котором подключена кнопка
delay_ms(10); // задержка
if (PIND.4==0) {
PORTD.0=1; //включаем светодиод
} else {
PORTD.0=0;
sprintf(lcd_buffer,"Channel #2 = %.3f",resultat);
lcd_puts(lcd_buffer); // Выводим в строку
}

}


};

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

Добавлено: Пт июн 20, 2014 23:21:10
Danko

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

while (1)
{ 
это цикл

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

if (PIND.4==0) { // порт на котором подключена кнопка
это условие


повторяю вопрос: в цикле или в условии?

второй вопрос:
Вы правильно вставили мой кусок кода?

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

Добавлено: Пт июн 20, 2014 23:29:14
ATMEL86
Пардон!!! Прошу прощения я неправильно записал код :oops:

Вы правы! это условие:

if (PIND.4==0) { // порт на котором подключена кнопка
delay_ms(10); // задержка
if (PIND.4==0) {
PORTD.0=1; //включаем светодиод
} else {
PORTD.0=0;
sprintf(lcd_buffer,"Channel #2 = %.3f",resultat);
lcd_puts(lcd_buffer); // Выводим в строку
}

}


};

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

Добавлено: Пт июн 20, 2014 23:31:57
Danko
if (PIND.4==0) { // порт на котором подключена кнопка
delay_ms(10); // задержка
if (PIND.4==0) {
PORTD.0=1; //включаем светодиод
} else {
PORTD.0=0;
sprintf(lcd_buffer,"Channel #2 = %.3f",resultat);
lcd_puts(lcd_buffer); // Выводим в строку
}

}


};

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

Добавлено: Пт июн 20, 2014 23:41:01
ATMEL86
Работает! :) Вот только мусор выскакивает (восьмёрка ), должно выводить 0.98 а получается - 0.108
Пробовал очистку дисплея в условие ставить- без успешно... То восьмёрка вылазит так же в первой строке :shock:
Что посоветуете?

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

Добавлено: Пт июн 20, 2014 23:43:49
Danko
две строки

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

...
sprintf(lcd_buffer,"Channel #2 = %.2f",resultat); // собираем в кучу (точность 2 знака)
...
sprintf(lcd_buffer,"Channel #2 = %.3f",resultat); // собираем в кучу (точность 3 знака)
...
чем они отличаются?

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

Добавлено: Пт июн 20, 2014 23:53:21
ATMEL86
Разница в единицу!

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

Добавлено: Сб июн 21, 2014 00:00:26
Danko
Ответ:
в длине выводимого результата.

Что касается мусора.
Я не люблю float.

Есть много способов обойти умножения и деления float.

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

Добавлено: Сб июн 21, 2014 00:05:00
ATMEL86
Я пока знаю только float. я недавно начал изучать язык си :dont_know:

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

Добавлено: Сб июн 21, 2014 21:42:27
Jack_A
От сложного к простому ? Ну-ну...
Integer намного проще, компактнее и быстрее обрабатывается. Float при крайней необходимости.

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

Добавлено: Сб июн 21, 2014 22:33:45
ibiza11
Danko сдался видать)))) или силы собирает в кулак. Удивляюсь Вашему, Danko, упорству! Вы молодец!

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

Добавлено: Сб июн 21, 2014 22:56:26
ATMEL86
Посоветуйте альтернативу что бы не применять float

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

Добавлено: Сб июн 21, 2014 23:35:16
Danko
Все гораздо проще.
Сижу паяю очередной проект. На монитор на смотрю.

А теперь о float, а точнее о математике.
Мы умножаем на 5 и делим на 1024. Может можно что то сократить.

Кстати Вашу задачу (формулу) можно вообще решить без умножения и деления. Сложением и вычитанием? - нет.

Кстати умножение и деление на числа степени два можно заменить сдвигом, но эта задача решается и без сдвигов и вообще без математики в МК.

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

Добавлено: Пн июн 23, 2014 21:26:52
ATMEL86
Помогите с кодом! Нужно для sprintf(lcd_buffer,"kanal 2=%.4f",resultat); присвоить единицу.

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

Добавлено: Пн июн 23, 2014 22:05:31
Danko
что такое i
?

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

Добавлено: Пн июн 23, 2014 22:16:57
ATMEL86
то мои па пытки с переменной "i" сейчас у долю.

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

Добавлено: Пн июн 23, 2014 22:30:06
Danko
Вопрос по формуле

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

resultat=((5.00*adc_data[1])/1024.00);
5 - это опорное напряжение или ИОН
1024 - количество ступеней

так вот 5V это источник питания Вы уверены в точности индикации до 4-х знаков после запятой при таком ИОН?

да и еще МЕГА16 имеет абсолютную погрешность ±2 мл.разряда

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

Добавлено: Пн июн 23, 2014 22:36:51
ATMEL86
У меня внешний прецизионный ИОН 5,000 вольт к порту AREF