Ошибка в скетче ?
- Войдите на сайт для отправки комментариев
Сб, 05/01/2019 - 21:57
Здравствуйте!
Пишу скетч для управления теплицей на Mege. На данный момент задумано так: начался дождь - форточка через несколько секунд закрывается, кончился дождь - форточка через несколько секунд открывается.
Выдает ошибку со скобками. Голову сломал - подскажите чайнику пожалуйста!
А может можно было вообще проще сделать? Заранее благодарен!
int rainSensePin = A15; // аналоговый вход 15 для сигнала датчика
int RainCounter = 0; // счётчик продолжительности дождя
int fort_pos = 0; //положение форточек теплицы: 0 - открыты, 1 - закрыты
unsigned long last_time;
void setup() {
Serial.begin(9600);
pinMode(rainSensePin, INPUT);
pinMode(34, OUTPUT); //реле мотора форточек
pinMode(35, OUTPUT);
pinMode(36, OUTPUT);
pinMode(37, OUTPUT);
}
void loop() {
int rainSenseReading = analogRead(rainSensePin);
Serial.println(rainSenseReading);
if (millis() - last_time > 3000) {
if (rainSenseReading < 300) and (fort_pos = 0){ //если начался дождь и форточки открыты
if (RainCounter < 30)
{
RainCounter = RainCounter + 1; //таймер закрытия
}
if (RainCounter = 30)
{
digitalWrite(36, HIGH); //включение реле закрытия форточки
digitalWrite(37, HIGH); //включение реле закрытия форточки
}
}
if (rainSenseReading > 300) and (fort_pos = 1) { //если дождя нет и форточки закрыты
if (RainCounter > 0)
{
RainCounter = RainCounter - 1 //таймер открытия
}
if (RainCounter = 0)
{ digitalWrite(34, HIGH); //включение реле открытия форточки
digitalWrite(35, HIGH); //включение реле открытия форточки
}
}
}
Ошибка в поведении на форуме.
Читать до полного просветвления.
вставьте код по правилам форума
Сорри, исправился
в цикле одной закрывающей нет
Если несложно, покажите где и чего не хватает
Если несложно, покажите где и чего не хватает
поставьте 47 строкой закрывающую скобку, должно откомпилироваться, а правильно или нет с вашими вложенными if решать вам
http://arduino.ru/Reference/Boolean
Спасибо!
У Вас Переменная last_time не меняется, т.к. Вы забыли в конце цикла: last_time = millis();
И вообще данный скетч лучше в виде автомата Пуха.- 4 состояния Форточка открыта,форточка закрывается,форточка закрыта,фоточка открывается. А также автомат датчика - на 2 состояния идет дождь,нет дождя.
Как Вы понимаете строки №№ 27 и 41?
Вам бы основы почитать. Даже если Вам расставят все скобки, количество бреда в коде от этого не уменьшится.
В работе не проверял
Как Вы понимаете строки №№ 27 и 41?
хм... ИМХО, так и понимает, как большинство нормальных людей, учившихся в средней школе:
22. "если RainCounter меньше тридцати"
27. "если RainCounter равно тридцати" и т.д.
Потом человек наступает на эти грабли: "Запись равенства в Си
==
является источником частых ошибок из-за возможности использования присваивания в управляющих конструкциях," - и далеко не он один."Общеизвестным плохим примером является выбор знака равенства для обозначения присваивания, восходящий к языку Fortran в 1957 году и слепо повторяемый до сих пор массой разработчиков языков. Эта плохая идея низвергает вековую традицию использования знака «=» для обозначения сравнения на равенство, предиката, принимающего значения «истина» или «ложь». "
Чуть позже ТС свыкнется с этим синтаксическим извращением. И с многими другими.
Поясните пожалуйста!
Как я понял - 300 это пороговое значение датчика дождя, при значении более 300 - сушь, менее - дождь...
Снимать показания с датчика чаще чем раз в минуту видимо тоже не стоит...
Лично я бы написание скетча с этого и начал
Поясните пожалуйста!
Я про скетч в посте #9. Сравните строки №№ 20 и 34 со строками №№ 27 и 41. Неужели ничего не смущает?
Поясните пожалуйста!
Я про скетч в посте #9. Сравните строки №№ 20 и 34 со строками №№ 27 и 41. Неужели ничего не смущает?
ua6em исправил и отослал потом ТС в посте #10 на учебу. А вот помогло или нет...
Поясните пожалуйста!
Я про скетч в посте #9. Сравните строки №№ 20 и 34 со строками №№ 27 и 41. Неужели ничего не смущает?
В скетчах на языке С мне сложно вникнуть в чужой полёт мысли )))
В первых строках он запускает некоторый счетчик и, закрывает форточку по прошествии некоторого времени, во втором - аналогично, но счетчик в режиме обратного отсчета, извращение конечно...а вот правильный ли алгоритм чтением с листа сказать не могу, увы...
И вообще, я бы писал функциями и их вызывал
ua6em, да Вы не о том. Я про то, в одних местах сравнение "==", а в других "=". Смотрите внимательнее!
Я уж полгода как показал тебе пример, на котором твой класс глючит, а он так и лежит неисправленный!
У меня не глючит, это у вас глючит. Вон прошло сколько времени, а вас глюки не отпускают.
Квон, пожалуйста, я тебя очень прошу, не превращайся в Архата. Ты мой пример запускал? Работает некорректно? Ну, а зачем ты сейчас пургу-то несёшь. Это у Архата с логиком каждый ляп - фича, ты то зачем туда же лезешь? Ну, правда?
У меня не глючит,
Значит, Вы его просто не запускали. Глюк там явный (буквы пропадают), да и ошибка очевидная.
ua6em, да Вы не о том. Я про то, в одних местах сравнение "==", а в других "=". Смотрите внимательнее!
ДЕЦКИЕ АШИПКИ я ему поправил )))
Думал там в логике что-то
у меня этих автоматов только в военном записано было штук семь... )))
Что примечательно:
"=" у нас присвоение,
"==" - равенство,
а неравенство? "!=="? Нет, "!="
В грузинской школе.
Учитель: "Запомните, дети тарелька и вилька пишется без мягкого знака,
а сол и фасол с мягким знаком запомните это дети, ибо понять этого не
возможно!!!"
"=" у нас присвоение,
"==" - равенство,
Скажите спасибо, что язык такой понятный. В некоторых языках, наряду с "=" и "==" ещё и "===" есть :)))
у меня этих автоматов только в военном записано было штук семь... )))
О, я тут заставку для автоматов нашел.))))