Stap 6: Code - tussentijdse verklaring
In deze sectie zullen we kijken over de code, zodat kunt u het zelf in de toekomst.
De eerste belangrijke sectie is lijn 23 en 24. SPI.h moeten worden opgenomen de SPI-hardware te gebruiken op de Arduino. Adafruit_BLE_UART.h moet worden opgenomen als een bibliotheek in Arduino zoals beschreven in de vorige sectie, of u krijgt een foutmelding. Deze bibliotheek verwerkt alle laag niveau communicatie aan het bestuur van Adafruit bluetooth - alles beschreven in de sectie SPI.
28-30 lijnen beschrijven pin-toewijzingen. Zoals beschreven in de eerste pin secties hierboven en REQ pin, kunnen pin 9 en 10 worden verplaatst naar vrijwel elke andere pin, zolang lijnen 28 en 30 zijn ook gewijzigd. Als u een van de analoge input pinnen gebruikt, zijn ze genummerde A0, A1, A2, enz.
Pin 2, de RDY pin kan worden verplaatst als goed - maar alleen naar een andere interrupt staat pin. Uno en Duemilanove thats het enige pin 2 of 3. Zie afbeelding 1.
Als u extra pinnen toevoegt, moet u ervoor zorgen om hen in de setup () functie te initialiseren. De pinMode () functie neemt het pin-nummer als het eerste argument (in dit geval geleid = 3), en output of INPUT als tweede argument. Op regel 49 die wij ervoor uitstaat de LED, door het lage met digitalWrite (). Instellen van het zou hoge inschakelen de LED. Later zullen we zien hoe te initialiseren een analoge pin. Zie afbeelding 2.
De lus () functie is waar uw code gaat wanneer het "net rond zit". De code hier moet kunnen omgaan met alle situaties die u schelen. Deze code is over en weer lopen totdat macht is verbroken. Het eerste ding van de nota is lijn 61, waardoor de lus aan idle voor 50 milliseconden, zodat slechts ongeveer 20 keer per seconde is voltooid. Dit houdt energieverbruik naar beneden, en is nog steeds waarschijnlijk sneller dan je nodig hebt. Zie afbeelding 3.
De rest van de lus zorgt voor communicatie met de code die er na de Bluetooth-bestuur uitziet. Totdat je bij de lijn 73, kunt u het waarschijnlijk negeren. Hier is één teken de bluetooth afgelezen op een tijdstip en geplaatst in de variabele "val". Lijn 74 gebruikt een if ()-instructie om erachter te komen wat karakter werd gelezen. Alles tussen de {} na de als verklaring gebeurt alleen als dat als verklaring wordt geëvalueerd om waar te zijn. Lijn 75 wij door te schakelen de LED op pin 3 instellen op hoog. Op lijn 76 gebruiken wij een aangepaste functie voor het verzenden van gegevens via bluetooth terug naar de gebruiker. Meer complexe gedrag kan worden toegevoegd door het toevoegen van meer als () {} blokken. De code kan worden ingesteld om te reageren op commando's van verschillend zendbrief en manipuleren van verschillende pennen of data terug te sturen in reactie.
De functie sendData ligt op lijn 87. In de while lus, we gebruiken de opdrachten sendData ("\nLED op") en sendData ("\nLED uit"). De nRF8001 chip kan alleen het verzenden van 20 tekens op een moment, dus dat is de beperking in de sendData functie ook. Het teken \n niet wordt weergegeven, maar eerder veroorzaakt een nieuwe regel wordt weergegeven in de smartphone-app (vergelijkbaar met een harde return). Zie afbeelding 4.