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


Ocena wątku:
  • 1 głosów - średnia: 5
  • 1
  • 2
  • 3
  • 4
  • 5
Oświetlenie schodów
#21
Witam.
Odnosnie projektu oswietlenia schódow, mam juz zmontowany prototyp na plytce i napisany kod glównie w oparciu o wpis JasQ. Projekcik zaklada 6 diód podpietych do arduino, rozpietosc miedzy najdalsza a kontrolerem wyniesie okolo 5m. Wszystko ma byc ladnie ukryte w scianie z miejscem na baterie.
I tutaj moje pytanie jakiej konfiguracji zasilania uzyc? Bateria 9V czy paluszki?
 
Odpowiedź
#22
Witam
Pytanie techniczne ?
(01-06-2016, 18:27)pan_statystyka napisał(a): Dlatego należałoby na dole i górze zrobić 2 czujniki ruchu, które określą kierunek wchodzenia, oraz "licznik ludzi", którzy weszli/zeszli ze schodów.
Czyli mijając czujniki gora1 gora2 program dodaje człowieka na schodach, jeżeli ponownie będzie sekwencja g1 g2 to znaczy, że ktoś jeszcze wszedł, jeśli g2 g1 to znaczy, że pierwszy człowiek się cofnął. Analogicznie tak samo d1 i d2.
Jeżeli liczba ludzi na schodach będzie równa 0 - wtedy dopiero można wygasić światło Smile

Chciałbym pociągnąć ten wątek . Zrobic to tutaj czy zalozyc nowy ?
Pozdrawiam
 
Odpowiedź
#23
Witaj zb56, możesz założyć nowy wątek i dać w nim linka do tego. Smile
[Obrazek: Sygnatura1-w60.jpg]
 
Odpowiedź
#24
Witam
Dziś kurier dostarczył moje pierwsze Arduino, czyli zaczynam przygodę... więc proszę o wyrozumiałość i wskazówki.
Uruchomiłem w emulatorze (bo mam na razie tylko Arduino) kod udostępniony przez JasQ, ale zamiast czujników odbiciowych podłączyłem PIR'y, zmieniając sygnał sterujący PIN2 i PIN3 z LOW na HIGH. Wszystko pracuje tak jak należy, ale...
chcę złożyć ten sterownik na PIR, a jeden z czujników będzie w takim miejscu, że czasami się uruchomi pomimo tego, że nikt nie będzie wchodził po schodach. Co wtedy, będzie cały czas się świeciło do czasu wykrycia kolejnego ruchu?
Co dodać w kodzie, żeby po 30s oświetlenie się wyłączyło? Kolejna sprawa, to odczulenie sterownika w określonych godzinach (w dzień), ale z uwagi na brak zegara raczej nie da się tego zrobić?  Może wystarczy regulacja czułości PIR'ów. Sterownik chcę zrobić z uwagi na psiaka, który czasami schodzi na dół podjeść w nocySmile

Kod:
// Projekt oświetlenia schodów

//  http://forum.arduinopolska.com JasQ


int pin[9]={5,6,7,8,9,10,11,12,13};

int q = 0;
byte s = 0;

void setup() {

Serial.begin(9600);

pinMode( 2 , INPUT);
pinMode( 3 , INPUT);

pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
 
}

void loop() {

// dół

if (digitalRead(2) == HIGH and s == 0){

for( q = 0; q < 9; q++ ){
  digitalWrite( pin[q], HIGH );delay(500);}
 
  s = 1;
 
 }
 
  if (digitalRead(2) == HIGH and s == 1 ){

for( q = 9; q >= 0; q-- ){
  digitalWrite( pin[q], LOW );delay(200);}
 

  s = 0;
 
}
 
// góra
 
   if (digitalRead(3) == HIGH and s == 0){

for( q = 9; q >= 0; q-- ){
  digitalWrite( pin[q], HIGH );delay(500);}
 
  s = 1;
 
   }
 
  if (digitalRead(3) == HIGH and s == 1){

for( q = 0; q < 9; q++ ){
  digitalWrite( pin[q], LOW );delay(200);}

  s = 0;
 
  }}
 
Odpowiedź
#25
Przesyłam zmodyfikowany program z wyłączeniem po przypadkowym włączeniu, i żeby program nie działał w kółko jak się stoi na czujniku.


Kod:
// Projekt oświetlenia schodów

unsigned long czas;

int pin[12]={2,3,4,5,6,7,8,9,10,11,12,13};

int q = 0;
byte s = 0;
byte c = 0;
byte v = 0;
bool c_on = false;
bool c_off = false;



//LED delay
 int tOn = 250; //czas wlaczania
 int tOff = 100; //czas wylanczania
 int offC = 200; //


void setup() {

Serial.begin(9600);

pinMode( 0 , INPUT);
pinMode( 1 , INPUT);

pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}

void loop() {


// z dołu


if (digitalRead(1) == LOW and s == 0)
  {
   c_on=true;
   OnDown();
  }
if (digitalRead(1) == HIGH and c_on == true)
  {
   s= 1;
   c_on=false;
   czas = millis()+30000;
  }


if (digitalRead(1) == LOW and s == 1)
   {
    c=1;
    }
if (digitalRead(1) == HIGH and c == 1)
    {
      OffDown();
      }
if (digitalRead(1) == HIGH and s == 1)
   {  
     if (millis()  > czas )
     {
       OffCzas();
       }
    }

// z góry
 

if (digitalRead(0) == LOW and s == 0)
  {
   c_off=true;
   OnUp();
  }
if (digitalRead(0) == HIGH and c_off == true)
  {
   s= 1;
   c_off=false;
   czas = millis()+30000;
  }

 
if (digitalRead(0) == LOW and s == 1)
    {
      v=1;
    }
if (digitalRead(0) == HIGH and v == 1 )
    {
      OffUp();
    }
if (digitalRead(0) == HIGH and s == 1)
   {  
     if (millis()  > czas )
     {
       OffCzas();
       }
   
    }
}

void OnUp(){

 for( q = 0; q < 12; q++ ){
  digitalWrite( pin[q], HIGH );delay(tOn);}
 

}

void OffUp(){
 
 for( q = 12; q >= 0; q-- ){
  digitalWrite( pin[q], LOW );delay(tOff);}
 
    s = 0;
    v = 0;
    c = 0;
    q = 0;
   
}

void OnDown(){
 
for( q = 12; q >= 0; q-- ){
  digitalWrite( pin[q], HIGH );delay(tOn);}
       
}

void OffDown(){
 
 for( q = 0; q < 12; q++ ){
  digitalWrite( pin[q], LOW );delay(tOff);}

  s = 0;
  v = 0;
  c = 0;
  q = 0;
 
}

void OffCzas(){

digitalWrite(2, LOW );
digitalWrite(13, LOW );
delay(offC);
digitalWrite(3, LOW );
digitalWrite(12, LOW );
delay(offC);
digitalWrite(4, LOW );
digitalWrite(11, LOW );
delay(offC);
digitalWrite(5, LOW );
digitalWrite(10, LOW );
delay(offC);
digitalWrite(6, LOW );
digitalWrite(9, LOW );
delay(offC);
digitalWrite(7, LOW );
digitalWrite(8, LOW );
delay(offC);  

  s = 0;
  v = 0;
  c = 0;
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości