(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.