Skocz do zawartości

Funkcja IrReceiver.begin(); powoduje ,,wyłączenie" części silników


BeeKeyPro

Pomocna odpowiedź

Witam.

Robię auto na pilota. Używam sterownika silników L293D oraz Arduino UNO. Problem polega na tym, że gdy wgrywam ten kod:

#include <IRremote.hpp>
#include <AFMotor.h>

AF_DCMotor motorM1(1);
AF_DCMotor motorM2(2);
AF_DCMotor motorM3(3);
AF_DCMotor motorM4(4);

const int RECV_PIN = A0;
int speed=200;

void setup() {
  IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);
  motorM1.setSpeed(speed);
  motorM2.setSpeed(speed);
  motorM3.setSpeed(speed);
  motorM4.setSpeed(speed);
}

void loop() {
  motorM1.run(FORWARD);
  motorM2.run(FORWARD);
  motorM3.run(FORWARD);
  motorM4.run(FORWARD);
}

to kręci się tylko prawa strona silników (2 silniczki), a jak wgrywam ten sam kod, ale bez funkcji:

IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);

to kręcą się wszystkie silniki - czyli auto jedzie w przód. Próbowałem już zmiany pinu RECV_PIN na inne, ale to nie poskutkowało. Wszystko jest dobrze popodpinane (motor driver wpięty w Arduino), a OUT odbiornika do pinu A0. Odbiornik IR na 100% sprawny. Dlaczego takie coś ma miejsce? Jak to naprawić?

Z góry dziękuje za pomoc!

Edytowano przez BeeKeyPro
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Samemu udało mi się znaleźć rozwiązanie. Obie biblioteki używały tego samego ,,timera". Musiałem wejść w plik konfiguracyjny biblioteki IRRemote i zmienić używany timer. Mam nadzieje że to oto chodziło i że nie wyniknie z tego inna zła rzecz. 😄 

  • Lubię! 2
Link do komentarza
Share on other sites

(edytowany)

@Treker Jasne. Wszystko co musiałem zrobić to:

  1. Wejść w tą ścieżkę C:\Users\NAZWA UŻYTKOWNIKA\Documents\Arduino\libraries\IRremote\src\private
  2. Otworzyć plik IRTimer.hpp za pomocą notatnika
  3. Usunąć te dwa znaki ,//' które znajdowały się przed #define IR_USE_AVR_TIMER1
  4. Zapisać zmiany

To wszystko. 😄 

Edytowano przez BeeKeyPro
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.