• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Listwa LED z czujnikiem ruchu PIR HC-SR505 do kredensu w kuchni.
#11
Ja zrobiłem podświetlanie schodów z taśm LED. Do sterownika doprowadzone napięcie 12V na potrzeby LED, a do zasilenia Arduino użyłem przetwornicy WP1584 3A. Kupiłem ją kiedyś do zjechania napięciem z 5V do 3,3V na potrzeby zasilenia ESP8266, ale nie szło ustawić stabilnego napięcia 3,3V z 5V. Z ustawieniem 5V z 12V nie ma problemu.
 
Odpowiedź
#12
(13-02-2017, 09:12)zamber napisał(a): Ja zrobiłem podświetlanie schodów z taśm LED. Do sterownika doprowadzone napięcie 12V na potrzeby LED, a do zasilenia Arduino użyłem przetwornicy WP1584 3A. Kupiłem ją kiedyś do zjechania napięciem z 5V do 3,3V na potrzeby zasilenia ESP8266, ale nie szło ustawić stabilnego napięcia 3,3V z 5V. Z ustawieniem 5V z 12V nie ma problemu.
Co do przetwornicy to mam zamontowaną w urządzeniu do którego podpinam dowolny zasilacz i ustawiam napięcie wyjściowe jakie akurat potrzebuje .Szukam  przykładu zastosowania fotodiody lub fotorezystora jako włącznika zamiast przycisku. Chce zrobić tak że jak fotorezystor da odczyt 50 to żeby się urządzenie załączyło a jak będzie powyżej 50 to wyłączyło.Mam pytanie jak tu zamieścić schemat? Wczoraj próbowałem i nic z tego.Chce dopisać do programu coś takiego:
1.Że jeżeli fotorezystor poda wynik =<50 to podaje  sygnał na pin 2
2.Jeżeli fotorezystor poda wynik >50 to nie podaje  sygnał na pin 2
Jak to napisać?
#define fotorezystor 0
 fotorezystor x=0
 if x=<50 i co dalej?
 
Odpowiedź
#13
Poniżej  kod na najprostszy program z wykorzystaniem fotorezystora, zapalający diodę na Arduino (pin 13).
Fotorezystor podłączasz do pinu A0 (przez dzielnik napięciowy), zadana wartość to 200. 



Kod:
void setup() {
Serial.begin(9600);
while(!Serial);
pinMode(A0, INPUT);
pinMode(13, OUTPUT);

}

void loop() {
int odczyt = analogRead(A0);
if(odczyt < 200)
digitalWrite(13, HIGH);
else digitalWrite(13, LOW);
Serial.println(odczyt);
delay(1000);

}

Ja dołożyłem fotorezystor do sterownika schodowego, żeby nie załączał się w dzień, szczególnie że koło dolnego czujnika często się przechodzi i niepotrzebnie się załączał.
Czujka podpięta do A0, poniżej dołożony drugi warunek.

if (digitalRead(A0) == HIGH and (odczyt < 100)) //sterownik uruchomi światło jak wykryje ruch i jednocześnie będzie ciemno
 
Odpowiedź
#14
(16-02-2017, 23:35)zamber napisał(a): Poniżej  kod na najprostszy program z wykorzystaniem fotorezystora, zapalający diodę na Arduino (pin 13).
Fotorezystor podłączasz do pinu A0 (przez dzielnik napięciowy), zadana wartość to 200. 



Kod:
void setup() {
Serial.begin(9600);
while(!Serial);
pinMode(A0, INPUT);
pinMode(13, OUTPUT);

}

void loop() {
int odczyt = analogRead(A0);
if(odczyt < 200)
digitalWrite(13, HIGH);
else digitalWrite(13, LOW);
Serial.println(odczyt);
delay(1000);

}

Ja dołożyłem fotorezystor do sterownika schodowego, żeby nie załączał się w dzień, szczególnie że koło dolnego czujnika często się przechodzi i niepotrzebnie się załączał.
Czujka podpięta do A0, poniżej dołożony drugi warunek.

if (digitalRead(A0) == HIGH and (odczyt < 100)) //sterownik uruchomi światło jak wykryje ruch i jednocześnie będzie ciemno

Kod:
#include <Bounce2.h>

#define PRZYCISK 2
#define SWIATLO 3  
#define PRZEKAZNIK 4                                                                                                                                                    
#define PIR 5
#define LED0 13 //Czerwona
#define LED1 12 //Zielona
#define CZAS_SWIECENIA 1000

Bounce bouncer = Bounce(PRZYCISK, 25);
boolean uzbrojony = false;
unsigned long przycisk_czas, uzbrojenie_czas;

void setup() {
 
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(SWIATLO, OUTPUT);
pinMode(PIR, INPUT);
pinMode(PRZYCISK, INPUT_PULLUP);
pinMode(PRZEKAZNIK, OUTPUT);

}

void zmiana()

{
 
digitalWrite(SWIATLO, LOW);
uzbrojenie_czas = millis() + CZAS_SWIECENIA;
przycisk_czas = millis() + 1000;
uzbrojony = !uzbrojony;
detachInterrupt(digitalPinToInterrupt(PRZYCISK));

}

void loop() {

 bouncer.update();

 int value = bouncer.read();

digitalWrite(LED0, uzbrojony);

 if (value == HIGH)
 
  attachInterrupt(digitalPinToInterrupt(PRZYCISK), zmiana, FALLING);

 if(digitalRead(PIR)==HIGH){
   
 digitalWrite(PRZEKAZNIK, HIGH);
 
  if (uzbrojony && uzbrojenie_czas < millis())
   
  digitalWrite(SWIATLO, HIGH);
 
}

else

  digitalWrite(SWIATLO, LOW);
 
}
Na razie mam z przyciskiem. Załęcza i wyłącza - diody świecą się . Tylko nie przełącza przekaźnika. Przekaźnik jest dobry bo sprawdziłem go na innym programie.Czujnik ruchu też działa bo zaświeca się Led światło. Nie wiem co zrobić by zadziałał przekaźnik.Zastanawiam się też nad wlutowaniem fotorezystora w czujnik ruchu. Transformatorową lutownicę mam. Nie chcę spieprzyć czujnika.Szukam też schematu aby obniżyć napięcie 12 V do 5 V na Attiny2313.
 
Odpowiedź
#15
Dobrze, gdybyś wkleił schemat i pełen kod programu, bo dziwię się, że nie działa Ci przekaźnik. No chyba,że próbujesz go wysterować sygnałem bezpośrednio z PIR'a, a wtedy nie ma prawa działać.
 
Odpowiedź
#16
(17-02-2017, 14:34)zamber napisał(a): Dobrze, gdybyś wkleił schemat i pełen kod programu, bo dziwię się, że nie działa Ci przekaźnik. No chyba,że próbujesz go[Obrazek: arrow-10x10.png] wysterować sygnałem bezpośrednio z  PIR'a, a wtedy nie ma prawa działać.

To pełny kod programu. Na razie nie montowałem fotorezystora. Przekaźnik jest podłączony pod digital 4 Arduino Uno.
Kod:
#include <Bounce2.h>
#define FOTOREZYSTOR A0
#define PRZEKAZNIK 4

#define SWIATLO 3                                                                                                                                                      
#define PIR 5
#define LED0 13 //Czerwona
#define LED1 12 //Zielona
#define CZAS_SWIECENIA 1000

Bounce bouncer = Bounce(FOTOREZYSTOR, 25);
boolean uzbrojony = false;
unsigned long fotorezystor_czas, uzbrojenie_czas;

void setup() {

Serial.begin(9600);
while(!Serial);
pinMode(A0, INPUT);
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(SWIATLO, OUTPUT);
digitalWrite(SWIATLO, LOW);
pinMode(PIR, INPUT);
pinMode(FOTOREZYSTOR, INPUT_PULLUP);

}

void zmiana()

{
 
digitalWrite(SWIATLO, LOW);
uzbrojenie_czas = millis() + CZAS_SWIECENIA;
fotorezystor_czas = millis() + 1000;
uzbrojony = !uzbrojony;
detachInterrupt(digitalPinToInterrupt(FOTOREZYSTOR));

}

void loop() {

int odczyt = analogRead(A0);
if(odczyt <= 400)
digitalWrite(13, HIGH);
else digitalWrite(13, LOW);
Serial.println(odczyt);
delay 500);
 bouncer.update();

 int value = bouncer.read();

digitalWrite(LED0, uzbrojony);

 if (value == HIGH)
 
  attachInterrupt(digitalPinToInterrupt(FOTOREZYSTOR), zmiana, FALLING);

if(digitalRead(PIR)==HIGH){
 
 digitalWrite(SWIATLO, HIGH);
 
if(digitalRead(PRZEKAZNIK)==HIGH){
 
 digitalWrite(PRZEKAZNIK, HIGH);
 
  if (uzbrojony && uzbrojenie_czas < millis())
   
  digitalWrite(SWIATLO, HIGH);
 
}

else

  digitalWrite(SWIATLO, LOW);
 
}
}
Mam pytanie czy zasilanie +5 V na przekaźnik dać przez rezystor i tranzystor?Podłączyłem przekaźnik do pinu 3 . Dalej program[Obrazek: arrow-10x10.png] nie działa tak jak ma. Przekaźnik zamiast się zatłacza się wyłącza. Dioda załącz wyłącz pali się na czerwono , a po naciśnięciu przycisku na załącz się nie pali.Mimo że wyłączę (czerwona dioda) to czujnik daje impuls na przekaźnik.Pomocy,pliss. Mam tak podłączone do przekaźnika-Na jednym końcu przewodu jest gniazdo na drugim wtyczka.Przy wtyczce (10 cm od nie) jest rozcięty i masa rozcięta i podłączona do przekaźnika. Od wtyczki do środkowego złącza a od gniazda do lewego.Niby mi wszystko działa ale odwrotnie.Przy włączeniu  ledy zapalają się od razu[Obrazek: arrow-10x10.png] a czujnik jak zadziała to gasi. Co źle?Przekaźnik jest na rozwartym podłączony. Mam pytanie. Na jednej ze stron znalazłem poradę żeby kabelek z wyjścia out czujnika PIR HC-SR501 podłączyć do wejścia in przekaźnika - można tak? Program[Obrazek: arrow-10x10.png] będzie działał?Czy trzeba poprawić program[Obrazek: arrow-10x10.png]?     CZy wszystko tu jest dobrze? Nie wiem co wykorzystam- czy Arduino Nano,Leonardo albo Attiny2313 wiec na razie schemat zasilania do sprawdzenia. Moduł przekaźnika 5 V zasilanie.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości