• 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 ir
#11
niestety dalej coś jest nie tak. kody z pilota rc5 odczytuję poniższym programem lecz dalej nie mogę ich wykorzystać chcąc chociażby zapalić diodę 

Kod:
#include <IRremote.h>
#define irPin 2
IRrecv irrecv(irPin);
decode_results results;

void setup() {
  Serial.begin(19200);
  irrecv.enableIRIn();
}

void loop() {
  if (irrecv.decode()) {
      Serial.print("0x");
      Serial.println(irrecv.decodedIRData.decodedRawData, HEX);
      delay(250);
      irrecv.resume();
      }
}

próbowałem zgodnie z zaleceniem w następujący sposób przypisac kod ir do nazwy garaż lecz nie reaguje, monitor portu i płytka na wciskanie danego przycisku, poniżej program którym probowałem użyć kodu:

Kod:
#include <IRremote.h>
#define DECODE_NEC
#define DECODE_RC5
#define irPin 2
IRrecv irrecv(irPin);
decode_results results;

void setup() {
  Serial.begin(19200);
  irrecv.enableIRIn();
}

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

      switch (results.value) {
        case 0xF00F5E87:
            Serial.println("garaz");
            break;

        }

  irrecv.resume();
  }
}

jeśli to możliwe proszę o pomoc w poprawieniu kodu a na millis jeszcze chyba za wcześnie  Big Grin
 
Odpowiedź
#12
Program jest OK, działa, nawet podłączyłem u siebie bo nie korzystam z tej biblioteki. Jak odczytasz kod to sobie przypisujesz do zmiennej by już nie odczytywać z IR.
Nie wiem jak chcesz zaświecić leda, skoro nie masz żadnego w programie?
Zmieniłem kod na swój do włączania, dodałem by drukował wszystkie, efy to po prostu przytrzymanie przycisku, komenda  "powtórz", led ustawiona na pinie 13, czyli wbudowano w NANO, protokół NEC.
Kod:
#include <IRremote.h>
#define irPin 2
#define DECODE_NEC
const uint8_t led=13;
IRrecv irrecv(irPin);
decode_results results;

void setup() {
  Serial.begin(115200);
  irrecv.enableIRIn();
}

void loop() {
  if (irrecv.decode(&results)) {
     uint32_t wynik = results.value;
      Serial.println(wynik,16);
        switch (wynik) {
        case 0xFFA25D:
            Serial.println("garaz");
            digitalWrite(led, ! digitalRead(led));
            break;
        }

  irrecv.resume();
  
  }
}


Kod:
21:11:28.216 -> FFFFFFFF
21:11:28.293 -> FFFFFFFF
21:11:28.444 -> FFFFFFFF
21:11:28.541 -> FFFFFFFF
21:11:28.641 -> FFFFFFFF
21:11:28.757 -> FFFFFFFF
21:11:28.841 -> FFFFFFFF
21:11:29.643 -> FFA25D
21:11:29.643 -> garaz
21:11:29.696 -> FFFFFFFF
21:11:29.796 -> FFFFFFFF
21:11:29.943 -> FFFFFFFF
21:11:30.043 -> FFFFFFFF
21:11:30.143 -> FFFFFFFF
21:11:30.271 -> FFFFFFFF
21:11:30.790 -> FFA25D
21:11:30.790 -> garaz
21:11:30.834 -> FFFFFFFF
21:11:30.975 -> FFFFFFFF
21:11:31.059 -> FFFFFFFF
21:11:31.197 -> FFFFFFFF
21:11:31.297 -> FFFFFFFF
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#13
jednak nic z tego kod odczytuję programem poniżej : 
Kod:
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;

void setup() {
   Serial.begin(19200);
   irrecv.enableIRIn();
}

void loop() {
   if (irrecv.decode()) {
      Serial.print("0x");
      Serial.println(irrecv.decodedIRData.decodedRawData, HEX);
      delay(250);
      irrecv.resume();
      }
}
wartości jakie otrzymuje :
Kod:
0x97680707
0x9D620707
0x9D620707
0x97680707
0xFB045E87
0xF7085E87
i tutaj zamyka się wszystko ponieważ nie działa mi żaden program którego chciałbym użyć żeby załączyć stycznik na pinie 7 a przykładowo chciałbym użyć kodu 0x97680707. Kiedy wgram program i zadam wartość np:0x97680707 to port szeregowy odczytuje i tak z każdego przycisku pilota FFFFFFFFF. Nie mam pojęcia co może być udało mi się jeszcze coś takiego wyciągnąć z pilota z simplereciver: 
Kod:
Protocol=NEC Address=0x5E87 Command=0x32 Raw-Data=0xCD325E87 32 bits LSB first
Send with: IrSender.sendNEC(0x5E87, 0x32, <numberOfRepeats>);
 
Odpowiedź
#14
#define DECODE_NEC?

Dlaczego nie wykorzystasz kodu kolegi kaczakat? Wystarczy swoich case'ów trochę dodać i powinno być cacy.
 
Odpowiedź
#15
(20-02-2024, 18:19)MadMrQ napisał(a): #define DECODE_NEC?

Dlaczego nie wykorzystasz kodu kolegi kaczakat? Wystarczy swoich case'ów trochę dodać i powinno być cacy.
Czy używam #decode NEC czy nie to odczytać kod odczytam ale nic dalej, oczywiście że próbowałem program od kolegi kaczakat lecz tylko wartości ffffffff, robiłem reinstal Arduino ide od nowa biblioteki ale nic to nie pomaga widocznie robię błąd w programie gdzieś
 
Odpowiedź
#16
(20-02-2024, 18:30)Mati94 napisał(a):
(20-02-2024, 18:19)MadMrQ napisał(a): #define DECODE_NEC?

Dlaczego nie wykorzystasz kodu kolegi kaczakat? Wystarczy swoich case'ów trochę dodać i powinno być cacy.
Czy używam #decode NEC czy nie to odczytać kod odczytam ale nic dalej, oczywiście że próbowałem program od kolegi kaczakat lecz tylko wartości ffffffff, robiłem reinstal Arduino ide od nowa biblioteki ale nic to nie pomaga widocznie robię błąd w programie gdzieś

To pokaż program, który nie działa.

Wiem, że arduino robi dziwne machloje z kodem, który kompiluje, ale wydaje mi się dziwne robienie polecenia #define w głównym module w celu zmiany sposobu dekodowania przez bibliotekę. Przecież każdy plik kompilowany jest osobno . Mogę wyobrazić sobie jakieś sięganie prawą ręką do lewego ucha z kodem, ale o ile dobrze sprawdziłem takie definki nie są jakoś "eksportowane" na zewnątrz. Albo trzeba to gdzieś umieścić w opcjach kompilacji (#define można zastąpić opcją w wywołaniu kompilatora) albo trzeba to dać przed #include - wtedy może jakoś wpłynąć na wczytaną treść pliku.
 
Odpowiedź
#17
Pokazałeś kod, w którym nie masz zdefiniowanego żadnego protokołu, ja mam NEC, bo taki pilot mialem.
Nie pokazujesz kodu z tym stycznikiem na pinie 7.
Jak jest tak bardzo tajny to tak będziemy pisać do wiosny.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#18
to jeszcze raz od początku. pierwszym programem ustalam kod przycisku pilota (udaje się jak na screenie)  . drugim chcę nadać nazwę kodu sygnałowego lecz po wgraniu drugiego programu już przestaje pilot reagować i nic sie nie dzieje. dołączam screeny   dodam że w  if (irrecv.decode()) wstawiając w nawias wartość &results przestaje odczytywać kod sygnału a zaczyna 0xFFFFFFFF oraz program od kaczakat który od początku pokazuje 0xFFFFF załączam screen 

program 1 (załączony screen) :

Kod:
#include <IRremote.h>
#define irPin 2
#define DECODE_NEC
IRrecv irrecv(irPin);
decode_results results;

void setup() {
   Serial.begin(9600);
   irrecv.enableIRIn();
}

void loop() {
   if (irrecv.decode()) {
      Serial.print("0x");
      Serial.println(irrecv.decodedIRData.decodedRawData, HEX);
      irrecv.resume();
      }
}


program 2 po wgraniu którego brak jakiejkolwiek reakcji) : nawet wpisując w if (irrecv.decode()) results
Kod:
#include <IRremote.h>
#define irPi 2
#define DECODE_NEC
IRrecv irrecv(irPin);
decode_results results;

void setup() {
   Serial.begin(9600);
   irrecv.enableIRIn();
}

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

      switch (results.value) {
         case 0x27D3B510:
            Serial.println("garaz");
            break;

         }

   irrecv.resume();
   }
}


Załączone pliki Miniatury
           
 
Odpowiedź
#19
Pozwolę sobie wkleić to, co najprawdopodobniej wypluwa twoje IDE:
**************************************************************************************************
Thank you for using the IRremote library!
It seems, that you are using a old version 2.0 code / example.
This version is no longer supported!
Please use one of the new code examples from the library,
available at "File > Examples > Examples from Custom Libraries / IRremote".

Start with the SimpleReceiver or SimpleSender example.

The examples are documented here:
https://github.com/Arduino-IRremote/Ardu...is-library
A guide how to convert your 2.0 program is here:
https://github.com/Arduino-IRremote/Ardu...4x-version

Thanks
**************************************************************************************************
 
Odpowiedź
#20
Dziękuję wszystkim za pomoc, udało się rozwiązać problem przez zainstalowanie starej wersji biblioteki IREMOTE 2.4.0 wszystko i każdy pilot już działa. jak już tutaj jesteśmy to może zadam pytanie czy można jednocześnie wgrać dwa programy tzn jeden żebym obsługiwał styczniki a drugi żeby podłączone były czujniki ruchu i działały w automacie?
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości