• 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
Sterowanie Arduino za pomocą aparatury RC
#1
Cześć wszystkim,

zaprojektowałem system oświetlenia do samolotu RC, jednak chciałbym mieć możliwość przełączenia trybów oświetlenia (np. lądowanie / lot) przez aparaturę RC sterującą samolotem. Czy istnieje jakieś rozwiązanie by z odbiornika poprowadzić sygnał do Arduino, który by warunkował zmianę trybu oświetlenia?

Mam nadzieję, że w miarę sensownie sformułowałem swoje pytanie i będę wdzięczny za wszelką pomoc. Posiadam Arduino Uno.
 
Odpowiedź
#2
to zalezy czy w RC masz wolne kanały
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#3
(08-07-2020, 17:37)Jarewa0606 napisał(a): to zalezy czy w RC  masz wolne kanały

Tak, mam wolny kanał. Interesuje mnie jedynie sposób poprowadzenia sygnału z odbiornika w modelu do Arduino, za pomocą którego mógłbym sterować trybem oświetlenia.

Czy wystarczy poprowadzić jedynie połączenie z pinu sygnałowego z odbiornika?
 
Odpowiedź
#4
Podaj co to za model odbiornika i który kanał wolny...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#5
Odbiornik to FlySky fs-ia10b
Kanały wolne 6 - 10

Czy wystarczy poprowadzenie pinu sygnałowego i masy? Czy sygnał w takim przypadku do Rx na Arduino?
 
Odpowiedź
#6
To teraz jeszcze powiedz jak te światła włączasz w arduino i co dokładnie ardunio robi...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#7
Obecnie mam napisane dwa osobne kody z dwoma pętlami z różnymi trybami świecenia (przyjmijmy, że jeden tryb do lotu, drugi lądowania), które będą połączone po rozwiązaniu problemu. Potrzebuję jedynie sygnał z odbiornika, który by czytało Arduino i decydowało przez if, który fragment kodu będzie realizowany.
Mam wrażenie, że nie do końca zrozumiałem Twoje pytanie w kontekście tego problemu. Jeśli mam coś doprecyzować daj znać.
 
Odpowiedź
#8
Z odbiornika do Arduino dajesz sygnał i masę.
Ten sygnał to zwykłe PWM, chociaż modelarze twierdzą że jest niezwykły i nazywają go PPM, choć zdarza się też PCM i inne.
Albo z nadajnika do odbiornika wędruje sygnał PPM itp. a do serwa z odbiornika PWM.
No ale koniec końców, do Arduino dochodzi sygnał PWM i dobrze by było wiedzieć jaka jest długość impulsu.
Jeśli impuls trwa około 1ms, to serwo jest ustawiane na 0°, a jeśli 2ms to 180°.
Jeżeli kanał w nadajniku jest sterowany przełącznikiem, to ta wiedza Ci w zupełności wystarczy.
W jednej pozycji przełącznika Arduino dostaje impulsy 1ms, w drugiej pozycji 2ms.

Do pomiaru wykorzystamy funkcję pulseIn(), która zwraca długość impulsu w mikrosekundach.
Kod:
#define pin 5
unsigned long czas;

void setup() {
  pinMode(pin, INPUT);
}

void loop() {
  czas = pulseIn(pin, HIGH);
  if(czas<1500) tryb_pierwszy();
  else tryb_drugi();
}

Pin sobie zdefiniuj oczywiście tak, jak masz podłączone z odbiornika.
Funkcje tryb_pierwszy(); oraz tryb_drugi() są wywoływane w zależności od położenia przełącznika w nadajniku, albo mamy około 1ms, czyli < 1500µs, albo około 2ms, czyli > 1500µs. Nazwy funkcji sobie wymyśliłem, więc wpisz tak jak nazwałeś swoje funkcje do włączania trybów oświetlenia. 
Jeśli Arduino nic więcej nie będzie robić, to taki program w zupełności wystarczy.
Dobrze by było, jak byś wrzucił tu swój kod, bo jeśli to są jakieś długie pętle, to program może dziwnie działać, to znaczy po przełączeniu trybu czekamy na zakończenie pętli i wyjście z funkcji, więc może być długi czas reakcji na zmianę.
Można to zmodyfikować.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#9
PPM to by musiał pulseIn(pin, LOW), chyba że odwróci sygnał wtedy z PPM zrobi PWM i wtedy pulseIn(pin, HIGH) zadziała jak najbardziej..

PPM to sygnał gdzie stan wysoki jest stały a stan niski zmienny
PWM to sygnał gdzie stan wysoki zmienny a niski stały
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#10
Z odbiornika do serwa idzie PWM.
PPM jest po to, aby wszystkie kanały wysłać w jednej paczce z nadajnika do odbiornika.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości