odbiór danych przez bluetooth

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
byniom
Młodszy majsterkowicz
Posty: 33
Rejestracja: 16 lis 2015, 12:07

odbiór danych przez bluetooth

Post autor: byniom » 23 lis 2015, 16:48

Jestem początkującym i nie zabardzo sobie jeszcze radzę z oprogramowaniem . Czy może kotś zerknąć czy to jest poprawnie napisane ? , mianowicie chodzi mi o to że wysyłam suwakiem sygnał z telefonu więc opóźnienie w miganiu diody powinno się zmieniać a niestety nie ma żadnej reakcji .

int state;

void setup()
{

pinMode(13, OUTPUT);
Serial1.begin(9600);

while (!Serial1) {
;
}
}


void loop() {
if (Serial1.available() > 2);
state = Serial1.read();
digitalWrite(13, HIGH);
delay(state * 10);
digitalWrite(13, LOW);
delay(state * 10);
}

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


mgreta36
Majsterkowicz
Posty: 115
Rejestracja: 11 mar 2014, 22:20

Re: odbiór danych przez bluetooth

Post autor: mgreta36 » 23 lis 2015, 17:03

A co widzisz na serial monitorze ? Jakie dane przychodzą z telefonu ?
byniom
Młodszy majsterkowicz
Posty: 33
Rejestracja: 16 lis 2015, 12:07

Re: odbiór danych przez bluetooth

Post autor: byniom » 23 lis 2015, 17:18

No właśnie nic nie widzę. Nie wiem dlaczego al. mnie nigdy nic nie wyświetla w tym serial monitorze nawet jak coś wysyłałem i działało.
stiven
Złota rączka
Posty: 1596
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: odbiór danych przez bluetooth

Post autor: stiven » 23 lis 2015, 17:52

Masz mały błąd, nie może być tego średnika na końcu ifa, czyli ma być coś takiego

Kod: Zaznacz cały

 if (Serial1.available() > 0) state = Serial1.read();
Masz arduino mega i moduł bluetooth podłączony tak:
- TXD modułu bluetooth do pinu 19 (RX1) w arduino mega,
- RXD modułu bluetooth do pinu 18 (TX1) w arduino mega?

A na serial monitorze nie będzie nic widać, po pierwsze dlatego, że serial monitor "widzi" tylko ten serial na pinach 0 i 1. A po drugie nawet jak się połączy ten moduł do tego serialu, to też nie będzie nic widać, bo na serial monitorze widać to co nadaje atmega, a nie to co odbiera.
Dzięki temu, że mega ma więcej tych seriali, to możesz wgrać taki program i zobaczyć na serial monitorze co przychodzi z telefonu.

Kod: Zaznacz cały

int state;

void setup()
{
  pinMode(13, OUTPUT);
  Serial1.begin(9600);
  Serial.begin(9600);
  while (!Serial1);
}


void loop() {
  if (Serial1.available() > 0) 
  {
    state = Serial1.read();
    Serial.println(state);
  }
  digitalWrite(13, HIGH);
  delay(state * 10);
  digitalWrite(13, LOW);
  delay(state * 10);

}
stiven
Złota rączka
Posty: 1596
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: odbiór danych przez bluetooth

Post autor: stiven » 23 lis 2015, 18:12

Jeszcze jedna rzecz, nie

Kod: Zaznacz cały

  if (Serial1.available() > 2) 
tylko

Kod: Zaznacz cały

  if (Serial1.available() > 0) 
Ta funkcja available() zwraca wartość 0, kiedy nie ma nic na serialu, albo 1 jak coś jest do odebrania. Poprawiłem poprzedni komentarz.
byniom
Młodszy majsterkowicz
Posty: 33
Rejestracja: 16 lis 2015, 12:07

Re: odbiór danych przez bluetooth

Post autor: byniom » 23 lis 2015, 18:15

Mam leonardo, sprawdze i dam znac a narazie dzięki za zainteresowanie
stiven
Złota rączka
Posty: 1596
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: odbiór danych przez bluetooth

Post autor: stiven » 23 lis 2015, 18:24

Aha, jeśli leonardo, no to ten program nie będzie działał co ja dałem. To jedynie w swoi programie możesz poprawić te dwie rzeczy, tą dwójkę w ifie i średnik usunąć. Sprawdź na razie to. Możesz też na start dać jakąś wartość dla zmiennej state, na przykład:

Kod: Zaznacz cały

  int state = 1;
Bo tak to będzie miała wartość 0 po włączeniu programu i nie będzie mrugania, bo będą dalay(0).

No i RX bluetootha ma być połączony z TX arduino, a TX bluetootha ma być połączony z RX arduino.
byniom
Młodszy majsterkowicz
Posty: 33
Rejestracja: 16 lis 2015, 12:07

Re: odbiór danych przez bluetooth

Post autor: byniom » 23 lis 2015, 18:27

Zadziałało z tym że zachowało się tak jak by w pętli był licznik i rozkaz wykonało kilka razy po czym stanęło . Dioda mrugnie ileś razy i widać że po przesunięciu slidera w telefonie się zmienia natomiast robi to kilka razy po czym świeci na stałe.
stiven
Złota rączka
Posty: 1596
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: odbiór danych przez bluetooth

Post autor: stiven » 23 lis 2015, 18:54

Taki masz program?

Kod: Zaznacz cały

int state = 1;

void setup()
{
  pinMode(13, OUTPUT);
  Serial1.begin(9600);
  while (!Serial1);
}


void loop() {
  if (Serial1.available() > 0) state = Serial1.read();

  digitalWrite(13, HIGH);
  delay(state * 10);
  digitalWrite(13, LOW);
  delay(state * 10);
}
byniom
Młodszy majsterkowicz
Posty: 33
Rejestracja: 16 lis 2015, 12:07

Re: odbiór danych przez bluetooth

Post autor: byniom » 23 lis 2015, 19:39

Tak , taki mam. Wywaliłem też w opóźnieniu to * 10 i nic się nie zmieniło. Zaobserwowałem jak to się zachowuje i następuje to tak. Kiedy układ uruchomię to dioda jakoś sobie tam mruga ale kiedy dotknę w telefonie suwak i go przesunę to intensywność mrugania się zmieni i już tak zostaje , nie reaguje na inne położenia. Po nocnych przemyśleniach i poprawkach zadziałało . Błąd polega na przesyłaniu rodzaju danych .Jeżeli z telefonu dane były wysyłane jako text to nie działało to prawidłowo ale gdy w programie w telefonie ( app inventor) zostały wysłane jako ".send 1 byte numer " to działa lecz z małym defektem bo kiedy wartość na sliderze wzrasta to puslowanie maleje i na odwrót . Nie za bardzo rozumiem ta funkcję w app inventor która jest zamiast "text" a obecnie "send 1 byte numer".
ODPOWIEDZ

Strony partnerskie: