Arduino Polska Forum
Odbiornik IR- powiadomienia diodami LED - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Odbiornik IR- powiadomienia diodami LED (/watek-odbiornik-ir-powiadomienia-diodami-led)



Odbiornik IR- powiadomienia diodami LED - chesjo - 28-12-2023

Cześć,

Robię projekt odbierania sygnałów przez piloty posiadające nadajnik IR. Prawidłowo odbieram kody, lecz chciałem dodać powiadomienia diodami. Czerwona dioda sygnalizuje otrzymany już kod, natomiast zielona dioda sygnalizuje nowy kod. 
Sygnał jest podawany na wyjścia, lecz diody się nie świecą, sprawdzałem przykładając + z buzzera czy w ogóle podaje sygnał.


Dodam, że dopiero zaczynam przygodę z Arduino. Dołączam kod oraz schemat.

#include <IRremote.hpp>
int RECV_PIN = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;
int redPin = 6;
int greenPin = 3;

void setup()
{
Serial.begin(9600);
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // Start the receiver
irrecv.blink13(true);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  irrecv.enableIRIn();
}
void loop() {
if (IrReceiver.decode()) {
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); // Print "old" raw data
/* USE NEW 3.x FUNCTIONS */
IrReceiver.printIRResultShort(&Serial); // Print complete received data in one line
IrReceiver.printIRSendUsage(&Serial); // Print the statement required to send this data
IrReceiver.resume(); // Enable receiving of the next value

switch(&results){
          case 0xFB020707: //Keypad button "5"
          digitalWrite(redPin, HIGH);
          delay(2000);
          digitalWrite(redPin, LOW);
          }

        switch(&results){
          case 0xFB040707: //Keypad button "2"
          digitalWrite(greenPin, HIGH);
          delay(2000);
          digitalWrite(greenPin, LOW);
          }

        irrecv.resume();
}
}


Dziękuję za pomoc Smile


RE: Odbiornik IR- powiadomienia diodami LED - oscarX - 28-12-2023

(28-12-2023, 20:11)chesjo napisał(a): switch(&results)


Dlaczego tam używasz & ? To jest adres zmiennej - wartość stała. No i jakoś nie widze byś ustawiał zmienną results.


RE: Odbiornik IR- powiadomienia diodami LED - chesjo - 29-12-2023

(28-12-2023, 21:48)oscarX napisał(a):
(28-12-2023, 20:11)chesjo napisał(a): switch(&results)


Dlaczego tam używasz & ? To jest adres zmiennej - wartość stała. No i jakoś nie widze byś ustawiał zmienną results.
Coś pozmieniałem i mam takie coś, lecz teraz przy każdym nadanym sygnale przez pilot zapala się zielona dioda

Kod:
#include <IRremote.h>
int RECV_PIN = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;
int redPin = 6;
int greenPin = 3;

void setup()
{
Serial.begin(9600);
IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // zaczecie odbioru
irrecv.blink13(true);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  irrecv.enableIRIn();
}
void loop() {
if (IrReceiver.decode()) {
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); // wyswietlenie w monitorze kodow  */
IrReceiver.printIRResultShort(&Serial);
IrReceiver.printIRSendUsage(&Serial);
IrReceiver.resume();

    static unsigned long previousValue = 0xFD020707;
    if (results.value != previousValue) {
      // Nowy kod
      digitalWrite(redPin, LOW);    // Wyłącz diodę czerwoną
      digitalWrite(greenPin, HIGH);  // Włącz diodę zieloną

    

      // Zaktualizuj poprzednią wartość
      previousValue = results.value;
    } else {
      // Ten sam kod
      digitalWrite(greenPin, LOW);   // Wyłącz diodę zieloną
      digitalWrite(redPin, HIGH);    // Włącz diodę czerwoną
    }


        irrecv.resume();
}
}



RE: Odbiornik IR- powiadomienia diodami LED - kaczakat - 29-12-2023

Kod wstawiaj w znaczniki kod:
[attachment=1403]
 [attachment=1404]
Nie oczekuj, że ktoś będzie próbował oglądać taki obrazek i go odczytywać np. siedząc z telefonem, albo przepisywać z obrazka by zweryfikować jak to działa na innym sprzęcie.  


RE: Odbiornik IR- powiadomienia diodami LED - oscarX - 30-12-2023

(29-12-2023, 21:15)chesjo napisał(a): Coś pozmieniałem i mam takie coś, lecz teraz przy każdym nadanym sygnale przez pilot zapala się zielona dioda

Kod:
if (IrReceiver.decode()) {
    ....
}

W swoim poprzednim poście zwracałem uwagę, że zmienna results nie jest nigdzie ustawiana - zakładasz że pojawia się tam jakaś wartość, ale nigdzie nie widać podstawienia pod tą zmienną lub przekazania jej do jakiejs funkcji by ona wpisała tam wartość. Poszukałem przykładu podobnego do twojego kodu i znalazłem następującą konstrukcję:
Kod:
   if (irrecv.decode(&results)) {
   ....
}

Tutaj adres zmiennej results jest przekazywany do wywołania funkcji/metody decode - i to jest zrozumiałe - metoda ma wpisać swoje wyniki do zmiennej results. Chyba tego brakuje w twoim kodzie.


RE: Odbiornik IR- powiadomienia diodami LED - chesjo - 31-12-2023

Dzięki za pomoc, wystarczyło zmienić bibliotekę na starszą i jak na razie działa w miarę prawidłowo.