Arduino Polska Forum
Sterowanie servo + DC bluetooth - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Silniki, Mechanika i Zasilanie (https://forum.arduinopolska.pl/dzial-silniki-mechanika-i-zasilanie)
+--- Wątek: Sterowanie servo + DC bluetooth (/watek-sterowanie-servo-dc-bluetooth)



Sterowanie servo + DC bluetooth - qwert - 01-02-2019

Witam

Jestem początkujący w temacie arduino.

Chciałbym sterować serwomechanizmem oraz silnikiem poprzez aplikacje bluetooth na androida typu Arduino Bluetooth Joystisk. Wiadomo o  co chodzi - samochód. Problem ma z przypisaniem osi x do sterowania serwem oraz osi y do sterowania silnikiem. Chodzi mi o płynną regulacje skrętu oraz prędkości. Chcę użyć do tego Arduino Nano.

Proszę o pomoc w temacie lub skierowanie do jakiegoś źródła na ten temat.


RE: Sterowanie servo + DC bluetooth - kaczakat - 01-02-2019

W kursie znajdziesz opis obsługi silników i serw: https://forbot.pl/blog/kursy , program może działać sensownie dopiero co najmniej po poznaniu millis(), ale nie zaczynaj od końca kursu bo nic nie zrozumiesz. Do komunikacji z BT przyda się jeszcze poznanie parsowania zmiennych i przykład z event dla UART (jest wbudowany w Arduino IDE), przykłady użycia znajdziesz też na tym forum.


RE: Sterowanie servo + DC bluetooth - qwert - 01-02-2019

Do komunikacji bluetooth używam modułu hc-05, komunikacja działa. Jak pisałem mam problem z przypisaniem wartości sygnału na konkretną oś. Kursy na tym forum przeglądam a bieżąco.


RE: Sterowanie servo + DC bluetooth - kaczakat - 01-02-2019

No to super, pokaż kod, opisz z czym masz w nim problem, jak się zachowuje samochód vs czego oczekujesz.


RE: Sterowanie servo + DC bluetooth - error105 - 01-02-2019

Więc musisz po prostu przypisać wartość sygnału na konkretną os, i tyle Smile
Mam nadzieję że zalapiesz sarkazm Wink


RE: Sterowanie servo + DC bluetooth - qwert - 03-02-2019

Sarkazm załapny Smile

Poniżej kod
Kod:
   #define enA 9
   #define in1 4
   #define in2 5
   #define enB 10
   #define in3 6
   #define in4 7
   int xAxis, yAxis;
   unsigned int  X = 0;
   unsigned int  Y = 0;
   int motorSpeedA = 0;
   int motorSpeedB = 0;
   void setup() {
     pinMode(enA, OUTPUT);
     pinMode(enB, OUTPUT);
     pinMode(in1, OUTPUT);
     pinMode(in2, OUTPUT);
     pinMode(in3, OUTPUT);
     pinMode(in4, OUTPUT);
     Serial.begin(38400); // komunikacja
   }
   void loop() {
     // stop
     X = 512; // 4;
     Y = 512; // 4;
     //
     while (Serial.available() >= 2) {
       X = Serial.read();
       delay(10);
       Y = Serial.read();
     }
     delay(10);
 
     yAxis = Y;//*4;
     // y tyl
     if (yAxis < 470) {
     
       // motor B tyl
       digitalWrite(in3, HIGH);
       digitalWrite(in4, LOW);
       // y map tyl
       motorSpeedA = map(yAxis, 470, 0, 0, 255);
       
     }
     else if (yAxis > 550) {

       // potor B przod
       digitalWrite(in3, LOW);
       digitalWrite(in4, HIGH);
       // y map przod
       motorSpeedB = map(yAxis, 550, 1023, 0, 255);
     }
     // stop
     else  {

       motorSpeedB = 0;
     }
   
 
     analogWrite(enA, motorSpeedA); // PWM serwo A
     analogWrite(enB, motorSpeedB); // PWM motor B
   }
Narazie nic się nie dzieje. Problem w tym że nie wiem jak przypisać wartości suwaka x do serwa (jeszcze nie ma w kodzie) i y do silnika. Aplikacja jak w załączniku.

[attachment=760]


RE: Sterowanie servo + DC bluetooth - kaczakat - 03-02-2019

Przekieruj całą komunikację z BT na serial monitor Arduino, dowiedz się co jest wysyłane  z joystika, jak często. Potem obmyśl jak obrobić te dane i przypisać je do zmiennych. Przykład jest m.in. tu: https://forum.arduinopolska.pl/watek-serial-wyszukiwanie-i-zaci%C4%85gnie-danych #2.


RE: Sterowanie servo + DC bluetooth - qwert - 03-02-2019

Więc zrobiłem tak jak poniżej:

[attachment=761]

Z tego co wychodzi to że nie zależnie którą oś przesunę to wyrzuca D jako ruch i S jako stop. Czyli wychodzi na to że aplikacja nie rozróżnia osi. Dla trzech przycisków jest ok bo kolejno B, B2, B3.


RE: Sterowanie servo + DC bluetooth - kaczakat - 03-02-2019

Wystarczyło przeczytać opis aplikacji, jest link do przykładowego szkicu na github. D to direction, a S to speed i to raczej chodzi o Twoje XY link. Niezależnie co robisz aplikacja wysyła w ustawionym interwale dane, tak by program w Arduino wiedział, że joy jest w zasięgu, inaczej zatrzymuje pojazd.


RE: Sterowanie servo + DC bluetooth - qwert - 26-03-2019

Witam

Trochę to zajęło ale temat zakończony powodzeniem. Dziękuje za pomoc.