Arduino Polska Forum

Pełna wersja: Z biblioteką IRremote działa, z biblioteką RC5 już nie...
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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-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.

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-robot...c5-id19364

[Obrazek: r3IwVw7.png]
Najlepsza biblioteka jaka znam jest pod adresem: http://www.mikrocontroller.net/articles/IRMP
Obsługuje bardzo dużo standardów i wiele uC.
(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);
 }
}
(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).
(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.
(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?
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.