06-12-2018, 00:03
Czesc, to znowu ja. Zmodyfikowałem zadanie na łatwiejsze.
Skomunikowałem juz arduino UNO z układem MAX7219. Mam program który umożliwia świecenie jedną diodą z kolumny.
Pobawiłem się też czujnikiem ruchu HC-SR-501. Umiem na podstawie jego sygnału wyjściowego napalić diodę.
Jednak od paru dni nie umiem połączyć tych 2 kodów razem.
Chciałbym, aby jedna dioda z matrycy zapalała się po wykryciu ruchu. Ma następnie świecić np 1 sekundę. Ale jeśli używam komendy delay() to mrożę cały układ na definiowany czas. Czy jest opcja, żeby czujnik ruchu nadal był aktywny w czasie w którym dioda się świeci?
I tym samym, jeśli używam tego delay() nie mogę sprawić żeby w czasie świecenia się 1 diody (np przez 2 sekundy) zapalić kolejną diodę LED (która też będzie świecić 2 sekundy i zgaśnie) z matrycy po wykryciu ruchu.
Czy może mi ktoś pomóc z napisaniem takiej pętli?
Skomunikowałem juz arduino UNO z układem MAX7219. Mam program który umożliwia świecenie jedną diodą z kolumny.
Pobawiłem się też czujnikiem ruchu HC-SR-501. Umiem na podstawie jego sygnału wyjściowego napalić diodę.
Jednak od paru dni nie umiem połączyć tych 2 kodów razem.
Chciałbym, aby jedna dioda z matrycy zapalała się po wykryciu ruchu. Ma następnie świecić np 1 sekundę. Ale jeśli używam komendy delay() to mrożę cały układ na definiowany czas. Czy jest opcja, żeby czujnik ruchu nadal był aktywny w czasie w którym dioda się świeci?
I tym samym, jeśli używam tego delay() nie mogę sprawić żeby w czasie świecenia się 1 diody (np przez 2 sekundy) zapalić kolejną diodę LED (która też będzie świecić 2 sekundy i zgaśnie) z matrycy po wykryciu ruchu.
Czy może mi ktoś pomóc z napisaniem takiej pętli?
Kod:
#include <LedControl.h>
/* PINologia
pin 12 -> DataIn
pin 11 -> is connected to the CLK
pin 10 -> is connected to LOAD
jeden układ MAX72XX. */
LedControl lc=LedControl(12,11,10,1);
/*oznaczenie wyjscia z sesnora*/
int sensor = 2;
/*wezerowanie sensora*/
int val =0;
/* czas ktory czekamy*/
unsigned long delaytime=500;
void setup() {
/* budzimy uklad */
lc.shutdown(0,false);
/* jasnosc na srednim poziomie */
lc.setIntensity(0,4);
/* wyczyszczenie wyswietlacza */
lc.clearDisplay(0);
}
/* zapalanie LEDow w rzedzie. */
void rzad() {
for(int rzad=0;rzad<8;rzad++) {
delay(delaytime);
lc.setRow(0,rzad,B10000000);
delay(delaytime);
lc.setRow(0,rzad,(byte)0);
}
}
void loop() {
rzad();
}