Вопрос по лог.операторам || почему не работает ИЛИ ?
- Войдите на сайт для отправки комментариев
Чт, 08/02/2018 - 12:58
Здравствуйте братья!
Суть: диод должен включатся по кнопке, а отключатся по кнопки ИЛИ по данным с датчика. В отдельности все осуществимо, соблюсти ИЛИ не получается...ткните мордой где окарался, пожалуйста!
#include <Wire.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include <Adafruit_BMP280.h> int flag=0; int glaf=0; int ledPin = 8; Adafruit_BMP280 bme; // I2C void setup() { pinMode(8, OUTPUT); Serial.begin(9600); Serial.println(F("BMP280 test")); if (!bme.begin()) { Serial.println("Could not find a valid BMP280 sensor, check wiring!"); while (1); } } void loop() { if(digitalRead(9)==HIGH&&flag==0) { digitalWrite(ledPin,!digitalRead(ledPin)); flag=1; } if((bme.readAltitude(1013.25)>54)&&(flag==1)||((digitalRead(9)==LOW)&&(flag==1))) { flag=0; } Serial.print("Approx altitude = "); Serial.print(bme.readAltitude(1013.25)); Serial.println(); }
PS: А как указать условия, что данные с датчика постоянны? Типо: if(bme.readAltitude()==const) ? =)
PPS: Спасибо за отклик! Если оскорбил Ваш взор своим кодом - извиняйте, чукча только учится.
а кнопку надо еще раз нажать, или отпустить?
Здравствуйте братья!
Суть: диод должен включатся по кнопке, а отключатся по кнопки ИЛИ по данным с датчика. В отдельности все осуществимо, соблюсти ИЛИ не получается...ткните мордой где
ну как где - посмотрите свой код У вас диод включается и выключается только по кнопке. А по датчику вы НЕ ВЫКЛЮЧАЕТЕ диод, а только меняете flag на ноль. Этого недостаточно.
И не надо гнать на "ИЛИ" - оно работает :)
нажать.
не отуплю, никак. можно пример?
не отуплю, никак. можно пример?
пример чего? Скажите - вы этот код сами писали или в инете нашли?
Если вот так:
то по датчику отключает...меня бы тыкнуть всетаки) прям носом :D
Скрещенный из двух прмиеров. Пример отключения диода с оператором ||
У Вас переключение состояния диода в строке 30. Происходит когда флаг = 0 и нажата кнопка. От датчика может измениться только флаг, но чтобы погас/загорелся диод все равно надо нажать кнопку.
Если вот так:
то по датчику отключает.
так чего вас не устраивает?
Вы обьясните толком - как должно работать. И что не работает.
Если вот так:
то по датчику отключает...
1.Нажимаем кнопку(сенсор емкостный) загорается диод. Нажимаем кнопку диод гаснет.
или(и то и другое должно быть, т.е диод отключается 2-мя способами.)
2.Нажимаем кнопку(сенсор емкостный) загорается диод. Поднимаемся выше 54м. диод гаснет.
1.Нажимаем кнопку(сенсор емкостный) загорается диод. Нажимаем кнопку диод гаснет.
или(и то и другое должно быть, т.е диод отключается 2-мя способами.)
2.Нажимаем кнопку(сенсор емкостный) загорается диод. Поднимаемся выше 54м. диод гаснет.
Милое дитя (baby) - ты мысли вообще не умеешь выражать? В тексте выше - к чему относится "или"?
Открою тебе секрет - потому у тебя в программе ИЛИ и не работает. что ты даже по-русски выразить нужный алгоритм не можешь.
2.Нажимаем кнопку(сенсор емкостный) загорается диод. Поднимаемся выше 54м. диод гаснет.
у Вас пункт 2 работать не будет, так в условии смены состояния диода жирным по толстому прописано условие нажатия кнопки:
if
(digitalRead(9)==HIGH&&flag==0)
28
29
{
30
digitalWrite(ledPin,!digitalRead(ledPin));
31
flag=1;
32
}
Может я не русский. Кроме как оскорблений ничего не сказали. Нехороший Вы человек - редиска.
Предполагается, что нажатая кнопка это HIGH на входе. Можно и в 13 строке датчик проверять. Типа светодиод выключен, нажимаете кнопку, а по показаниям датчика включаться и не надо.
Это строка из примера и я её не понял толком. Вроде как она(строка) обеспечивает 1 действие с каждым нажатием. Как добавить условие на отключение датчиком?
Может я не русский. Кроме как оскорблений ничего не сказали. Нехороший Вы человек - редиска.
Я б сказал это взгляд с другой стороны. Работает спасибо! Правда "дребезжание" (вроде это так называется) высокое-диод через раз включается, при удерживании кнопки диод мерцает...
Да не только на форуме...в программирование..химик по фото в паспорте)
Вы изначально неправильно поставили вопрос:
почему не работает ИЛИ ?
Нипочему - она работает! ИЛИ работает! Только вот как именно она работает Вы
не понял толком
Судя по Вашей дискуссии с уважаемыми людьми, и не поймёте, пока не измените восприятие мира.
Вам необходимо понять, что правильный вопрос у Вас должен быть не "почему не работает ИЛИ?" а "почему не работают мои мозги?". Вот когда до Вас это дойдёт, когда Вы поставите такой вопрос и ответите на него, тогда ИЛИ (и много чего другого) у Вас волшебным образом заработает.
Удачи!
И Вам здоровья, добрый молодец.
Спасибо еще раз, добавил delay. Стало корректнее, но все равно не идеально. Есть какие то еще способы хитрые, чтоб от "дребезга" избавиться?
Есть какие то еще способы хитрые, чтоб от "дребезга" избавиться?
Очень подробное и грамотное руководство по борьбе с дребезгом.
А обиделись Вы на меня зря. Обижайтесь или нет, а пока не сделаете о чём я говорил, всё равно ничего не заработает.
Думаете человек без *желания думать* способен читать на иностранном языке? Человек ведь даже родной язык плохо знает. Врядли Вам подобные смогут обидеть мне подобных. Спасибо за руководство.
Baby - ВАЖНО! - когда отвечаете на чье-то сообщение, либо цитируйте 1-2 строчки. либо просто пишите ник адресата - иначе непонятно, какой ответ на какой вопрос.
Теперь по делу - без всякого глума - в программировании очень важно уметь четко и конкретно описать алгоритм работы программы в виде ясных и однозначных последовательных пунктов. У вас с этим полный швах. Без этого вы никогда не будете писать хорошие программы.
Напрягитесь и постарайтесь написать еще раз - как должно работать и как сейчас работает, в чем ошибка (если вы ее еще не исправили по предыдущим советам).
Удачи.
И не расстраивайтесь - химик это не приговор, химики тоже могут программировать - по себе знаю, Менделавку заканчивал :)
1.Нажимаем кнопку(сенсор емкостный) загорается диод. Нажимаем кнопку диод гаснет.
или(и то и другое должно быть, т.е диод отключается 2-мя способами.)
2.Нажимаем кнопку(сенсор емкостный) загорается диод. Поднимаемся выше 54м. диод гаснет.
Baby - ВАЖНО! - когда отвечаете на чье-то сообщение, либо цитируйте 1-2 строчки. либо просто пишите ник адресата - иначе непонятно, какой ответ на какой вопрос.
Теперь по делу - без всякого глума - в программировании очень важно уметь четко и конкретно описать алгоритм работы программы в виде ясных и однозначных последовательных пунктов. У вас с этим полный швах. Без этого вы никогда не будете писать хорошие программы.
Напрягитесь и постарайтесь написать еще раз - как должно работать и как сейчас работает, в чем ошибка (если вы ее еще не исправили по предыдущим советам).
Удачи.
И не расстраивайтесь - химик это не приговор, химики тоже могут программировать - по себе знаю, Менделавку заканчивал :)
Спасибо, буду знать. Старался ясно и кратко описать.
Еще раз: При нажатии сенсора загорается диод, а тухнет при изменение давления(высоты) или при нажатии кнопки. Я не знаю как еще Вам сказать....(И́ли — слово русского языка, союз, выражающий альтернативу.) Т.Е. в диод отключается разными, альтернативными способами...
И не подумаю.
1.Нажимаем кнопку(сенсор емкостный) загорается диод. Нажимаем кнопку диод гаснет.
или(и то и другое должно быть, т.е диод отключается 2-мя способами.)
2.Нажимаем кнопку(сенсор емкостный) загорается диод. Поднимаемся выше 54м. диод гаснет.
Спасибо, уже решен вопрос выше.
Спасибо еще раз, добавил delay. Стало корректнее, но все равно не идеально. Есть какие то еще способы хитрые, чтоб от "дребезга" избавиться?
А почитать форум, минимум темы, прикрепленные в начале раздела, не судьба? Ну конечно, с 2011 года это ни разу ни кем не обсуждалось!