Страница 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
это цикл
Код: Выделить всё
if (PIND.4==0) { // порт на котором подключена кнопка
это условие
повторяю вопрос: в цикле или в условии?
второй вопрос:
Вы правильно вставили мой кусок кода?
Re: Замена константы
Добавлено: Пт июн 20, 2014 23:29:14
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: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
Пробовал очистку дисплея в условие ставить- без успешно... То восьмёрка вылазит так же в первой строке
Что посоветуете?
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. я недавно начал изучать язык си

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
Вопрос по формуле
5 - это опорное напряжение или ИОН
1024 - количество ступеней
так вот 5V это источник питания Вы уверены в точности индикации до 4-х знаков после запятой при таком ИОН?
да и еще МЕГА16 имеет абсолютную погрешность ±2 мл.разряда
Re: Замена константы
Добавлено: Пн июн 23, 2014 22:36:51
ATMEL86
У меня внешний прецизионный ИОН 5,000 вольт к порту AREF