Главная › Форумы › Конструкторское бюро › Автоматизация › Первая автоматика от "Счастливчика" – на новый лад…
-
АвторСообщения
-
04.11.2018 в 17:59 #30513
Как-то копаясь в своих загашниках набрал комплект для сборки первоначальной версии автоматики от “Счастливчика”, в дальнейшем “автоматика”. Решил собрать и подарить товарисчу по интересам… Но повторить не получилось. Не смог подключить дисплей. Через адаптер I2C он – работает, а по 4-х проводной схеме нет. Да и в старой автоматике мне реле не надобно, т.к. отбор по пару . А управление сервой мне бы оЧЧень пригодилось. Через потенциометр, и крайне желательно с выводом угла поворота на LCD.
В наличии:
– LCD2004
– arduino nano
– плата расширения arduino nano
– DS18020 – 2 шт
– bmp180 (прекрасно работает с данными в скетчах от 085)
– сервопривод
Самому переделать скетч не получается. Если эта тема кому либо интересна, может быть кто нибудь поможет? Сразу предлагаю себя в тестеры.
PS: фиксация температуры на спиртовой полке нужна (с кнопкой или по фиксированному времени).
04.11.2018 в 18:11 #3051404.11.2018 в 18:13 #3051606.11.2018 в 07:20 #30560С 15 раза удалось подключить LCD и BMP180 на шину I2C. Закоментировал старую библиотеку LCD и подключил другую библиотеку с I2C. Также закоментировал определение контактов на экране и добавил строку с включением подсветки экрана. Для понятия (мне) прокоментировал почти каждую строку в скетче. Тумблер, кнопку, реле не подключал. Вот что получилось на экране. Никак не соображу, как переделать строку с определением температуры кипения в кубе с учётом давления. Кто знает – подскажите. Кому интересно, слегка правленый скетч.
Вложения:
Вы должны войти для просмотра вложений.06.11.2018 в 07:52 #30564В связи с с 4-х строчным дисплеем, опустил данные на строку ниже – получилось. Решил в верхнюю строку вывести атм давление. Для этого в этот блок:
void loop() // блок вычислений (начало)
{
dps.getPressure(&Pressure); // чтение показаний барометра
lcd.setCursor(6, 0); // установка курсора на 1 поз. 1 строки
lcd.print(Pressure)/133.3
lcd.setCursor(0, 1); // установка курсора на 1 поз. 2 строки
lcd.print(“Td:”); // вывод на экран “Td”
lcd.print(78.91 -(780-Pressure/133.3)*0.038); // вывод темп-ры кипения спирта при данном давлении
lcd.setCursor(0, 2); // установка курсора на 1 поз. 3 строкивставил эти 2 строки:
lcd.setCursor(6, 0); // установка курсора на 1 поз. 1 строки
lcd.print(Pressure)/133.3Выскочила ошибка:
D:\My Documents\Arduino\RK_control-1\RK_control-1.ino: In function ‘void loop()’:
RK_control-1:69: error: expected ‘;’ before ‘lcd’
lcd.setCursor(0, 1); // установка курсора на 1 поз. 2 строки
^
exit status 1
expected ‘;’ before ‘lcd’ – у кого нибудь есть мысли?06.11.2018 в 08:01 #30565Т куба от давления.
По ошибке, поставь точку с запятой.
Вложения:
Вы должны войти для просмотра вложений.06.11.2018 в 08:28 #30568По ошибке, поставь точку с запятой.
Поставил, вылезла шестизначная цифра. Сделал так: lcd.print((Pressure)/133.3); – получил 773,6. Вроде нормально. Спасибо.
По табличке – посмотрю обязательно.
06.11.2018 в 12:14 #30573Формулы лучше делать отдельно. Результат вычисления присваивать переменным и “их” выводить на экран, а не вычислять значения при выводе на экран.
06.11.2018 в 12:22 #3057406.11.2018 в 14:35 #30581Почему вместо букв и цифр кракозябры???? Выложил рабочий скетч, а сейчас он уже с кракозябрами???? и все скетчи на основе начальной прошивке с кракозябрами….
Другие скети и примеры из библиотек – всё нормально (
через час – всё нормально, это что??
06.11.2018 в 16:53 #30588Формулы лучше делать отдельно
так:
void setup()
{
float Pat=((Pressure)/133.3); давление в мм
float Td=(78.91 -((780-Pressure)/133.3)*0.038); температура кипения спирта при данном давления из скетча Счастливчика
float Tat=(Thermometer2+((760-Pressure)/133.3)*0.038);
}void loop()
{
lcd.print Pat; или так – lcd.print (Pat);
lcd.print Td; или так – lcd.print (Td);
lcd.print Tat; или так – lcd.print (Tat);
} …..?? или лучше объявить переменные до void setup() ?06.11.2018 в 18:52 #30591Переменные используемые в разных функциях программы объявляют отдельно, т.е. до setup().
В теле функции, объявляются только переменные используемые конкретно в функции где их объявили, в других функциях они будут не видны.Так: lcd.print(Pat); и ни какого пробела перед скобками. Хотя лучше конечно через printf, т.е. с конкретным форматированием количество знаков после запятой, погуглите как.
Но чет я не догоняю, как можно что то писать, в надежде на работоспособность, не зная даже основ Си?
06.11.2018 в 20:33 #30597lcd.print(Pat,1); так будет 1 знак после запятой
lcd.print(Pat,2); так 2 знака
06.11.2018 в 22:24 #30601lcd.print(Pat,1); так будет 1 знак после запятой lcd.print(Pat,2); так 2 знака
Ардуиновский print() использует именно стандартный printf(), так уж лучше сразу к стандартному привыкнуть. А то перейдет человек на нормальную среду и стандартные сишные либы, и будет удивлен отсутствием print().
07.11.2018 в 16:05 #30634перейдет человек
Спасибо Сергей за веру в человека. Но… не перейду. Поздно уже… Вы добрый человек. Мне бы эту темку добить.
Вам также большое спасибо ))).
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.