Stap 3: Android gestuurde verlichting en macht--garagedeur Opener
Tot slot hier is de code die een garagedeur opener met het besturingselement voor de voorzijde lichten combineert. Het combineert de Android gecontroleerd Garage deuropener, die gebruik maakt Relais 1, met de code van de Front verlichting uit deel 2).
Dat is het laatste voorbeeldcode. (Opmerking: de code werd bijgewerkt 21 maart 2013 aan timer reliablity verbeteren, Zie Hoe te schrijven tijdsinstellingen en vertragingen in de Arduino voor de details)
pfodApp Debug scherm (niet normaal gezien door gebruikers)
De andere 3 screenshots tonen de pfodApp debug scherm. De gebruiker ziet dit scherm niet normaal. Het is toegankelijk via de mobile menuknop. Dit pfodApp debug scherm toont alle communicatie tussen de pfodApp en de pfodDevice. Berichten met < worden verstuurd door de pfodApp, berichten met > worden ontvangen door de pfodApp van de pfodDevice.
Vervolgens zal ik bespreken hoe de Android pfodApp de relay toestanden weergeeft en controleert de Relais. Alle bovenstaande programmacodevoorbeelden zijn voltooid op zich, geen bibliotheken nodig zijn. Echter er zijn bibliotheken beschikbaar voor de pfodDevice commando parser als u ze wilt gebruiken. Voorbeelden van het gebruik van deze bibliotheken zijn gegeven in Garage deur Remote en Remote Controlled LCD/LED-Display. The Arduino pfod bibliotheken zijn beschikbaar hier.
Codering van de Arduino te zijn van een pfodDevice.
Het pfodDevice commando Parser
Om te kunnen communiceren met de pfodApp op uw Android mobiele telefoon, moet de Arduino worden gecodeerd als een pfodDevice. De pfod specificatie details welke functionaliteit moet worden gesteund om te worden van een pfodDevice. Zoals je zou verwachten dat de eisen voor de pfodDevice zijn minimaal
De pfodDevice is vereist om:-
1. respond to alle berichten, zelfs niet-opgenomen die, met een antwoordbericht. Dit antwoordbericht mag het lege bericht, {}
2. respond to GetMainMenu verzoek, {.}, met een hoofdmenu of navigatie invoer van top niveau functionaliteit of, minder vaak, met een van de andere berichten:-SingleSelectionList, MultiSelectionList, UpdateMenu StreamingRawData, StringInput, NumericInput of de lege bericht {}
3. Negeer berichten waarvan de lengte groter is dan 255 bytes, met inbegrip van het begin en einde van {} bytes.
4. Indien de verbinding half-duplex is dan de berichten van de pfodApp aan de pfodDevice voorrang boven, en kunnen worden onderbroken, stromen van ruwe gegevens afkomstig van de pfodDevice.
Als voorbeeld zullen we kijken naar de pfodDevice-code van de gecombineerde garage deuropener en verlichting controle.
Ten eerste moet de pfodDevice inspelen op de {.} bericht dat de pfodApp op uw mobiel Andriod stuurt wanneer verbinding wordt gemaakt. Dit vraagt om het hoofdmenu van de pfodDevice. Wij willen in dit geval 4 knoppen (menu-items), worden weergegeven met de namen van de wissels en hun huidige staat, in- of uitschakelen.
Elk van deze knoppen heeft een unieke opdracht gekoppeld die niet voor de gebruiker wordt weergegeven. Wanneer de selectes van de gebruiker dat menu-item, de bijbehorende opdracht is verzenden terug naar de pfodDevice (Arduino Uno) worden uitgevoerd. In dit geval worden de opdrachten '1', '2', '3' en ' 4' gebruikt voor elk van de 4 estafette. Zo eruit een typische hoofdmenu bericht als het tweede scherm
Dit is een screen shot van het debug scherm van de pfodApp. Het pfodApp debug scherm is toegankelijk vanuit de menuknop mobiles. Wanneer de pfodApp verbonden met de Arduino pfodDevice, de pfodApp stuurt de {.} om vragen van de pfodDevice het hoofdmenu. De pfodDevice-parser parseert de Cmd:. en de Adruino code wordt het resultaat weergegeven. De pfodApp op de Android mobiele negeert deze tekst aangezien het niet uitmaakt van pfod bericht start en einde tekens, {}. De pfodDevice vervolgens vertrok het hoofdmenu
{. Druk op om over te schakelen op/off|1 ~ GarageDoor\nOpen/Close|2 ~ Front Light\nis OFF|3 ~ Garage Light\nis OFF|4 ~ Hall Light\nisOff}
\n begint een nieuwe regel. De {. aangeeft dat dit bericht moet worden weergegeven als een lijst met menu-items, knoppen. De volgende 4 secties tussen || definiëren van elk menu-item. Elk menu-item is opgebouwd uit de opdracht ~ tekst weergeven. Zie de pfodSpecification voor een gedetailleerde beschrijving van dit menu wordt weergegeven. Eerste deel is de opdracht verzonden terug als deze menuoptie wordt geselecteerd, waarna de tekst moet worden weergegeven. Dus bijvoorbeeld 2 ~ Front Light\nis OFF 2 ingesteld als de opdracht voor deze menuknop en de tekst als instellen
Vóórlicht
is uitgeschakeld
Wanneer de gebruiker dit menu-item selecteert, de pfodApp de bijbehorende opdracht 2, in het bericht verzenden {2}, aan de pfodDevice. Het pfodDevice commando parser parsers de opdracht en activeert het Relais en stuurt terug een bijgewerkte menu wordt weergegeven aan de gebruiker, waaruit blijkt dat het voorlicht nu ingeschakeld is.
Wanneer de Garage deur Open/Close knop is ingedrukt stuurt de pfodApp de msg {1} naar de pfodDevice, die ontleden de boodschap en de pulsen de estafette met de garage deur drukknop te openen/sluiten van de deur verbonden.
Zoals u ziet in dit geval dat de Arduino-code wordt afgedrukt wanneer het begint en eindigt de pulserende van het Relais. Het pfodApp wordt opnieuw deze extra tekst genegeerd omdat het niet is opgenomen in het pfod bericht begin en einde van tekens {}. Zie Android gecontroleerd Garage deuropener voor een meer details over de garagedeur pulse code.