• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z programem.
#1
Witam,
Zrobiłem program który zapala i gasi diodę na pilota i chciałem żeby też działało to jednocześnie na zwykłym switch'u.
np. Jak włączę na pilocie żebym mógł wyłączyć na switch'u i na odwrót. Napisałem program jednak nie działa on w 100%. Dioda na pilot działa ale sam switch nie działa. Gdzie jest tu błąd?
Kod:
#include <IRremote.h>
int before;
int out=5;
int RECV_PIN = 11;
int switch2 = 3;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup(){
 irrecv.enableIRIn();
 before=0;
 pinMode(out,OUTPUT);
 pinMode(switch2,INPUT_PULLUP);
}

void loop() {
 if (irrecv.decode(&results)) {

 if (results.value==0xFF6897){
   if(before==0){
     digitalWrite(out,HIGH);
     before=1;
   }
   else{
     digitalWrite(out,LOW);
     before=0;
 }}

 if (switch2 == HIGH) {
  if(before==1){
   digitalWrite(out, HIGH);
   before=0;
  }
  else{
   digitalWrite(out, LOW);
   before=1;
 }}
 
 
 
 irrecv.resume();
}}
 
Odpowiedź
#2
Nie będę pisał co jest nie tak bo w sumie to cały kod przycisku jest zły , sprawdź poniższy czy działa .

Kod:
#include <IRremote.h>
int before;
int out=5;
int RECV_PIN = 11;
int switch2 = 3;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup(){
irrecv.enableIRIn();
before=0;
pinMode(out,OUTPUT);
pinMode(switch2,INPUT_PULLUP);
}

void loop() {
if (irrecv.decode(&results) or digitalRead(switch2) == LOW) {

if (results.value==0xFF6897 or digitalRead(switch2) == LOW){
 
  if(before==0){
    digitalWrite(out,HIGH);
    before=1;
    delay(200);}
 
  else{
   
    digitalWrite(out,LOW);
    before=0;
    delay(200);}
  }
  irrecv.resume();
}

}


Dublujesz tematy w różnych działach , tylko po co . Ze względu że adix nic merytorycznego nie napisał tamten temat usuwam.
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
(29-09-2016, 07:17)JasQ napisał(a): Nie będę pisał co jest nie tak bo w sumie to cały kod przycisku jest zły , sprawdź poniższy czy działa .

Kod:
#include <IRremote.h>
int before;
int out=5;
int RECV_PIN = 11;
int switch2 = 3;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup(){
irrecv.enableIRIn();
before=0;
pinMode(out,OUTPUT);
pinMode(switch2,INPUT_PULLUP);
}

void loop() {
if (irrecv.decode(&results) or digitalRead(switch2) == LOW) {

if (results.value==0xFF6897 or digitalRead(switch2) == LOW){
 
  if(before==0){
    digitalWrite(out,HIGH);
    before=1;
    delay(200);}
 
  else{
   
    digitalWrite(out,LOW);
    before=0;
    delay(200);}
  }
  irrecv.resume();
}

}


Pilot działa, ale gdy zwieram switch to dioda się mruga. A to ma być przełącznik a nie "tact switch"
 
Odpowiedź
#4
Proszę bardzo

Kod:
#include <IRremote.h>
int before;
int out=5;
int RECV_PIN = 11;
int switch2 = 3;

IRrecv irrecv(RECV_PIN);

decode_results results;

byte oldstate;
byte state;

void setup(){
irrecv.enableIRIn();
before=0;
pinMode(out,OUTPUT);
pinMode(switch2,INPUT_PULLUP);

state = digitalRead(switch2);
oldstate = state;
}

void loop() {
  
state = digitalRead(switch2);
  
if (irrecv.decode(&results) or state!=oldstate) {

if (results.value==0xFF6897 or state!=oldstate){

  if(before==0){
    digitalWrite(out,HIGH);
    before=1;
    delay(200);}

  else{
  
    digitalWrite(out,LOW);
    before=0;
    delay(200);}
  }
  irrecv.resume();
  oldstate=state;
}

}

edyta : sprawdziłem , na uno działa jak zakładałeś z przełącznika i pilota .
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#5
Dziękuje Ci bardzo! +REP
 
Odpowiedź
#6
Jasq fajnie ale jak będę miał wciśnięty pilot a z jakaś inna funkcja np podnieś roleta a w tym czasie mam kolego będzie chcieć zapalić światło jak twój program się zachowa??
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#7
Nie rozpatrujemy innego programu , problem dodtyczył tego kodu . Funkcja pilota i przycisku wywoływana jest przez if or więc zasadniczo nic to nie zmienia . Jak dodasz inny kod pilota do innej funkcji w której nie zdeklarujesz przycisku to zadziała normalnie .
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości