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

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

Сообщение ATMEL86 »

Просто функция lcd_puts(lcd_buffer); находится в цикле, и пока я не нажму на кнопку показания не покажутся.

При нажатии на кнопку будет выполнятся эта функция:
sprintf(lcd_buffer,"Channel #2 = %.3f",resultat);
lcd_puts(lcd_buffer); // Выводим в строку
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

в цикле или в условии?

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

Сообщение 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); // Выводим в строку
}

}


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

Сообщение Danko »

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

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

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

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


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

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

Сообщение 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); // Выводим в строку
}

}


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

Сообщение 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); // Выводим в строку
}

}


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

Сообщение ATMEL86 »

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

Сообщение Danko »

две строки

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

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

Сообщение ATMEL86 »

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

Сообщение Danko »

Ответ:
в длине выводимого результата.

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

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

Сообщение ATMEL86 »

Я пока знаю только float. я недавно начал изучать язык си :dont_know:
Друг Кота
Аватара пользователя
Сообщения: 6339
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

От сложного к простому ? Ну-ну...
Integer намного проще, компактнее и быстрее обрабатывается. Float при крайней необходимости.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

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

Сообщение ATMEL86 »

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

Сообщение Danko »

Все гораздо проще.
Сижу паяю очередной проект. На монитор на смотрю.

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

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

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

Сообщение ATMEL86 »

Помогите с кодом! Нужно для sprintf(lcd_buffer,"kanal 2=%.4f",resultat); присвоить единицу.
Последний раз редактировалось ATMEL86 Пн июн 23, 2014 22:17:33, всего редактировалось 1 раз.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

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

Сообщение ATMEL86 »

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

Сообщение Danko »

Вопрос по формуле

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

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

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

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

Сообщение ATMEL86 »

У меня внешний прецизионный ИОН 5,000 вольт к порту AREF
Ответить

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