• 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
Z biblioteką IRremote działa, z biblioteką RC5 już nie...
#1
Witam.

Najbardziej podoba mi się program z tego kursu, ponieważ do osobnych zmiennych ładowane są adres, komenda i toggle:

https://forbot.pl/blog/kurs-budowy-robotow-zdalne-sterowanie-ir-rc5-id19364

Problem w tym, że program ten nie chce u mnie ruszyć, ani na UNO ani na NANO. Brak reakcji na naciskane klawisze pilota.

Bezproblemowo działa natomiast program stąd:
http://roboblog.eu/2016/02/26/arduino-poradnik/

Podsumowując - przykład z wykorzystaniem IRremote działa elegancko, natomiast przykład z RC5 zadziałać już nie chce. Zastanawiam się w czym rzecz.

Sprawdzi ktoś ten szkic? Działa wam poprawnie?
https://forbot.pl/blog/kurs-budowy-robotow-zdalne-sterowanie-ir-rc5-id19364

[Obrazek: r3IwVw7.png]
 
Odpowiedź
#2
Najlepsza biblioteka jaka znam jest pod adresem: http://www.mikrocontroller.net/articles/IRMP
Obsługuje bardzo dużo standardów i wiele uC.
- uC: ARM Angel , AVR, Z8, PIC, 8051 / CPU: MC680x0  , Z-80, 6502
- CPLD, FPGA, GAL
- GSM, ISDN, ETH, USB, RS232C/485/422
- C, ASM, CUPL, PHP, BASIC C-64

http://er-mik.prv.pl/projekty_avt.php * http://er-mik.prv.pl/ * http://kolejki.prv.pl/

KA-NUCLEO-F411CE Idea , ESP32, Mega2560, UNO PLUS
 
Odpowiedź
#3
(11-07-2018, 14:22)mes mariusz napisał(a): Bezproblemowo działa natomiast program stąd:
http://roboblog.eu/2016/02/26/arduino-poradnik/

Ponieważ pierwszą rzeczą jest odczytanie kodów przycisków pilota i  przypisanie ich do instrukcji sterujących silnikami.

(11-07-2018, 14:22)mes mariusz napisał(a): Najbardziej podoba mi się program z tego kursu, ponieważ do osobnych zmiennych ładowane są adres, komenda i toggle:

https://forbot.pl/blog/kurs-budowy-robot...c5-id19364

Problem w tym, że program ten nie chce u mnie ruszyć, ani na UNO ani na NANO. Brak reakcji na naciskane klawisze pilota.

Ponieważ, Twój pilot nie wysyła kodów z standardzie RC5. A jeśli wysyła, to inne niż te wykorzystane w programie.
Na wyżej wymienionej stronie jest program do czytania pilotów pracujących w standardzie RC5.
Wgraj go do Arduino i sprawdź kody, które wysyłasz, a potem je wykorzystaj w docelowym programie.

Kod:
#define TSOP_PIN 3

#include <RC5.h>
RC5 rc5(TSOP_PIN); //Informacja o podłączeniu odbiornika TSOP

//Zmienne dla RC5
byte address;
byte command;
byte toggle;

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

void loop() {
 //Jeśli odebrano komendę
 if (rc5.read(&toggle, &address, &command))
 {
   Serial.print("A:");
   Serial.print(address);
   Serial.print(" K:");
   Serial.print(command);
   Serial.print(" T:");
   Serial.println(toggle);
 }
}
Nie trzeba dawać punktów za pomoc, ale jeśli problem został rozwiązany, proszę o tym poinformować w ostatnim poście.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#4
(13-07-2018, 07:07)Robson Kerman napisał(a):
(11-07-2018, 14:22)mes mariusz napisał(a): Bezproblemowo działa natomiast program stąd:
http://roboblog.eu/2016/02/26/arduino-poradnik/

Ponieważ, Twój pilot nie wysyła kodów z standardzie RC5. A jeśli wysyła, to inne niż te wykorzystane w programie.
Na wyżej wymienionej stronie jest program do czytania pilotów pracujących w standardzie RC5.
Wgraj go do Arduino i sprawdź kody, które wysyłasz, a potem je wykorzystaj w docelowym programie.

Kod:
#define TSOP_PIN 3

#include <RC5.h>
RC5 rc5(TSOP_PIN); //Informacja o podłączeniu odbiornika TSOP

//Zmienne dla RC5
byte address;
byte command;
byte toggle;

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

void loop() {
 //Jeśli odebrano komendę
 if (rc5.read(&toggle, &address, &command))
 {
   Serial.print("A:");
   Serial.print(address);
   Serial.print(" K:");
   Serial.print(command);
   Serial.print(" T:");
   Serial.println(toggle);
 }
}



Albo ja coś napisałem nie jasno, albo Ty nie nie przeczytałeś wystarczająco uważnie. Nie mówimy teraz o sterowaniu konkretnej zabawki konkretnymi kodami. Mówimy o odczytywaniu napływających kodów i wysyłaniu ich po porcie szeregowym na terminal. 

Podczas użycia biblioteki  IRremote wszystko działa elegancko (kody wysyłane i poprawnie wyświetlane)
Podczas użycia biblioteki RC5 cisza. Żadne kody nie przychodzą na monitor terminala.

Konfiguracja hardware identyczna. Setup zgodny z konfiguracją (odbiornik IR wpięty do pinu zgodnego z setupem).
 
Odpowiedź
#5
(13-07-2018, 08:21)mes mariusz napisał(a): Podczas użycia biblioteki  IRremote wszystko działa elegancko (kody wysyłane i poprawnie wyświetlane)
Podczas użycia biblioteki RC5 cisza. Żadne kody nie przychodzą na monitor terminala.

Użyj tego co działa chyba, ze chcesz chcesz ratować Świat, to znajdź przyczynę błędu i opisz na forum.
- uC: ARM Angel , AVR, Z8, PIC, 8051 / CPU: MC680x0  , Z-80, 6502
- CPLD, FPGA, GAL
- GSM, ISDN, ETH, USB, RS232C/485/422
- C, ASM, CUPL, PHP, BASIC C-64

http://er-mik.prv.pl/projekty_avt.php * http://er-mik.prv.pl/ * http://kolejki.prv.pl/

KA-NUCLEO-F411CE Idea , ESP32, Mega2560, UNO PLUS
 
Odpowiedź
#6
(13-07-2018, 08:21)mes mariusz napisał(a): Albo ja coś napisałem nie jasno, albo Ty nie nie przeczytałeś wystarczająco uważnie. Nie mówimy teraz o sterowaniu konkretnej zabawki konkretnymi kodami. Mówimy o odczytywaniu napływających kodów i wysyłaniu ich po porcie szeregowym na terminal. 

Podczas użycia biblioteki  IRremote wszystko działa elegancko (kody wysyłane i poprawnie wyświetlane)
Podczas użycia biblioteki RC5 cisza. Żadne kody nie przychodzą na monitor terminala.

Kurczę, no jaki ze mnie niewystarczająco uważny czytelnik.
Przeczytałem więc jeszcze raz Twój pierwszy post i no niestety, dowiedziałem się że,

mes mariusz napisał(a):Problem w tym, że program ten nie chce u mnie ruszyć, ani na UNO ani na NANO.

Piszesz, że program nie chce ruszyć.
Nie piszesz, że:

mes mariusz napisał(a):Żadne kody nie przychodzą na monitor terminala.

O monitorze piszesz dopiero w ostatnim poście.

A może nie przychodzą na monitor terminala, ponieważ w kodzie programu nie ma ani linijki na temat wysyłania tych kodów na Serial?
Nie trzeba dawać punktów za pomoc, ale jeśli problem został rozwiązany, proszę o tym poinformować w ostatnim poście.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#7
Różnica między tymi kodami:
Kod:
#include <IRremote.h>
#define irPin 8
IRrecv irrecv(irPin);
decode_results results;

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

void loop() {
  if (irrecv.decode(&results)) {
     Serial.println(results.value, HEX);
     delay(250);
     irrecv.resume();
     }
}
i
Kod:
#define TSOP_PIN 3

#include <RC5.h>
RC5 rc5(TSOP_PIN); //Informacja o podłączeniu odbiornika TSOP

//Zmienne dla RC5
byte address;
byte command;
byte toggle;

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

void loop() {
 //Jeśli odebrano komendę
 if (rc5.read(&toggle, &address, &command))
 {
   Serial.print("A:");
   Serial.print(address);
   Serial.print(" K:");
   Serial.print(command);
   Serial.print(" T:");
   Serial.println(toggle);
 }
}
jest przecież widoczna w pierwszych linijkach, na stronie Forbot wymagany jest jakiś pilot RC5, prawdopodobnie jakiś pilot Philipsa byłby OK. Te z Chin "arduinowe" najczęściej mają kodowanie NEC, nawet jeśli czasami są opisane jako RC5. Dlatego kod z Forbota nie działa, a drugi działa, bo nie oczekuje konkretnego kodu, dekoduje co przyleci.
Wklejaj tu kody, oczekujesz, że ktoś pomoże, a tobie nie chce się zadać pytania, ganiasz nasz po jakiś stronach i potem np. tu nie wiadomo o który kod Ci chodzi, jest tam przecież kilka. Dalej nie jestem pewien czy o te kody chodziło, ale zwykle się dobrze domyślam.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości