• 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.
#1
Listwa oświetleniowa LED z czujnikiem ruchu PIR HC-SR505. Oświetlenie kredensu w kuchni. Mam 4 moduły diod po 3 diody led na 12V,zasilacz z 12V na 2,5A z routera netgear,czujnik  PIR HC-SR505 i Attiny2313. Diody podłączone do zasilacza świecą mocnym białym światłem.Jak do tego podłączyć   czujnik i mikro kontroler ? Żeby  zaświeciło się  światło przy wchodzeniu do kuchni a po wyjściu zgasło powiedzmy po 5 sekundach? Na razie zrobiłem taki program:

Kod:
[syntax=c]define PRZYCISK 2
#define SWIATLO 3                                                                                                                                                      
#define PIR 5
#define LED 13 //Czerwona
#define LED 12 //Zielona
#define CZAS_SWIECENIA 1000

boolean uzbrojony = false;
unsigned long przycisk_czas, uzbrojenie_czas;

void setup() {
 pinMode(LED, OUTPUT);
 pinMode(SWIATLO, OUTPUT);
 digitalWrite(SWIATLO, LOW);
 pinMode(PIR, INPUT);
 pinMode(PRZYCISK, INPUT_PULLUP);
}

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

 if (przycisk_czas < millis())
   attachInterrupt(digitalPinToInterrupt(PRZYCISK), zmiana, FALLING);

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

}
[/syntax]


Przycisk ma załączać i wyłączać  program działania czujnika.Dioda led RGB dwu kolorowa- czerwona nie działa,zielona działa.Jak zrobić żeby świeciła się na zielono przy wyłączeniu i odwrotnie ?Do mikro kontrolera podłączyć tranzystor z rezystorem?Jaki?Dioda RGB - wspólna anoda w środku, zielony i czerwony po bokach.Wszystkie trzy podłączyć do digital?NP.13- Red przez rezystor 220 om,12-Green przez rezystor 220 om i 4-anoda?Bez czujnika ładnie wszystko świeci. Mocne biała światło.Program mi częściowo działa. Dioda Led jako światło zapala się z czujnika i i gaśnie po zadanym czasie.Tylko dioda sygnalizacji stanu- coś nie tak. Wyłączone świeci się zielona a załączony nic się nie świeci.
Co źle w programie? Brakło na końcu }. Poprawilem.
 
Odpowiedź
#2
A jak może dziłać program który się nie kompiluje?
Jak już bierzesz gotowca to przynajmniej zmieniaj z głową.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#3
(11-02-2017, 21:12)namok napisał(a): A jak może działać program który się nie kompiluje?
Jak już bierzesz gotowca to przynajmniej zmieniaj z głową.

 Brakło na końcu }. Poprawiłem. 
 
Odpowiedź
#4
Włącz osrzeżenia kompilatora(Plik->Preferencje->Ostrzeżenia kompilatora ->wszystko) i skompiluj ponownie program. Dostaniesz następną podpowiedź co jest nie tak.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#5
(11-02-2017, 22:18)namok napisał(a): Włącz osrzeżenia kompilatora(Plik->Preferencje->Ostrzeżenia kompilatora ->wszystko)  i skompiluj ponownie program. Dostaniesz następną podpowiedź co jest nie tak.

Mam włączone tam -> wszystko. Program mi się kompiluje i wgrywa na Arduino Uno.Pisałem że mi działa częściowo -> nie sygnalizuje dioda RGB - wyłączony Red - załączony Green.Kombinuje jak zmniejszyc napiecie z 12V do 5V aby zasilic Attiny2313 bo nie mam czego innego.
 
Odpowiedź
#6
Przeczytaj uważnie komunikaty kompilacji.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#7
(11-02-2017, 23:42)namok napisał(a): Przeczytaj uważnie komunikaty kompilacji.
Nie zauważyłem tego . Dopiero jak  wróciłem do początku tekstu okna. Mój błąd-przyznaje się bez bicia.Smile

waring:"LED" redefined

#define LED 13 //Czerwona

#define LED 12 //Zielona
Czyli zmienić nazwy z LED na LED0 i LED1?Zmieniłem i program Działa. Dzięki za pomoc.Jest drobny błąd. Jak zwiększyć czas wiedzenia listwy Led? Myślałem że tu (#define CZAS_SWIECENIA 1000) bo tak pisałem. Ale mimo zmiany na więcej nie działa.Czy potrzebna jest jedna z tych dwóch bibliotek - Curie Time lub Curie Time One?Pomocy,Plisss.

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

boolean uzbrojony = false;
unsigned long przycisk_czas, uzbrojenie_czas;

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

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

if (przycisk_czas < millis())
  attachInterrupt(digitalPinToInterrupt(PRZYCISK), zmiana, FALLING);

if (digitalRead(PIR))
{
  if (uzbrojony && uzbrojenie_czas < millis())
   
  digitalWrite(SWIATLO, HIGH);
}
else
  digitalWrite(SWIATLO, LOW);
}
 
Odpowiedź
#8
(12-02-2017, 00:33)Orion045 napisał(a):
(11-02-2017, 23:42)namok napisał(a): Przeczytaj uważnie komunikaty kompilacji.
Jest drobny błąd. Jak zwiększyć czas wiedzenia listwy Led? Myślałem że tu (#define CZAS_SWIECENIA 1000) bo tak pisałem. Ale mimo zmiany na więcej nie działa.Czy potrzebna jest jedna z tych dwóch bibliotek - Curie Time lub Curie Time One?Pomocy,Plisss.


Kod:
// INCLUDE CHRONO LIBRARY
// Download : https://github.com/thomasfredericks/Chrono/archive/master.zip
#include <Chrono.h>

// Instanciate a Chrono object.
Chrono myChrono;

void setup() {
 // Start the chronometer on setup.
 myChrono.start();
}

void loop() {
 // Check whether the chronometer has reached 1000 time units.
 if (myChrono.hasPassed(1000)) {
   // Do something here...
   // Restart the chronometer.
   myChrono.restart();
 }
}


 
Odpowiedź
#9
W pierwszy poście napisałeś
Cytat:Na razie zrobiłem taki program:...

a z tego co piszesz to nie rozumiesz jak ten Twój program działa. Może czas się przyznać że wziąłeś gotowca i nie za bardzo wiesz co się w nim dzieje.
W poprzednim temacie sugerowałem abyś przerobił jakiś kurs a Ty dalej nie rozumiesz działania podstawowych instrukcji.
Szkoda mojego czsu.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#10
(12-02-2017, 13:58)namok napisał(a): W pierwszy poście napisałeś
Cytat:Na razie zrobiłem taki program:...

a z tego co piszesz to nie rozumiesz jak ten Twój program działa. Może czas się przyznać że wziąłeś gotowca i nie za bardzo wiesz co się w nim dzieje.
W poprzednim temacie sugerowałem abyś przerobił jakiś kurs a Ty dalej nie rozumiesz działania podstawowych instrukcji.
Szkoda mojego czsu.

Przetestowałem program po nowym złożeniu układu na płytce. Program działa dobrze. Jak co chwilę jest ruch i go wykrywa to dioda led symbolizująca oświetlenie nie gaśnie. Teraz schemat do sprawdzenia. I jakie wartości części użyć aby uzyskać 5V z 12V. Próbowałem wstawić schemat i coś nie tak.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości