Oświetlenie schodów - tnaczas - 14-06-2015
CEO: Za każdą pomoc użytkownik zostaje nagrodzony i dostaje (+10) punktów reputacji.
witam. szukam pomocy w napisaniu programu do oswietlenia schodow jestem poczatkujacy i nie kumam jeszcze wszystkiego. nie wiem jak zrobic zeby port analogowy (np.A0) gdzie chce wpiac czujnik ruchu z fotorezystotem uruchamial mi jedna sekfecje a naprzyklad port drugi (A1) druga.
Co chce zrobic...
1.czujnik 1 (na dole) uruchamia stopniowo lampki na stopniach az do gory (ze zwloka 0,5 s - np.)
2.zapalaja sie wszystkie i swieca caly czas.
3.po uruchomieniu drugiego czujnika na gorze, gasza sie po kolei od dolu (ze zwloka 0,2 s - np.)
4.to samo dzieje sie w odwrotnej kolejnosci zaczynajac od gory.
5.i uruchamiajac np. 1 czujnik na dole a nie uruchamiajac drugiego na gorze ( zawracam w polowie schodow) tylko z powrotem uruchamiam 1 czujnik drugi raz gasna stopnie po kolei od gory (ze zwloka 0,2 s - np.)
jezeli ktos wie jak to zrobic prosze o pomoc
dzieki
RE: Oświetlenie schodów - CEO - 14-06-2015
Masz już jakiś układ Arduino, jakieś konkretne czujniki?
RE: Oświetlenie schodów - tnaczas - 14-06-2015
tak : UNO : czujniki - AC 220V Infrared PIR Motion Sensor Switch For LED Light Bulb 500W Max Reliable - kupilem na ebayu. oswietlenie mam juz podlaczone na schodach i wszystko dziala czujniki zalanczaja oswietlenie i gasnie po 60 sekundach taka wartosc maja fabrycznie ustawiona ( czujniki sa z detekcja ruchu i fotorezystorem )
RE: Oświetlenie schodów - tnaczas - 14-06-2015
w zestawie startowym ktory kupilem juz zaczelem sie bawic podlaczylem na listwie diody i prubuje cos napisac...... to max co narazie zrobilem
Kod: void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
}
void loop () {
digitalWrite(13, HIGH);
delay(300);
digitalWrite(12, HIGH);
delay(300);
digitalWrite(11,HIGH);
delay(300);
digitalWrite(10, HIGH);
delay(300);
digitalWrite(9, HIGH);
delay(300);
digitalWrite(8, HIGH);
delay(300);
digitalWrite(7, HIGH);
delay(300);
digitalWrite(6, HIGH);
delay(300);
digitalWrite(5, HIGH);
delay(300);
digitalWrite(4, HIGH);
delay(300);
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(5000);
digitalWrite(13, LOW);
delay(500);
digitalWrite(12, LOW);
delay(500);
digitalWrite(11, LOW);
delay(500);
digitalWrite(10, LOW);
delay(500);
digitalWrite(9, LOW);
delay(500);
digitalWrite(8, LOW);
delay(500);
digitalWrite(7, LOW);
delay(500);
digitalWrite(6, LOW);
delay(500);
digitalWrite(5, LOW);
delay(500);
digitalWrite(4, LOW);
delay(3000);
RE: Oświetlenie schodów - JasQ - 30-08-2015
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
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;
}
}
RE: Oświetlenie schodów - adix - 30-08-2015
a czy w samochodzie sterować chcesz pilotem i czy to diody mono chromatyczne czy RGB mam napisany sterownik do oświetlenia pokoju diodami RGB jeśli to ci pomoże mogę ci udostępnić kod pilot działa każdy wystarczy w swich case zmienić stan zmiennej ja używam pilotu od dekodera hd5000 polsatu.
RE: Oświetlenie schodów - JasQ - 30-08-2015
(30-08-2015, 11:21)adix20_20 napisał(a): a czy w samochodzie sterować chcesz pilotem i czy to diody mono chromatyczne czy RGB mam napisany sterownik do oświetlenia pokoju diodami RGB jeśli to ci pomoże mogę ci udostępnić kod pilot działa każdy wystarczy w swich case zmienić stan zmiennej ja używam pilotu od dekodera hd5000 polsatu.
chyba posty pomyliłeś tu chodzi o schody takie w domu chyba że tu chodzi o piętrowy autobus czego autor nie napisał
RE: Oświetlenie schodów - adix - 30-08-2015
sorki nie wiem jak czytałem ze przeczytałem ze chodzi o oświetlenie w samochodzie a nie do schodów sorki wielki tak czy inaczej zapytanie dalej aktualne bo zastosowanie nie ma znaczenia czy oświetlamy samochód czy schody mimo wszystko sorki
pytanie do autora jakie to czujniki stosujesz ile led ,czy to rgb, czy mono chromatyczne troszkę więcej danych ,czy ty potrzebujesz pomocy .czy gotowego programu bo jak gotowe to kolega idzie na łatwiznę.
program jest prosty
Kod: const int czuj1 = 22;
const int czuj2 = 23;
const int red = 13;//
const int green = 14;//
const int blue = 15;// pwm wyjscia led ustawic w zaleznosci od atmego moja to m2560
const int led1 = 24;
const int led2 = 25;
const int led3 = 26;
const int led4 = 27;
String dane;
int pwmred ;
int pwmgreen ;
int pwmblue ;
int opcja = 0;
int pomoc[5];
int x = 0;
int czujnik1 = 0;
int czujnik2 = 0;
long czas=800;
void setup() {
Serial.begin(9600);
pinMode(czuj1, INPUT);
pinMode(czuj2, INPUT);
pinMode(czuj1, OUTPUT);
pinMode(czuj2, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
czujnik1=1;
czujnik2=1;
}
void kolor()
{
pwmred = 0;
pwmgreen = 0;
pwmblue = 0;
analogWrite(red, pwmred);
analogWrite(green, pwmgreen);
analogWrite(blue, pwmblue);
}
void loop()
{
czujnik1 = digitalRead(czuj1);
czujnik2 = digitalRead(czuj2);
if(czujnik1==1){
pomoc[2]=1;
}
else
{
pomoc[2]=0;
}
if(czujnik2==1){
pomoc[3]=1;
}
else
{
pomoc[3]=0;
}
if(pomoc[5]==1){
}
else
{
if(pomoc[2] == 1){
digitalWrite(led1, 1);
delay(czas);
digitalWrite(led2, 1);
delay(czas);
digitalWrite(led3, 1);
delay(czas);
digitalWrite(led4, 1);
delay(czas);
pomoc[2]=0;
pomoc[4]=1;
}
}
if (pomoc[3] ==1) {
if(pomoc[4]==1){
digitalWrite(led1, 0);
delay(czas);
digitalWrite(led2, 0);
delay(czas);
digitalWrite(led3, 0);
delay(czas);
digitalWrite(led4, 0);
delay(czas);
pomoc[3]=0;
pomoc[4]=0;
}}
if(pomoc[3] == 1){
digitalWrite(led4, 1);
delay(czas);
digitalWrite(led3, 1);
delay(czas);
digitalWrite(led2, 1);
delay(czas);
digitalWrite(led1, 1);
delay(czas);
pomoc[3]=0;
pomoc[5]=1;
}
if (pomoc[2] ==1) {
if(pomoc[5]==1){
digitalWrite(led4, 0);
delay(czas);
digitalWrite(led3, 0);
delay(czas);
digitalWrite(led2, 0);
delay(czas);
digitalWrite(led1, 0);
delay(czas);
pomoc[2]=0;
pomoc[5]=0;
}}}
program działający tak jak podają w wytycznych jak z kończę to podam wersie z regulacja barwy przez bluetooth czy com teraz to wersja light
program wymaga sterowania nie tylko katodami ale i anodami wiec to komplikuje schemat połączeń,
Kod: const int czuj1 = 22;
const int czuj2 = 23;
const int red = 13;//
const int green = 14;//
const int blue = 15;// pwm wyjscia led ustawic w zaleznosci od atmego moja to m2560
const int led1 = 24;
const int led2 = 25;
const int led3 = 26;
const int led4 = 27;
String dane;
int pwmred ;
int pwmgreen ;
int pwmblue ;
int opcja = 0;
int pomoc[5];
int x = 0;
int czujnik1 = 0;
int czujnik2 = 0;
long czas=800;
void setup() {
Serial.begin(9600);
pinMode(czuj1, INPUT);
pinMode(czuj2, INPUT);
pinMode(czuj1, OUTPUT);
pinMode(czuj2, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
czujnik1=1;
czujnik2=1;
}
void loop()
{
czujnik1 = digitalRead(czuj1);
czujnik2 = digitalRead(czuj2);
if (pomoc[1] == 0)
{
pwmred = 0;
pwmgreen = 0;
pwmblue = 0;
analogWrite(red, pwmred);
analogWrite(green, pwmgreen);
analogWrite(blue, pwmblue);
pomoc[1] = 1;
}
if(czujnik1==1){
pomoc[2]=1;
}
else
{
pomoc[2]=0;
}
if(czujnik2==1){
pomoc[3]=1;
}
else
{
pomoc[3]=0;
}
if(pomoc[5]==1){
}
else
{
if(pomoc[2] == 1){
digitalWrite(led1, 1);
delay(czas);
digitalWrite(led2, 1);
delay(czas);
digitalWrite(led3, 1);
delay(czas);
digitalWrite(led4, 1);
delay(czas);
pomoc[2]=0;
pomoc[4]=1;
}
}
if (pomoc[3] ==1) {
if(pomoc[4]==1){
digitalWrite(led1, 0);
delay(czas);
digitalWrite(led2, 0);
delay(czas);
digitalWrite(led3, 0);
delay(czas);
digitalWrite(led4, 0);
delay(czas);
pomoc[3]=0;
pomoc[4]=0;
}}
if(pomoc[3] == 1){
digitalWrite(led4, 1);
delay(czas);
digitalWrite(led3, 1);
delay(czas);
digitalWrite(led2, 1);
delay(czas);
digitalWrite(led1, 1);
delay(czas);
pomoc[3]=0;
pomoc[5]=1;
}
if (pomoc[2] ==1) {
if(pomoc[5]==1){
digitalWrite(led4, 0);
delay(czas);
digitalWrite(led3, 0);
delay(czas);
digitalWrite(led2, 0);
delay(czas);
digitalWrite(led1, 0);
delay(czas);
pomoc[2]=0;
pomoc[5]=0;
}}
while (Serial.available() > 0) {
dane = Serial.readString();
odczyt();
}
switch (x)
{
case 1:
opcja = 1;
// Serial.println("czerwony");
pwmred = 0; //kalibracja koloru np red 20 green 40 blue 90 maxymalne wartosci 255 minimum 0
pwmgreen = 0;
pwmblue = 0;
break;
case 11:
opcja = 1;
// Serial.println("czerwony-1");
pwmred = 0;
pwmgreen = 0;
pwmblue = 0;
break;
case 12:
opcja = 1;
// Serial.println("czerwony-2");
pwmred = 0;
pwmgreen = 0;
pwmblue = 0;
break;
case 13:
opcja = 1;
// Serial.println("czerwony-3");
pwmred = 0; //kalibracja koloru
pwmgreen = 0;
pwmblue = 0;
break;
case 2:
opcja = 1;
// Serial.println("niebieski");
pwmred = 0;
pwmgreen = 0;
pwmblue = 0;
break;
case 21:
opcja = 1;
// Serial.println("niebieski-1");
pwmred = 0;
pwmgreen = 0;
pwmblue = 0;
break;
case 22:
opcja = 1;
// Serial.println("niebieski-2");
pwmred = 0;
pwmgreen = 0;
pwmblue = 0;
break;
case 23:
opcja = 1;
// Serial.println("niebieski-3");
pwmred = 0;
pwmgreen = 0;
pwmblue = 0;
break;
case 3:
opcja = 1;
pwmred = 0;
pwmgreen = 0;
pwmblue = 0;
// Serial.println("zielony");
break;
}
if (opcja != 0) {
Serial.println(pwmred);
Serial.println(pwmgreen);
Serial.println(pwmblue);
analogWrite(red, pwmred);
analogWrite(green, pwmgreen);
analogWrite(blue, pwmblue);
}
opcja = 0; x = 0;
}
void odczyt() {
if ( dane == "czerwony" ) {
x = 1;
}
if ( dane == "czerwony-1" ) {
x = 11;
}
if ( dane == "czerwony-2" ) {
x = 12;
}
if ( dane == "czerwony-3" ) {
x = 13;
}
if ( dane == "niebieski" ) {
x = 2;
}
if ( dane == "niebieski-1" ) {
x = 21;
}
if ( dane == "niebieski-2" ) {
x = 22;
}
if ( dane == "niebieski-3" ) {
x = 23;
}
if ( dane == "zielony" ) {
x = 3;
}
}
RE: Oświetlenie schodów - shalvan - 20-09-2015
Można też dodać 3 potencjometry podłączone do wejść analogowych arduino, dzięki którym można było by regulować czas zapalania, świecenia i gaszenia, oraz sterować ledami za pomocą PWM i np tranzystorów IRL540n ( w zależności od prądu oczywiście ) co dało by efekt płynnego zapalania się i gaszenia
RE: Oświetlenie schodów - adix - 20-09-2015
można to zrobić i nie tylko tak lecz to ma być elektronika dziś analogi giną wiec jak było by lepiej zmieniać to pilotem czy biegać z śrubokrętem
|