Скетч для нескольких датчиков

kaktus770
Offline
Зарегистрирован: 04.05.2018

Здравствуйте, уважаемые! Решил сделать систему пожарной сигнализации для 3д принтера. Планирую использовать два MQ-2 и два датчика пламени (по два в подвале и над столом). Ардуино Нано. На выходе блок-реле и пищалка. Аналоговые навороты для датчиков не нужны - цифровой выход думаю пользовать. Подскажите плиз, или ткните носом где почитать о подключениии нескольких датчиков на разные входы? Конкретно скетч интересует. Для одного датчика стописят уроков в наличии, для нескольких уже сутки рою найти не могу. Видимо, вопрос такой тупой, что не заслуживает урока :) Заранее спасибо :)

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

- Cсылки на датчики.

- давай сюда скетс для одного датчика который ты проверил на своем нано

kaktus770
Offline
Зарегистрирован: 04.05.2018

/*
   Скетч для управления реле ардуино с помощью PIR датчика
 
   relay_pin содержит номер пина, к которому подключено реле, которым мы будем управлять
   smoke_pin содержит номер пина с подключенным PIR-сенсором
 
   В функции setup устанавливаем начальное положение реле (закрытое)
   В теле функции loop проверяем наличия высокого уровня сигнала от датчика с помощью функции digitalRead
 
*/
 
 
int relay_pin = 9; // Определяем пин, используемый для подключения реле1
int smoke_pin = 5; // Определяем пин, используемый для подключения smoke-датчика
int flame_pin = 3; // Определяем пин, используемый для подключения flame-датчика

 
// В этой функции определяем первоначальные установки
void setup()
{
  Serial.begin(9600);
  pinMode(relay_pin, OUTPUT); // Объявляем пин реле как выход
  digitalWrite(relay_pin, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
 
  int smokeVal = digitalRead(smoke_pin); // Считваем значение с датчика движения в отдельную переменную
    if (smokeVal == HIGH){
    digitalWrite(relay_pin, LOW); // Включаем реле - посылаем низкий уровень сигнала
  } else {
    digitalWrite(relay_pin, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  }
 
  delay(1000); // Проверяем значения один раз в секунду.
}

Скетч работает с одним датчиком. Тямы не хватает несколько прицепить. Выхода по хорошему два - на реле и пищалку.  Если бы я почаще с программированием сталкивался, то постарался бы поглубже вникнуть в тему. Но ради одного девайса в год - тяжеловато для мозга:) А так магарычовое дело - на пивас хотя-бы:)

Датчик дыма: https://ru.aliexpress.com/item/Free-Shipping-MQ-5-Methane-Natural-Gas-Sensor-Shield-Liquefied-Electronic-Detector-Module-New/32548466566.html?spm=a2g0s.9042311.0.0.274233ed4z2rCa

Огня: https://ru.aliexpress.com/item/Free-Shipping-IR-Infrared-4-Wire-Flame-Detection-Sensor-Module-IR-Flame-Sensor-Module-Detector-Smartsense/32805832178.html?spm=a2g0s.9042311.0.0.274233ed4z2rCa

Expansion board: https://ru.aliexpress.com/item/Free-shipping-NANO-and-UNO-multi-purpose-expansion-board-for-arduino-nano-3-0/32556475970.html?spm=a2g0v.10010108.1000016/B.1.3e5c355ecsdvar&isOrigTitle=true

Реле: https://ru.aliexpress.com/item/Free-Shipping-1PCS-5V-2-Channel-Relay-Module-Shield-for-Arduin-ARM-PIC-AVR-DSP-Electronic/32523959492.html?spm=a2g0s.9042311.0.0.274233ed4z2rCa

Пищалка: https://ru.aliexpress.com/item/Best-Promotion-95DB-Alarm-For-Arduino-High-decibel-DC-3-24V-12V-Electronic-Buzzer-Continuous-Beep/32666185084.html?spm=a2g0s.9042311.0.0.274233edpXd8om

Может какие мысли будут по обустройству системы? Планирую, чтобы в случае срабатывания одного из датчиков реле разрывало цепь управления питанием принтера, а пищалка ревела как сумасшедшая. За станком наблюдает веб камера:https://ru.aliexpress.com/item/Xiaomi-CCTV-Mijia-Xiaofang-110-F2-0-8X1080-P/32884030076.html?spm=a2g0s.9042311.0.0.274233ed29djZa  в ней есть функция на рев пожарной сигнализации отправлять уведомления.

Есть у меня еще Малинка - Октопринт на ней работает -  рассматривал вариант ее задействовать, но там 3,3В, да и Линух для меня еще покруче будет:)

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

знаете delay(), а millis() не слышали.  Это поможет в развитиии(или регресе) http://arduino.ru/forum/programmirovanie/klassy-arduino-po-qwone-dlya-chainikov

kaktus770
Offline
Зарегистрирован: 04.05.2018

qwone пишет:

знаете delay(), а millis() не слышали.  Это поможет в развитиии(или регресе) http://arduino.ru/forum/programmirovanie/klassy-arduino-po-qwone-dlya-chainikov

 Мои познания в программировании ограничиваются копипастным уровнем. Тема эта конечно интересная, но у меня нет ни таланта ни знаний ни  времени чтобы погрузиться в этот мир. Я второй раз обращаюсь за помощью по теме ардуино, и каждый раз меня отправляют покурить пару томов специальной литературы. Это ж как два пальца об асфальт - что может быть проще циклов, условных операторов и функций? Да в этом даже ребенок разобраться может! 

Одно дело, когда ребята собираются зарабатывать этим на кусок хлеба с маслом, и с помощью уважаемой публики пытаются сделать диплом или курсовую, и как мне кажется другое, когда раз в пятилетку хочется эротично систему сделать для личного пользования и свободного распространения желающим. Я бы мог все это дело на релюшках собрать, но это как-то не эротично:)

Не хотел никого обидеть:)

sadman41
Offline
Зарегистрирован: 19.10.2016

Сделайте и распространяйте... В чем проблема-то? Или надо квону сделать всё за вас и распространять? Выражайтесь прямо, чего уж жеманничать.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Для подключения второго датчика заменяем строки 28,29 на

  int smokeVal = digitalRead(smoke_pin); 
  int flameVal = digitalRead(flame_pin);
    if (smokeVal == HIGH || flameVal == HIGH) {

Домашнее задание - как подключить 4 датчика?

sadman41
Offline
Зарегистрирован: 19.10.2016

Сделайте и распространяйте... В чем проблема-то? Или надо квону сделать всё за вас и распространять? Выражайтесь прямо, чего уж жеманничать.

kaktus770
Offline
Зарегистрирован: 04.05.2018

Не работает...

/*
   Скетч для управления реле ардуино с помощью PIR датчика
 
   relay_pin содержит номер пина, к которому подключено реле, которым мы будем управлять
   smoke_pin содержит номер пина с подключенным PIR-сенсором
 
   В функции setup устанавливаем начальное положение реле (закрытое)
   В теле функции loop проверяем наличия высокого уровня сигнала от датчика с помощью функции digitalRead
 
*/
 
 
int relay_pin = 9; // Определяем пин, используемый для подключения реле1
int smoke_pin = 5; // Определяем пин, используемый для подключения smoke-датчика
int flame_pin = 3; // Определяем пин, используемый для подключения flame-датчика

 
// В этой функции определяем первоначальные установки
void setup()
{
  Serial.begin(9600);
  pinMode(relay_pin, OUTPUT); // Объявляем пин реле как выход
  digitalWrite(relay_pin, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
 
  int smokeVal = digitalRead(smoke_pin);
  int flameVal = digitalRead(flame_pin);
  if (smokeVal == HIGH || flameVal == HIGH) {
    digitalWrite(relay_pin, LOW); // Включаем реле - посылаем низкий уровень сигнала
  } else {
    digitalWrite(relay_pin, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  }
 
  delay(1000); // Проверяем значения один раз в секунду.
}

 

kaktus770
Offline
Зарегистрирован: 04.05.2018
/*
   Скетч для управления реле ардуино с помощью PIR датчика
 
   relay_pin содержит номер пина, к которому подключено реле, которым мы будем управлять
   smoke_pin содержит номер пина с подключенным PIR-сенсором
 
   В функции setup устанавливаем начальное положение реле (закрытое)
   В теле функции loop проверяем наличия высокого уровня сигнала от датчика с помощью функции digitalRead
 
*/
 
 
int relay_pin = 8; // Определяем пин, используемый для подключения реле1
int zrelay_pin = 9; // Определяем пин, используемый для подключения пищалки
int smoke_pin = 2; // Определяем пин, используемый для подключения smoke-датчика1
int ssmoke_pin = 3; // Определяем пин, используемый для подключения smoke-датчика2
int flame_pin = 4; // Определяем пин, используемый для подключения flame-датчика1
int fflame_pin = 5; // Определяем пин, используемый для подключения flame-датчика2

 
// В этой функции определяем первоначальные установки
void setup()
{
  Serial.begin(9600);
  pinMode(relay_pin, OUTPUT); // Объявляем пин реле как выход
  digitalWrite(relay_pin, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
 
  int smokeVal = digitalRead(smoke_pin);
  int ssmokeVal = digitalRead(ssmoke_pin);
  int flameVal = digitalRead(flame_pin);
  int fflameVal = digitalRead(fflame_pin);
  if (smokeVal == HIGH ||  ssmokeVal == HIGH || flameVal == HIGH ||  fflameVal == HIGH) {
    digitalWrite(relay_pin, LOW  || zrelay_pin, LOW); // Включаем реле - посылаем низкий уровень сигнала
  } else {
    digitalWrite(relay_pin, HIGH || zrelay_pin, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  }
 
  delay(1000); // Проверяем значения один раз в секунду.
}

Как-то так домашнее задание должно выглядеть? Я так понимаю, с командами на выход этот номер не проходит? 

kaktus770
Offline
Зарегистрирован: 04.05.2018

sadman41, никто никому ничего не должен. Просто я догадываюсь, что тем кто в теме, здесь делов на 15 минут печати с отправкой. Это стоит денег? Озвучьте ценник. Лично мне стыдно было бы за такое деньги брать... 

Но это лирика:) Просто я сутки с этой хренью воюю - с нахрапа не дается... Одна просьба - направить на путь правильный.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

kaktus770 пишет:
Но это лирика:) Просто я сутки с этой хренью воюю - с нахрапа не дается... Одна просьба - направить на путь правильный.
Если вы хотите воевать с хренью, то я и направляю вас воевать с хренью. Потому что если вы победите эту хрень, то в тот же момент найдете еще. Это как не выученные уроки. Их нельзя сдать и забыть. Их все равно придется выучить.

sadman41
Offline
Зарегистрирован: 19.10.2016

Сутки... А должно быть сколько по вашему мнению - минут пять? Тогда вам надо куда-то ближе к героям фильма "Матрица" переселяться - там вам сразу в мозги знания загрузят. Ну и когда к вам сантехник приходит чтобы за 15 минут перекрывной кран поменять - вы же ему про стыд не говорите, наверное. А ведь там просто две гайки накрутить. Или таксисту за 10 минут езды тоже платите отчего-то просто за кручение руля и нажимание на педали. Ну да ладно, лирика это, как вы правильно подметили. 

kaktus770
Offline
Зарегистрирован: 04.05.2018

qwone пишет:

kaktus770 пишет:
Но это лирика:) Просто я сутки с этой хренью воюю - с нахрапа не дается... Одна просьба - направить на путь правильный.
Если вы хотите воевать с хренью, то я и направляю вас воевать с хренью. Потому что если вы победите эту хрень, то в тот же момент найдете еще. Это как не выученные уроки. Их нельзя сдать и забыть. Их все равно придется выучить.

Это все актуально для тех, кто занимается этим профессионально. Если я заливаю рабочую прошивку в принтер, какие еще уроки мне придется учить? Оно работает годами. А поправить пару строк академий заканчивать не надо.

sadman41
Offline
Зарегистрирован: 19.10.2016

kaktus770 пишет:

А поправить пару строк академий заканчивать не надо.

Предлагаю на этом поставить точку и оставить топикстартера, которому академиев кончать не нужно, в новогоднюю ночь поправлять пару строчек.

kaktus770
Offline
Зарегистрирован: 04.05.2018

sadman41 пишет:

Сутки... А должно быть сколько по вашему мнению - минут пять? Тогда вам надо куда-то ближе к героям фильма "Матрица" переселяться - там вам сразу в мозги знания загрузят. Ну и когда к вам сантехник приходит чтобы за 15 минут перекрывной кран поменять - вы же ему про стыд не говорите, наверное. А ведь там просто две гайки накрутить. Или таксисту за 10 минут езды тоже платите отчего-то просто за кручение руля и нажимание на педали. Ну да ладно, лирика это, как вы правильно подметили. 

Ну и какова цена вопроса? 

sadman41
Offline
Зарегистрирован: 19.10.2016

Моя - никакая. У меня выходные и праздники.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

kaktus770 пишет:
Ну и какова цена вопроса?
Здесь не цена вопроса, а цена результата. Хотя Высотский не пел про программистов, то это актуально и здесь.

https://www.youtube.com/watch?v=AbVnlmR4fz4

https://www.youtube.com/watch?v=HLByZVai0Kk

kaktus770
Offline
Зарегистрирован: 04.05.2018

sadman41 пишет:

kaktus770 пишет:

А поправить пару строк академий заканчивать не надо.

Предлагаю на этом поставить точку и оставить топикстартера, которому академиев кончать не нужно, в новогоднюю ночь поправлять пару строчек.

Ясно. Может мне не везет, но только на форуме програмистов со мной такое случается. Вроде попросил по человечески... Ну да ладно, сделаю не так красиво, но без ползанья на коленках. Спасибо за помощь. С наступающим!

kaktus770
Offline
Зарегистрирован: 04.05.2018

qwone пишет:

kaktus770 пишет:
Ну и какова цена вопроса?
Здесь не цена вопроса, а цена результата. Хотя Высотский не пел про программистов, то это актуально и здесь.

https://www.youtube.com/watch?v=AbVnlmR4fz4

https://www.youtube.com/watch?v=HLByZVai0Kk

Смотрю со скромностью у вас полный порядок:) Конечно ВысоЦкий о программистах пел:) 

Завелся, как тинейджер с вами. Но хоть не помогли, так повеселили:)

gfx125
Offline
Зарегистрирован: 27.05.2017

kaktus770 пишет:

Не работает...

Что конкретно не работает?

kaktus770
Offline
Зарегистрирован: 04.05.2018

gfx125 пишет:

kaktus770 пишет:

Не работает...

Что конкретно не работает?

Ничего. Компилируется, грузится, на команды с датчиков реле не реагирует. 

kaktus770
Offline
Зарегистрирован: 04.05.2018

Вариант из поста 9 не компилируется - на строке 38 матерится. Оно и понятно - логическому ИЛИ там нечего делать. 

nik182
Offline
Зарегистрирован: 04.05.2015

Не хватает копии 25 строки с объявлением на выход ноги для пищалки.
В строках 36 и 38 лишние или . Хватит и одного LOW. digitalWrite(relay_pin, LOW );

gfx125
Offline
Зарегистрирован: 27.05.2017

kaktus770 пишет:

Вариант из поста 9 не компилируется - на строке 38 матерится. Оно и понятно - логическому ИЛИ там нечего делать. 

если понятно, то зачем было впихивать невпихуемое?

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Обычно люди, которые академии кончали, догадываются открыть документацию на язык программирования, которым оперируют: https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/

Но тут-то не тот случай, верно... Тут надо консилиум собрать.

kaktus770
Offline
Зарегистрирован: 04.05.2018
/*
   Скетч для управления реле ардуино с помощью PIR датчика
 
   relay_pin содержит номер пина, к которому подключено реле, которым мы будем управлять
   smoke_pin содержит номер пина с подключенным PIR-сенсором
 
   В функции setup устанавливаем начальное положение реле (закрытое)
   В теле функции loop проверяем наличия высокого уровня сигнала от датчика с помощью функции digitalRead
 
*/
 
 
int relay_pin = 8; // Определяем пин, используемый для подключения реле1
int zrelay_pin = 9; // Определяем пин, используемый для подключения пищалки
int smoke_pin = 2; // Определяем пин, используемый для подключения smoke-датчика1
int ssmoke_pin = 3; // Определяем пин, используемый для подключения smoke-датчика2
int flame_pin = 4; // Определяем пин, используемый для подключения flame-датчика1
int fflame_pin = 5; // Определяем пин, используемый для подключения flame-датчика2

 
// В этой функции определяем первоначальные установки
void setup()
{
  Serial.begin(9600);
  pinMode(relay_pin, OUTPUT); // Объявляем пин реле как выход
  pinMode(zrelay_pin, OUTPUT); // Объявляем пин пищалки как выход
  digitalWrite(relay_pin, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
 
  int smokeVal = digitalRead(smoke_pin);
  int ssmokeVal = digitalRead(ssmoke_pin);
  int flameVal = digitalRead(flame_pin);
  int fflameVal = digitalRead(fflame_pin);
  if (smokeVal == HIGH ||  ssmokeVal == HIGH || flameVal == HIGH ||  fflameVal == HIGH) {
    digitalWrite(relay_pin, LOW) (zrelay_pin, LOW); // Включаем реле - посылаем низкий уровень сигнала
  } else {
    digitalWrite(relay_pin, HIGH) (zrelay_pin, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  }
 
  delay(1000); // Проверяем значения один раз в секунду.
}

Как-то так? Не компилируется - на строчки с digitalWrite ругается:

Arduino: 1.8.5 (Windows 10), Board: "Arduino Nano, ATmega328P"

 
C:\Users\Alex\Documents\Arduino\tools\ArduBlockTool\tool\libraries\sketch_test1\sketch_test1.ino: In function 'void loop()':
 
sketch_test1:37: error: void value not ignored as it ought to be
 
     digitalWrite(relay_pin, LOW) (zrelay_pin, LOW); // Включаем реле - посылаем РЅРёР·РєРёР№ уровень сигнала
 
                                ^
 
sketch_test1:39: error: void value not ignored as it ought to be
 
     digitalWrite(relay_pin, HIGH) (zrelay_pin, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
 
                                 ^
 
exit status 1
void value not ignored as it ought to be
 
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
 
kaktus770
Offline
Зарегистрирован: 04.05.2018

gfx125 пишет:

kaktus770 пишет:

Вариант из поста 9 не компилируется - на строке 38 матерится. Оно и понятно - логическому ИЛИ там нечего делать. 

если понятно, то зачем было впихивать невпихуемое?

 

По инерции. Потом почитал. Все равно почти ничего не понятно:)

gfx125
Offline
Зарегистрирован: 27.05.2017

это академический троллинг или действительно тяжело догадаться что нужно написать

digitalWrite(relay_pin, LOW);
    digitalWrite(zrelay_pin, LOW);

?

kaktus770
Offline
Зарегистрирован: 04.05.2018

sadman41 пишет:

Обычно люди, которые академии кончали, догадываются открыть документацию на язык программирования, которым оперируют: https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/

Но тут-то не тот случай, верно... Тут надо консилиум собрать.

Даже не знаю, как поделикатнее ответить... Вы можете себе представить на минутку, что не все люди разбираются в языках программирования? Что для 99% населения планеты Земля это темный-претемный лес? Чтобы пользоваться документацией, надо хотя-бы представлять, что искать...

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

kaktus770 пишет:
Завелся, как тинейджер с вами. Но хоть не помогли, так повеселили:)
А что делать если вы извините "обгадились" просто увидив подъем на горку. Нет здесь никакого программирования. Здесь просто здравый смысл и ум. Загрузите этот скетч и посмотрите что у вас в Serial, когда делается воздействие на датчики. Надеюсь здесь вы не закатите истерики, что у вас фобия от компьютеров.

/**/
const byte smoke_pin = 5;
const byte flame_pin = 3;
const byte relay_pin = 9;
//--------------------------------------
void setup() {
  Serial.begin(9600);
  pinMode(smoke_pin, INPUT);
  pinMode(flame_pin, INPUT);
  pinMode(relay_pin, OUTPUT);
  digitalWrite(relay_pin, HIGH);
}
void loop() {
  delay(1000); // Проверяем значения один раз в секунду.
  Serial.println("smoke:");
  Serial.print(digitalRead(smoke_pin));
  Serial.println("flame_pin:");
  Serial.print(digitalRead(flame_pin));
}

 

kaktus770
Offline
Зарегистрирован: 04.05.2018

gfx125 пишет:

это академический троллинг или действительно тяжело догадаться что нужно написать

digitalWrite(relay_pin, LOW);
    digitalWrite(zrelay_pin, LOW);

?

Действительно тяжело:)

Поправил, заливается но не работает - реле включается при запуске, на датчики не реагирует... Может это быть из за того, что у меня только два из четырех прописанных датчиков висит? 

/*
   Скетч для управления реле ардуино с помощью PIR датчика
 
   relay_pin содержит номер пина, к которому подключено реле, которым мы будем управлять
   smoke_pin содержит номер пина с подключенным PIR-сенсором
 
   В функции setup устанавливаем начальное положение реле (закрытое)
   В теле функции loop проверяем наличия высокого уровня сигнала от датчика с помощью функции digitalRead
 
*/
 
 
int relay_pin = 8; // Определяем пин, используемый для подключения реле1
int zrelay_pin = 9; // Определяем пин, используемый для подключения пищалки
int smoke_pin = 2; // Определяем пин, используемый для подключения smoke-датчика1
int ssmoke_pin = 3; // Определяем пин, используемый для подключения smoke-датчика2
int flame_pin = 4; // Определяем пин, используемый для подключения flame-датчика1
int fflame_pin = 5; // Определяем пин, используемый для подключения flame-датчика2

 
// В этой функции определяем первоначальные установки
void setup()
{
  Serial.begin(9600);
  pinMode(relay_pin, OUTPUT); // Объявляем пин реле как выход
  pinMode(zrelay_pin, OUTPUT); // Объявляем пин пищалки как выход
  digitalWrite(relay_pin, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
 
  int smokeVal = digitalRead(smoke_pin);
  int ssmokeVal = digitalRead(ssmoke_pin);
  int flameVal = digitalRead(flame_pin);
  int fflameVal = digitalRead(fflame_pin);
  if (smokeVal == HIGH ||  ssmokeVal == HIGH || flameVal == HIGH ||  fflameVal == HIGH) {
    digitalWrite(relay_pin, LOW); 
    digitalWrite(zrelay_pin, LOW); // Включаем реле - посылаем низкий уровень сигнала
  } else {
    digitalWrite(relay_pin, HIGH); 
    digitalWrite(zrelay_pin, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  }
 
  delay(1000); // Проверяем значения один раз в секунду.
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Я могу себе представить больше, чем на минутку, что без того устройства, что вы собираете, 99% населения планеты спокойно проживут еще пару столетий. И они не будут соваться в этот темный-претемный лес вообще никогда. А те, кто сунулся, всё же сумеют в гугл забить слово "digitalWrite", прочтут там за пять минут синтаксис, а не будут на форуме три часа рассказывать, что от них эту информацию рептилоиды скрывают и за ней надо на Нибиру слетать.

kaktus770
Offline
Зарегистрирован: 04.05.2018

qwone пишет:

kaktus770 пишет:
Завелся, как тинейджер с вами. Но хоть не помогли, так повеселили:)
А что делать если вы извините "обгадились" просто увидив подъем на горку. Нет здесь никакого программирования. Здесь просто здравый смысл и ум. Загрузите этот скетч и посмотрите что у вас в Serial, когда делается воздействие на датчики. Надеюсь здесь вы не закатите истерики, что у вас фобия от компьютеров.

/**/
const byte smoke_pin = 5;
const byte flame_pin = 3;
const byte relay_pin = 9;
//--------------------------------------
void setup() {
  Serial.begin(9600);
  pinMode(smoke_pin, INPUT);
  pinMode(flame_pin, INPUT);
  pinMode(relay_pin, OUTPUT);
  digitalWrite(relay_pin, HIGH);
}
void loop() {
  delay(1000); // Проверяем значения один раз в секунду.
  Serial.println("smoke:");
  Serial.print(digitalRead(smoke_pin));
  Serial.println("flame_pin:");
  Serial.print(digitalRead(flame_pin));
}

 

smoke:
1flame_pin:
1smoke:
1flame_pin:
1smoke:
1flame_pin:
0smoke:
1flame_pin:
0smoke:
1flame_pin:
1smoke:
1flame_pin:
1smoke:
1flame_pin:
1smoke:
0flame_pin:
1smoke:
0flame_pin:
1smoke:
0flame_pin:
1smoke:
1flame_pin:
 
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

kaktus770 пишет:
Может это быть из за того, что у меня только два из четырех прописанных датчиков висит?
Это потому что Вы усиленно не хотите учится. Научитесь использовать Serial и ардуино как простой тестер и все у Вас наладится. https://www.youtube.com/watch?v=gmgw6nLgzbY

ПС:А чего цифирок нет после строчек?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Вольтметр есть? Посмотри на выходах датчиков напряжение меняется при поднесении зажигалки/пускании дыма?

sadman41
Offline
Зарегистрирован: 19.10.2016

Квон, ему не надо учится. Он хочет, чтобы ты его руку взял и пальцем натыкал код, который зальет потом в ардуину и продолжит жить без знаний, пока еще идея в голову не взбредет. Ну, а лучше, конечно, чтобы ты запостил готовое, а он скопипастит. Потому что ему нужен результат, а не знания. А ты должен ему помочь. Иначе зачем ты пять лет учился и на форуме теперь сидишь? Приноси пользу опчеству в лице кактуса. Такой расклад.

Забыл. Еще расскажи ему о всех нюансах подключения датчиков. Ну и как их эксплуатировать правильно - прогревать там, то-сё. Вобщем, сыканомь товарищу время и средства. А то не дайбох еще сутки безрезультатно просидит.

kaktus770
Offline
Зарегистрирован: 04.05.2018

sadman41 пишет:

Я могу себе представить больше, чем на минутку, что без того устройства, что вы собираете, 99% населения планеты спокойно проживут еще пару столетий. И они не будут соваться в этот темный-претемный лес вообще никогда. А те, кто сунулся, всё же сумеют в гугл забить слово "digitalWrite", прочтут там за пять минут синтаксис, а не будут на форуме три часа рассказывать, что от них эту информацию рептилоиды скрывают и за ней надо на Нибиру слетать.

Возможно. Но когда ко мне обращаются за помощью несведущие в моей специальности люди, я им обычно помогаю, а не рассказываю, какие они ослики, что не удосужились освоить основы моей специальности.

sadman41
Offline
Зарегистрирован: 19.10.2016

kaktus770 пишет:

Но когда ко мне обращаются за помощью несведущие в моей специальности люди, я им обычно помогаю, 

Пруфы есть? А то што-то я как не встречу ущемленного на этом токсичном и недоброжелательном форуме новичка - он непременно оказывается матерью Терезой, которая всё своё время помогает несведущим и страждущим. Тут же его не ценят и третируют изо всех сил.

kaktus770
Offline
Зарегистрирован: 04.05.2018

asam пишет:

Вольтметр есть? Посмотри на выходах датчиков напряжение меняется при поднесении зажигалки/пускании дыма?

Меняется с 1 на 0

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

С 1 вольта на 0 вольт?

И ноль это когда зажигалку подносишь? 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Похоже и датчики аналоговые https://www.youtube.com/watch?v=Qvpy9aiRHrc

Densl
Offline
Зарегистрирован: 28.11.2018

Во первых я не вижу где вы настроили цифровые пины для чтения состояния. Вам нужно написать для каждого используемого пина pinMode(-//-, INPUT), где -//- имя пина для чтения. У quone в примере это есть. 

Во вторых что значит не работает? Из-за того что вы не подключили другие датчики и не правильно инициализировали пины, вот вам и результат.

Я чувствую ваши вопросы скоро начнут расти в геометрической прогрессии.

kaktus770
Offline
Зарегистрирован: 04.05.2018

sadman41 пишет:

kaktus770 пишет:

Но когда ко мне обращаются за помощью несведущие в моей специальности люди, я им обычно помогаю, 

Пруфы есть? А то што-то я как не встречу ущемленного на этом токсичном и недоброжелательном форуме новичка - он непременно оказывается матерью Терезой, которая всё своё время помогает несведущим и страждущим. Тут же его не ценят и третируют изо всех сил.

Вообще то моя специальность инженер-судомеханик. Старшим механиком работаю. Но по своему маленькому хобби пожалуйста: https://3deshnik.ru/forum/viewtopic.php?f=25&t=104&start=1455#p34049

gfx125
Offline
Зарегистрирован: 27.05.2017

qwone пишет:

Похоже и датчики аналоговые https://www.youtube.com/watch?v=Qvpy9aiRHrc

да нет, там есть цифровой выход D0

к тому же если верить

kaktus770 пишет:
Скетч работает с одним датчиком.

Densl, Выводы Arduino (Atmega) стандартно настроены как порты ввода, таким образом, не требуется явной декларации в функции pinMode().

kaktus770, что по поводу вопроса в #41?

 

 

 

 

 

 

kaktus770
Offline
Зарегистрирован: 04.05.2018

gfx125 пишет:

qwone пишет:

Похоже и датчики аналоговые https://www.youtube.com/watch?v=Qvpy9aiRHrc

да нет, там есть цифровой выход D0

к тому же если верить

kaktus770 пишет:
Скетч работает с одним датчиком.

Densl, Выводы Arduino (Atmega) стандартно настроены как порты ввода, таким образом, не требуется явной декларации в функции pinMode().

kaktus770, что по поводу вопроса в #41?

По умолчанию 1. Зажигалку подношу 0.

Все верно, датчики подключены через цифровой выход DO.

nik182
Offline
Зарегистрирован: 04.05.2015

Вставте после чтения входов вывод в сериал значений, а под if else после команд реле вывод в сериал слов включено и выключено. Увидите как изменение входов влияет на выход.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Попробуте Загрузить этот код и скажите при каких состояниях должно включаться реле, а при каких выключаться

/**/
const byte smoke_pin = 5;
const byte flame_pin = 3;
const byte relay_pin = 9;
//--------------------------------------
void setup() {
  Serial.begin(9600);
  pinMode(smoke_pin, INPUT);
  pinMode(flame_pin, INPUT);
  pinMode(relay_pin, OUTPUT);
  digitalWrite(relay_pin, HIGH);
}
void loop() {
  delay(1000); // Проверяем значения один раз в секунду.
  Serial.print("smoke:");
  Serial.println(digitalRead(smoke_pin));
  Serial.print("flame_pin:");
  Serial.println(digitalRead(flame_pin));
}

 

nik182
Offline
Зарегистрирован: 04.05.2015

Дубль

gfx125
Offline
Зарегистрирован: 27.05.2017

kaktus770 пишет:

[

По умолчанию 1. Зажигалку подношу 0.

В таком случае меняйте в 36 строке все HIGH на LOW

 

kaktus770
Offline
Зарегистрирован: 04.05.2018

Все заработало! Мля, у меня сейчас моск с непривычки взорвется:) Всем спасибо за терпение! Пойду смотреть кошмары про сериал порты:)