Ansluta Arduino Uno till Android via Bluetooth (5 / 6 steg)
Steg 5: App Inventor kod - Detaljer
De viktigaste komponenterna i den Arduino Bluetooth anslutning app är:
- en ListPicker för Bluetooth ihopkopplade enheter (ListPicker1)
- 3 knappar, varje kontrollera motsvarande färg styrelsen LED (RedLedBtn, GreenLedBtn, YellowLedBtn)
- en knapp som skickar kommandot STATUS (GetStatusBtn)
- en knapp med en tillhörande textbox status rapport intervall (SecondsBtn och SecondsTxBx)
- en stor flerradig Status etikett visar info från Arduino styrelsen (Status)
- Bluetooth-klientobjekt nämnde i föregående steg (BluetoothClient1)
- en klocka komponent som bränder ett avbrott varje sekund när klienten är ansluten (Clock1)
Vad som följer är en app Beskrivning baserat på bilderna ovan.
Figur 1
Variabler för LED'S status och intervall in och initieras när skärmen app öppnas.
Figur 2
Objektet connection ListPicker ListPicker1 fungerar med två metoder:
- en lista över tillgängliga (hopkopplade) Bluetooth-enheter är förberedda och visade att användaren
- När användaren väljer en enhet, Connect-metoden i objektet Bluetooth klienten kallas för att anslutningen ska upprättas: om det lyckas, detta visas i den tillhörande etiketten och klockan avbrottet är aktiverad så att meddelanden från enheten kan tas emot.
Figur 3
Här visar vi hur du skickar kommandon till Arduino styrelsen.
När GetStatusBtn trycks, anropas metoden SendText för objektet Bluetooth klient och text kommandot ges: Observera den "\n" läggas till i slutet av strängen "CMD STATUS" så att funktionen serialEvent() i Arduino skiss kan veta när meddelandet är över.
Koden för att växla en LED eller inaktivera är något mer komplex:
- Vi använder och motsvarande variabel att hålla reda på dess nuvarande status: om det är på, vi vill stänga av och den andra runt vägen; så, först, vi växla variabeln så att säga boolesk
- Vi uppdaterar knappetiketten med den nya staten
- Slutligen kallas BluetoothClient1.SendText för att överföra kommandot.
Koden för andra kommandon visas inte eftersom det är mycket likt.
Figur 4
Varje gång Clock1 timern bränder, denna rutin körs: motsvarar det av Arduino's serialEvent(); om det finns byte som tas emot av BluetoothClient1, kopieras de i Status etiketten. Observera att objektet Bluetooth klient har en metod som returnerar längden på meddelandet tas emot.