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;
}
}