Skocz do zawartości

MIT App Inventor 2 i moduł bluetooth HC-05


eML

Pomocna odpowiedź

Witajcie

To mój pierwszy post na forum, a trafiłem do was za pomocą fanpage Frotbot z FB.

Mam pewien problem z moim Arduino i App Inventorem.

Komunikacja odbywa się za pomocą modułu bluetooth HC-05.

Na chwilę obecną program na Arduino umożliwia sterowanie przekaźnikami. Samo sterowanie z poziomu androida jest proste, jednakże mi zależy na odczytywaniu stanów (zmiennych) wysyłanych z arduino na komórce.

Na chwilę obecną arduino po wciśnięciu jakiegoś przycisku na komórce odczytaniu go, wysyła wiadomość zwrotną o tej samej treści (są to cyfry).

Że wiadomość została wysłana przez moduł to wiem, dzięki serial monitorowi na komórce, ale niestety nie wiem jak zmusić App Inventor, aby po odebraniu zmiennej zmieniło obrazek na widoczny lub niewidoczny, który ma oznaczać stan danego przekaźnika.

Zamieszczam wszelkie dane

Program z arduino:

#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(10, 11); // RX | TX

char val;
int ledpin2;
int ledpin3;

int ledState = LOW;
void setup()
{
 pinMode(ledpin2 = 2,OUTPUT);
 digitalWrite(ledpin2,HIGH); 
 pinMode(ledpin3 = 3,OUTPUT);
 digitalWrite(ledpin3,HIGH); 
 Serial.begin(9600); 
 Bluetooth.begin(9600); 
 delay(1000);
}

void loop(){
 if (Bluetooth.available()) {
   int cmd = Bluetooth.read();   
   switch(cmd) {
   case '1':
     digitalWrite(ledpin2,LOW); 
     Bluetooth.println('1');
     break;
   case '2':
     digitalWrite(ledpin2,HIGH);
     Bluetooth.println('2');
     break;
   case '3':
     digitalWrite(ledpin3,LOW); 
     Bluetooth.println('3');
     break;
   case '4':
     digitalWrite(ledpin3,HIGH);
     Bluetooth.println('4');
     break;
   }
 }
}

Program App Inventor 2:

Link do dropboxa z kodem:

https://www.dropbox.com/s/bz6emljgcuurc0k/Bt_Device_Control_receive_zmiana.aia?dl=0

Inną sprawą jest wymuszenie tj, przesłanie danych do synchronizacji aplikacji na androidzie przyciskiem typu switch czy też przyciskiem w telefonie, aby zmusić arduino do wysłania danych, może macie jakiegoś gotowca? Jak nie, to pobawię się z tym sam.

Ważne, żeby Inventor odbierał dane i realizował funkcje.

Dzięki za pomoc.

Link do komentarza
Share on other sites

Witam

Również chciałbym sie dowiedzieć, w jaki sposób można zaprogramować arduino i odpowiednio napisac aplikację APP Inventor, aby arduino wysyłało informację do androida, czyli wartość jakiejś zmiennej. Przykładowo wystapiło jakieś przerwanie i w tym momencie chciałbym aby np. stan licznika, który zwiększył sie o jeden został przesłany i wyświetlony na aplikacji.

Poniżej przesyłam kod Arduino:


int tx = 1; 
int rx = 0;   
int state = 0; 
int i=0;

void setup() {
 pinMode(tx, OUTPUT); 
pinMode(rx, INPUT);
 Serial.begin(9600);
 attachInterrupt(0, funkcja, RISING);
}

void loop() {
if(Serial.available() > 0){   
 state = Serial.read();    
 if(state == '0'){             
  Serial.println(i); 
 state = 0;               
}                       
}
}
void funkcja(void){
  i++;
}

Każde przerwanie zwiększa stan zmiennej "i" o 1. Gdy wcisnę na aplikacji przycisk, to wysyłane jest 0 do arduino, a w informacji zwrotnej do telefonu przysyłana jest wartość zmiennej "i". Jednak gdy wartość zmiennej ma np. 14, to na wyświetlaczu mam 1, a czwórka zanika. Kolejno jak zmienna ma np 42, to an telefonie wyświetla się jedynie 4

Link do komentarza
Share on other sites

Ja nigdy nie używałem aplikacji o której piszesz, więc się wypowiem 🙂

Możliwe że aplikacja na telefonie działa zbyt szybko. Wysyłasz '0' i od razu przechodzisz do odbierania danych. Prawdopodobnie przy wywoływaniu metody 'ReceiveText' w buforze odbiorczym jest dopiero jeden bajt (pierwszy) i tylko go odczytujesz. Komunikacja Arduino<->BT<->telefon może chwilę zająć.

Można w tym środowisku dodać jakieś opóźnienie? Spróbuj wstawić np. 50ms pomiędzy wysłanie '0' a sprawdzenie bufora i chyba powinno zadziałać.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.