01-06-2019, 15:31
Witam
Na wstępie chciałbym zaznaczyć iż jestem nowym użytkownikiem na tym forum, jednocześnie nie mam dużego doświadczenia w programowaniu (jestem samoukiem z YT elektroprzewodnik i elektromaras) jednak mimo to udało mi się stworzyć kilka projektów. Niestety tym razem walczę ze sterownikiem do oświetlenia led do kuchni sterowanego z pilota od tv. Póki co udało mi się zbudować sterownik włączanie i wyłączanie kanałów z pilota działa, przyciemnianie i rozjaśnianie też działa. Niestety nie daje rady z przyciskiem który ma włączać i wyłączać kanał z ledami pod szafkami (dodatkowe sterowanie jednym kanałem poza pilotem). Problem polega na tym iż fragment kodu obsługi przycisku jest w jakiś sposób pomijany.
Tutaj wstawiam cały kod.
Dodam jeszcze to iż fragmen kodu:
int getIRKey() .....
jest to gotowiec z internetu pilota czyta i przypisuje przyciskom wartości niestety przez niego nie działa przcisk
jak wprowadze przróbkę typu
void loop() {
int key = 0;
//int key = getIRKey();
zamiast
void loop() {
int key = getIRKey();
wtedy przycisk działa niestety nie reaguje we właściwym kodzie
proszę o pomoc już kilka dni z tym walczę sam i doszedłem do etapu gdzie dalej sam nie dam rady
pozdrawiam
z góry dzięki za pomoc
Na wstępie chciałbym zaznaczyć iż jestem nowym użytkownikiem na tym forum, jednocześnie nie mam dużego doświadczenia w programowaniu (jestem samoukiem z YT elektroprzewodnik i elektromaras) jednak mimo to udało mi się stworzyć kilka projektów. Niestety tym razem walczę ze sterownikiem do oświetlenia led do kuchni sterowanego z pilota od tv. Póki co udało mi się zbudować sterownik włączanie i wyłączanie kanałów z pilota działa, przyciemnianie i rozjaśnianie też działa. Niestety nie daje rady z przyciskiem który ma włączać i wyłączać kanał z ledami pod szafkami (dodatkowe sterowanie jednym kanałem poza pilotem). Problem polega na tym iż fragment kodu obsługi przycisku jest w jakiś sposób pomijany.
Tutaj wstawiam cały kod.
Kod:
int ir_pin = 2; //Sensor pin 1 wired through a 220 ohm resistor //"Ready to Recieve" flag, not needed but nice
int debug = 0; //Serial connection must be started to debug
int start_bit = 2000; //Start bit threshold (Microseconds)
int bin_1 = 1000; //Binary 1 threshold (Microseconds)
int bin_0 = 400; //Binary 0 threshold (Microseconds)
void setup() {
pinMode(3, OUTPUT);
pinMode(5,OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, INPUT);
pinMode(ir_pin, INPUT);
}
boolean jeden = 0;
boolean dwa = 0;
boolean trzy = 0;
boolean cztery = 0;
int czas= 200;
int jasnosc=255;
int stare=255;
void loop() {
int key = getIRKey();
int guzik = guzik2();
if (key == 146 & jasnosc <= 255)
{
jasnosc=jasnosc+50;
delay(czas);
}
if (key == 146 & jasnosc >= 255)
{
jasnosc=255;
delay(czas);
}
if (key == 147 & jasnosc >= 5)
{
jasnosc=jasnosc-50;
delay(czas);
}
if (key == 147 & jasnosc <=5)
{
jasnosc=5;
delay(czas);
}
if (stare == jasnosc)
{
if (key == 128)
{
jeden=!jeden;
key = 0;
delay(czas);
}
if (jeden == 0)
{
analogWrite(3,0);
analogWrite(5,0);
}
if (jeden == 1)
{
analogWrite(3,stare);
analogWrite(5,stare);
}
if (key == 129)
{
dwa=!dwa;
key = 0;
delay(czas);
}
if (dwa == 0)
{
analogWrite(6,0);
analogWrite(9,0);
}
if (dwa == 1)
{
analogWrite(6,stare);
analogWrite(9,stare);
}
if (key == 130)
{
trzy=!trzy;
key = 0;
delay(czas);
}
if (trzy == 0)
{
analogWrite(10,0);
}
if (trzy == 1)
{
analogWrite(10,stare);
}
if (key == 131)
{
cztery=!cztery;
key = 0;
delay(czas);
}
if (cztery == 0)
{
analogWrite(11,0);
}
if (cztery == 1)
{
analogWrite(11,stare);
}
}
if (stare != jasnosc)
{
if (key == 128)
{
jeden=!jeden;
key = 0;
delay(czas);
}
if (jeden == 0)
{
analogWrite(3,0);
analogWrite(5,0);
}
if (jeden == 1)
{
analogWrite(3,jasnosc);
analogWrite(5,jasnosc);
}
if (key == 129)
{
dwa=!dwa;
key = 0;
delay(czas);
}
if (dwa == 0)
{
analogWrite(6,0);
analogWrite(9,0);
}
if (dwa == 1)
{
analogWrite(6,jasnosc);
analogWrite(9,jasnosc);
}
if (key == 130)
{
trzy=!trzy;
key = 0;
delay(czas);
}
if (trzy == 0)
{
analogWrite(10,0);
}
if (trzy == 1)
{
analogWrite(10,jasnosc);
}
if (key == 131)
{
cztery=!cztery;
key = 0;
delay(czas);
}
if (cztery == 0)
{
analogWrite(11,0);
}
if (cztery == 1)
{
analogWrite(11,jasnosc);
}
}
if (key == 149)
{
jeden=0;
dwa=0;
trzy=0;
cztery=0;
}
if (key == 165)
{
jeden=1;
dwa=1;
trzy=1;
cztery=1;
}
}
}
int getIRKey() {
int data[12];
while(pulseIn(ir_pin, LOW) < 2200) { //Wait for a start bit
}
data[0] = pulseIn(ir_pin, LOW); //Start measuring bits, I only want low pulses
data[1] = pulseIn(ir_pin, LOW);
data[2] = pulseIn(ir_pin, LOW);
data[3] = pulseIn(ir_pin, LOW);
data[4] = pulseIn(ir_pin, LOW);
data[5] = pulseIn(ir_pin, LOW);
data[6] = pulseIn(ir_pin, LOW);
data[7] = pulseIn(ir_pin, LOW);
data[8] = pulseIn(ir_pin, LOW);
data[9] = pulseIn(ir_pin, LOW);
data[10] = pulseIn(ir_pin, LOW);
data[11] = pulseIn(ir_pin, LOW);
for(int i=0;i<11;i++) { //Parse them
if(data[i] > bin_1) { //is it a 1?
data[i] = 1;
} else {
if(data[i] > bin_0) { //is it a 0?
data[i] = 0;
}
}
}
int result = 0;
int seed = 1;
for(int i=0;i<11;i++) { //Convert bits to integer
if(data[i] == 1) {
result += seed;
}
seed = seed * 2;
}
return result; //Return key number
}
int getIRKey() .....
jest to gotowiec z internetu pilota czyta i przypisuje przyciskom wartości niestety przez niego nie działa przcisk
jak wprowadze przróbkę typu
void loop() {
int key = 0;
//int key = getIRKey();
zamiast
void loop() {
int key = getIRKey();
wtedy przycisk działa niestety nie reaguje we właściwym kodzie
proszę o pomoc już kilka dni z tym walczę sam i doszedłem do etapu gdzie dalej sam nie dam rady
pozdrawiam
z góry dzięki za pomoc