• 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
IR odczyt kodów z pilota i sterowanie silnikiem DC- problem
#1
Witajcie.

Jestem początkującym "zawodnikiem" jeśli chodzi o arduino. Tak naprawdę jest to mój drugi projekt z wykorzystaniem płytki. Do tej pory korzystałem z gotowych kodów gdzie modyfikowałem je na własne potrzeby i potrzeby projektu ( silniki servo). Tym razem mierzę się ze sterowaniem silnikiem DC i kontrolą go za pomocą pilota IR. Korzystam z silnika DC sterownika ULN2003, Odbiornika IR VS1838B oraz Arduino Nano. po spięciu wszystkiego użyłem kodu 
Kod:
#include <IRremote.h>

int RECV_PIN = 6;

IRrecv irrecv(RECV_PIN);

decode_results  results;

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

void loop() {
  if (irrecv.decode(&results))  {
  
    Serial.println(results.value, HEX);
    irrecv.resume();
  }
}
I tu ok do tego momentu jakby wszystko gra. Następnie odpaliłem monitor portu szeregowego żeby zczytać kody z przycisków pilota... Kody faktycznie się wyświetlają ale... Pilot od dvd - każde naciśnięcie tego samego przycisku generuje inny kod w monitorze... drugi pilot od po radia samochodowego (podobny do pilotów od sterowania ledami) - każdy przycisk wyrzuca ten sam kod przycisku... No lekko zbaraniałem... O ile przy pilotach od radia i ledów sytuacja jest taka sama i tu może być coś nie tak z pilotami o tyle pilot DVD i ten sam przycisk daje różne kody - co jest nielogiczne...
Wywalałem również z kodu wartość "HEX" żeby nie wyświetlał wartości szesnastkowo - nic to nie zmienia. 

Może ktoś coś podpowiedzieć co robię nie tak ?
 
Odpowiedź
#2
(21-03-2024, 08:27)dRoooopED napisał(a): Witajcie.

Pilot od dvd - każde naciśnięcie tego samego przycisku generuje inny kod w monitorze... drugi pilot od po radia samochodowego (podobny do pilotów od sterowania ledami) - każdy przycisk wyrzuca ten sam kod przycisku... No lekko zbaraniałem... O ile przy pilotach od radia i ledów sytuacja jest taka sama i tu może być coś nie tak z pilotami o tyle pilot DVD i ten sam przycisk daje różne kody - co jest nielogiczne...
Wywalałem również z kodu wartość "HEX" żeby nie wyświetlał wartości szesnastkowo - nic to nie zmienia. 

Może ktoś coś podpowiedzieć co robię nie tak ?

Piloty mogą w kodzie zaszywać licznik - by rozróżnić kolejne naciśnięcia klawisza od powtarzania jednego klawisza.
Wtedy część jest stałym kodem a część się zmienia.
Możesz wrzucić taką serie kodów (najlepiej w HEX).
 
Odpowiedź
#3
(21-03-2024, 14:33)oscarX napisał(a):
(21-03-2024, 08:27)dRoooopED napisał(a): Witajcie.

Pilot od dvd - każde naciśnięcie tego samego przycisku generuje inny kod w monitorze... drugi pilot od po radia samochodowego (podobny do pilotów od sterowania ledami) - każdy przycisk wyrzuca ten sam kod przycisku... No lekko zbaraniałem... O ile przy pilotach od radia i ledów sytuacja jest taka sama i tu może być coś nie tak z pilotami o tyle pilot DVD i ten sam przycisk daje różne kody - co jest nielogiczne...
Wywalałem również z kodu wartość "HEX" żeby nie wyświetlał wartości szesnastkowo - nic to nie zmienia. 

Może ktoś coś podpowiedzieć co robię nie tak ?

Piloty mogą w kodzie zaszywać licznik - by rozróżnić kolejne naciśnięcia klawisza od powtarzania jednego klawisza.
Wtedy część jest stałym kodem a część się zmienia.
Możesz wrzucić taką serie kodów (najlepiej w HEX).
Ok jak tylko będę w domu (pewnie wieczorem/w nocy będę walczył dalej). A co z samym kodem? Powinno być ok? Może ewentualnie ogarnąć pilot np od radia/tunera domowego? I to sprawdzić... Tak czy siak postaram się coś podesłać jak najszybciej.
 
Odpowiedź
#4
Biblioteki mają możliwość dekodowania różnych protokołów IR, np. popularne NEC, RC5, LG, Samsung. Jak nie wiesz jaki to protokół to wgrywasz ogólny kod z rozpoznawaniem protokołu, patrzysz co wypluwa, potem w ostatecznej wersji informujesz w szkicu, jak ma rozumieć przylatujący kod, czyli definiujesz protokół, to wtedy powinien już działać OK.
Popularne chińskie moduły pilota z diodą IR mają raczej wszystkie NEC, jak potrzebujesz wiele pilotów do jednego odbiornika to lepiej zainwestować 20 zł i kupić sobie parę takich samych (na Ali wychodzi 20pln za 5 z wysyłką).
Ten od radia to pewnie też NEC.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#5
Oto kilka kodów w HEX z jednego klawisza pilota DVD:
D8CCF55
906E0E7C
1B8A85E5
7D9CBC71
2DDCDFD
C452A71D
9292A051
 
Odpowiedź
#6
Dobra chyba już mam. Daje wartości takie same przy każdym kliknięciu i inne dla wszystkich klawiszy.
Kod:
#include<IRremote.h>

IRrecv IR (2);



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

void loop() {
if(IR.decode()){
  Serial.println(IR.decodedIRData.decodedRawData,DEC);
  delay(1000);
  IR.resume();
}
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości