Skocz do zawartości

Sterowanie silnikami DC z BT


faustin

Pomocna odpowiedź

Ja mam pytanie ale odnośnie modułu bluetooth bo potrzebuje mieć silnik zdalnie sterowany mam układ z mostkiem h podpietym do silnika , mój kod jest taki sam i do tego podpiełam jeszcze dwa przyciski , oraz w dwóch ifach dalam warunek ze jesli nacisne przycisk pierwszy to obroty silnika beda w prawo, jesli nacisne drugi to beda w lewo i problem jest ten ze próbuje ten kod podpiąć z aplikacją do zdalnego sterowania wraz zmodułem bluetooth, mduł bluetooth podłączyłam i sparowałam ale po napisaniu kodu aplikacja nie odnajduje przycisków i nic sie nie dzieje , myslę ,że bład jest w kodzie ale sama nie potrafie go znależć , apka której uzywam to RoboRemoFree , gdyby był jakiś przykład kodu własnie z podłaczeniem modułu bluetooth do aplikacj jakiejś za pomoca , której mogłabym zdalnie sterować z telefonu obrotami silnika ?

Edytowano przez Gieneq
Link do komentarza
Share on other sites

@faustin witam na forum 🙂 

Pytanie jest dużo bardziej rozbudowane od treści kursu wiec wydzielam z tematu:

 

Ciężko mi wyobrazić sobie twój projekt, proszę żebyś wrzuciła schemat i kod programu to postaramy się pomóc.

Link do komentarza
Share on other sites

(edytowany)
void setup() { 
  pinMode(6, OUTPUT); //Sygnał PWM silnika nr 1
  pinMode(3,OUTPUT);
  pinMode(13,INPUT_PULLUP);
  digitalWrite(6, HIGH); //Ustawiamy (na stałe) stan wysoki na pinie 6
  
  pinMode(7, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr 1
  pinMode(8, OUTPUT);
} 
char cmd[100];
byte cmdIndex;
void exeCmd()
{
  if(cmd[0]=='s')
  {
     digitalWrite(7, LOW); //Silnik nr 1 - obroty w lewo
  digitalWrite(8, HIGH); 
  delay(30);
  }
}

Dzień dobry

 Dziekuje za zainteresowanie moim problemem , tak wiec sprawa wygląda tak tutaj mam wszystko podłaczone jak trzeba , moduł bluetooth sparowany jest z telefonem w aplikacji RoboRemoFree (raczej wątpie abym źle coś podłaczyła ale wysyłam zdjęcia)

IMG_20210801_233810030.thumb.jpg.30c57b9eb5ee7e8fdb11ed52ea810d94.jpgIMG_20210801_234625509.thumb.jpg.3e5f36205fbe325f523f3e6df797b3e1.jpgIMG_20210801_231426523.thumb.jpg.67a531dd7f54182a8ec48307af577a8c.jpg146615055_IMG_20210801_233810030(1).thumb.jpg.74be27247047549685cd9b7a46b8ac6f.jpg

wyżej jest przedstawiony silniczek z niebieskim kołem , którym chce sterować w sposób zdalny (przez apke w telefonie)

kod napisałam taki :

void setup() { 
  pinMode(6, OUTPUT); //Sygnał PWM silnika nr 1
  pinMode(3,OUTPUT);
  pinMode(13,INPUT_PULLUP);
  digitalWrite(6, HIGH); 
  
  pinMode(7, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr 1
  pinMode(8, OUTPUT);
} 
char cmd[100];
byte cmdIndex;
void exeCmd()
{
  if(cmd[0]=='s')
  {
     digitalWrite(7, LOW); //Silnik nr 1 - obroty w lewo
  digitalWrite(8, HIGH); 
  delay(30);
  }
}

 i własnie po sparowaniu arduino z aplikacja i ustawieniu w tej aplikacji interfejsu na przycisk o identyfikatorze "s" tak jak w szkicu nie działa mi to, wgl jak naciskam ten przycisk w aplikacji na telefonie silnik się wtedy nie wzbudza , wręcz przeciwnie jakby wgl nie reagował na ten kod. On kręci się nadal jak przyłoze do niego te kabelki z pinu 3 i pinu 6 z mostka ,pomimo tego ,że nie powinien się krecic dopóki ja nie nacisne przycisku w aplikacji bo taki przecież jest warunek w wyzej napisanym przez mnie kodzie.

  Gdyby ktos miał kod , który realizuje podobne działanie to byłoby super gdyby tutaj zamiescil, 

ogolnie jest mi to potrzebne z tym silnikiem poniewaz chce zrobić pojazd na arduino sterowany zdalnie z telefonu 

czekam na podpowiedzi i pozdrawiam.

 

Screenshot_20210804-005618.png

Screenshot_20210804-005633.png

Edytowano przez Gieneq
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

#include <SoftwareSerial.h>
  
SoftwareSerial blue(2, 3);

#define led 13
  
char znak = 0;

void setup() {
  blue.begin(9600); // tu zmieniasz predkosci!!!
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

void loop() {

  if (blue.available() > 0) { // tu twój serial BT
 
    znak = blue.read();
    Serial.println(znak);
  }
  if (znak == 's') {
    digitalWrite(led, HIGH);
  } else if (znak == '0') {
    digitalWrite(led, LOW);
    }
  }

Wgraj taki kod...podlacz modul pod piny 2/3 (rx/tx)...i w blue.begin ustaw taka predkosc na jaka jest modul ustawiony

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

32 minuty temu, faustin napisał:

 Skąd mam wiedzieć na jaką prędkość jest modul

Predkosci masz standardowe...otworz serial monitor i tam masz wypisane predkosci i zmieniaj dla blue.begin az bedzie komunikacja...oczywiscie wgrywaj kod za kazdym razem...

 

34 minuty temu, faustin napisał:

I w tym miejscu z serialem BT to o co chodzi?

Nie rozumiem...

 

32 minuty temu, faustin napisał:

I nie wiem skąd tam się wzięło LED z pinu 13 bo ja ogólnie chciałabym sterować silnikiem wtedy gdy na aplikacji nacisne odpowiedzi przycisk.

To przyklad tylko...pin wybierz jaki chcesz i dopisz kod jaki chcesz...ogolnie ten kod ma Ci na serial monitorze wyswietlac to co wyslesz przez blue...wiec niczego nie zmieniaj tylko sprawdz najpierw czy cos odbierasz...no i kable od modulu na krzyz podlsczone

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.