Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Гвоздь программы
2019-07-30 14:39:01

Лампочка включилась, осветила датчик освещённости, принято решение выключить лампочку, ибо светло. Лампочка выключилась, стало темно, принято решение включить лампочку.
Лампочка включилась, осветила датчик освещённости, принято решение выключить лампочку, ибо светло. Лампочка выключилась, стало темно, принято решение включить лампочку.
Лампочка включилась, осветила датчик освещённости, принято решение выключить лампочку, ибо светло. Лампочка выключилась, стало темно, принято решение включить лампочку.
Лампочка включилась, осветила датчик освещённости, принято решение выключить лампочку, ибо светло. Лампочка выключилась, стало темно, принято решение включить лампочку.
...

sadman
2019-05-16 23:56:12

Кака, ну а чего Вы хотели, это же ардуино. Каждый студент бьет себя в грудь, что он крутой прогер железа.
Браво, аплодисменты! Хотя, железа даже не нюхал.

Kaka
2019-05-15 18:53:36
ms пише:

Блин народ куда вы лезете ???? По накопируют кусков и пытаетесь слепить во едино не понимая азов.

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

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

ms
2019-05-15 16:35:03

Блин народ куда вы лезете ???? По накопируют кусков и пытаетесь слепить во едино не понимая азов.

Watchdog
2019-05-15 15:50:04

Зачем здесь вообще Ардуино? Компьютер, что-бы реле освещения включать? Автор что-то недоговаривает.

Дмитрий C.
2019-05-15 13:43:12

if(digitalRead(pirPin) == HIGH && uint16_t lux<Ваше пороговое значение темноты)

Дмитрий C.
2019-05-15 13:09:40

Приятель, ты должен по простy в Главном цикле  void loop() сперва проверить датчик освещенности, если значение ниже порога(темно) , то проверяешь датчик движения! Если ниже, то срабатывание на движение тебя не должны волновать! Можно поставить в качестве датчика освещения копеечный фоторезистор за 6 грн! Вполне себе реле ДЛЯ ардyино запитывается от 5в на ардyино! Не обращай внимания на хамов, все полyчится!

Kaka
2019-05-14 10:54:05
Alex_G пише:

1) Брал часть примера отсюда. А там реле запитано от Ардуино:

Вот, знаешь, совершенно наплевать, где ты это взял. Тебе грамотный человек сказал: "так делать нельзя". У тебя два варианта, или послушать и переделать, или идти туда, где ты это брал, и там просить помочь решить твои проблемы, т.к. здесь советуют неправильно.

vvr
2019-05-14 10:00:15

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


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

г0сть
2019-05-13 21:47:16
Alex_G пише:

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

Ну так возможно у вас датчик ловит движение и из-за этого идут сработки. Подключите вместо датчика обычную кнопку между 2 пином ардуино и +5V. Замыкая кнопку будете имитировать сработку датчика и посмотрите что происходит. При этом дополнительно притяните 2 пин к GND резистором на 10 кОм.

Alex_G
2019-05-13 21:21:52
vvr пише:

во первых - запитывать реле от дуни не правильно, должно быть отдельное питание.
во вторых - вы так и не удосужились расписать какой алгоритм работы вашего устройства.

1) Брал часть примера отсюда. А там реле запитано от Ардуино:
https://voltiq.ru/arduino-and-sensor-hc-sr501/

2) Алгоритм простой: При появлении человека на пути датчика движения - срабатывает реле, включается свет (лампочка), при появлении дополнительного источника света, датчик освещенности должен убавить яркость лампочки. Вообщем и целом так должна выглядеть задумка.

vvr
2019-05-13 21:09:50

во первых - запитывать реле от дуни не правильно, должно быть отдельное питание.
во вторых - вы так и не удосужились расписать какой алгоритм работы вашего устройства.

Alex_G
2019-05-13 20:00:22

Всем привет!

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

Идея была сделать освещение в комнате, которое работает от датчика движения PIR SR501 установленном на плате Arduino UNO вместе с датчиком BH1750, который регулирует освещение в комнате.

Подсоединил по такой схеме:

Skhema-programmy.jpeg

На схеме не рисовал светодиод на цифровом 13 порту для индикации калибровки датчика движения. Но он есть в скетче.

Правильно ли подсоединено всё на схеме?

Текущий код программы с комментариями далее:

#include <Wire.h>
#include <BH1750.h>

BH1750 lightMeter;

//Тестировалось на Arduino IDE 1.0.1
//Время калибровки датчика (10-60 сек. по даташиту)
int calibrationTime = 30;       

//Время, в которое был принят сигнал отсутствия движения(LOW)
long unsigned int lowIn;        

//Пауза, после которой движение считается оконченным
long unsigned int pause = 5000; 

//Флаг. false = значит движение уже обнаружено, true - уже известно, что движения нет
boolean lockLow = true;
//Флаг. Сигнализирует о необходимости запомнить время начала отсутствия движения
boolean takeLowTime; 

int pirPin = 2;    //вывод подключения PIR датчика
int ledPin = 13;   //вывод сигнального диода
int relayPin = 3;  //реле пин

void setup()
{
  Serial.begin(9600);
  lightMeter.begin();
  Serial.println("Running...");
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(relayPin, OUTPUT);


  digitalWrite(relayPin, HIGH);
  delay(4000);
  digitalWrite(pirPin, LOW);

  //дадим датчику время на калибровку
  for(int i = 0; i < calibrationTime; i++)
  {
    //Во время калибровки будет мигать сигнальный диод
    i % 2 ? digitalWrite(ledPin, HIGH) : digitalWrite(ledPin, LOW);
    delay(1000);
  }
  //По окончанию калибровки зажжем сигнальный диод 
  digitalWrite(ledPin, HIGH);
  delay(50);
}

void loop()
{
  uint16_t lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(500);
  //Если обнаружено движение
  if(digitalRead(pirPin) == HIGH)
  {
    //Если до этого момента еще не включили реле
    if(lockLow)
    {
      lockLow = false;      
      //Включаем реле.
      digitalWrite(relayPin, LOW);
      delay(50);
    }        
    takeLowTime = true;
  }

  //Ели движения нет
  if(digitalRead(pirPin) == LOW)
  {      
    //Если время окончания движения еще не записано
    if(takeLowTime)
    {
      lowIn = millis();          //Сохраним время окончания движения
      takeLowTime = false;       //Изменим значения флага, чтобы больше не брать время, пока не будет нового движения
    }
    //Если время без движение превышает паузу => движение окончено
    if(!lockLow && millis() - lowIn > pause)
    { 
      //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения
      lockLow = true;                
      digitalWrite(relayPin, HIGH);
      delay(50);
  }
}
}

Включаю схему, светодиод мигает, что сигнализирует о калибровке датчика, но по истечению 30 секунд реле то включается, то выключается, то непрерывно замкнуто (лампочка горит). Каждый раз после включения ведет себя хаотично. В общем не работает как следует.

Перепроверьте, пожалуйста, что не так со скетчем или схемой или железом?

Підвал форуму