Poniżej prezentuję 2 programiki do sterowania oświetleniem zgodnie z założeniami projektu . Pierwszy do bezpośredniego sterowania z wyjść arduino ( na filmie ), natomiast drugi przy użyciu expandera opartego na układzie PCF8574P . Jako zamienniki PIR których nie mam posłużyły mi czujniki odbiciowe E18-D50NK .
Jako element wykonawczy do zasilania pasków ledowych można zastosować mój ulubiony układ ULN2803 .
tutaj filmik
tutaj kodzik pod wyjścia arduino
i jeszcze kodzik pod expander PCF8574P
Jako element wykonawczy do zasilania pasków ledowych można zastosować mój ulubiony układ ULN2803 .
tutaj filmik
tutaj kodzik pod wyjścia arduino
Kod:
// Projekt oświetlenia schodów
// http://forum.arduinopolska.com JasQ
int pin[8]={5,6,7,8,9,10,11};
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);
}
void loop() {
// dół
if (digitalRead(2) == LOW and s == 0){
for( q = 0; q < 7; q++ ){
digitalWrite( pin[q], HIGH );delay(500);}
s = 1;
}
if (digitalRead(2) == LOW and s == 1 ){
for( q = 7; q >= 0; q-- ){
digitalWrite( pin[q], LOW );delay(200);}
s = 0;
}
// góra
if (digitalRead(3) == LOW and s == 0){
for( q = 7; q >= 0; q-- ){
digitalWrite( pin[q], HIGH );delay(500);}
s = 1;
}
if (digitalRead(3) == LOW and s == 1){
for( q = 0; q < 7; q++ ){
digitalWrite( pin[q], LOW );delay(200);}
s = 0;
}
}
i jeszcze kodzik pod expander PCF8574P
Kod:
// Projekt oświetlenia schodów
// http://forum.arduinopolska.com JasQ
#include "PCF8574.h"
#include <Wire.h>
int pin[8]={0,1,2,3,4,5,6,7};
int q = 0;
byte s = 0;
PCF8574 expander;
void setup() {
expander.begin(0x20);
expander.pinMode(0, OUTPUT);
expander.pinMode(1, OUTPUT);
expander.pinMode(2, OUTPUT);
expander.pinMode(3, OUTPUT);
expander.pinMode(4, OUTPUT);
expander.pinMode(5, OUTPUT);
expander.pinMode(6, OUTPUT);
expander.pinMode(7, OUTPUT);
pinMode( 2 , INPUT);
pinMode( 3 , INPUT);
}
void loop() {
// dół
if (digitalRead(2) == LOW and s == 0){
for( q = 0; q < 7; q++ ){
expander.digitalWrite( pin[q], HIGH );delay(500);}
s = 1;
}
if (digitalRead(2) == LOW and s == 1 ){
for( q = 7; q >= 0; q-- ){
expander.digitalWrite( pin[q], LOW );delay(200);}
s = 0;
}
// góra
if (digitalRead(3) == LOW and s == 0){
for( q = 7; q >= 0; q-- ){
expander.digitalWrite( pin[q], HIGH );delay(500);}
s = 1;
}
if (digitalRead(3) == LOW and s == 1){
for( q = 0; q < 7; q++ ){
expander.digitalWrite( pin[q], LOW );delay(200);}
s = 0;
}
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji