Lägga till Bluetooth 4.0 till din Arduino projekt [IoT] - kontrolleras av Smartphone (6 / 8 steg)
Steg 6: Kod - mellanliggande förklaring
I det här avsnittet ser vi över koden, så att du kan ändra det själv i framtiden.
Den första viktiga delen är linje 23 och 24. SPI.h måste använda SPI maskinvara på Arduino. Adafruit_BLE_UART.h måste inkluderas som ett bibliotek i Arduino som beskrivs i föregående avsnitt, eller du kommer att få ett fel. Det här biblioteket hanterar samtliga låg nivå meddelanden till styrelsen Adafruit bluetooth - allt som beskrivs i avsnittet SPI.
28-30 rader beskriver pin mappningar. Som beskrivs i REQ pin och RST pin ovan, kan stift 9 och 10 flyttas till ganska mycket alla andra stift, så länge linjer 28 och 30 ändras också. Om du använder en analog ingång stift, är de numrerade A0, A1, A2, etc.
Stift 2, RDY PIN-koden kan flyttas som väl - men bara till en annan avbrott kan pin. På Uno och Duemilanove är som enda pin 2 eller 3. Se bild 1.
Om du lägger till några extra stift, måste du se till att initiera dem i setup ()-funktionen. Funktionen pinMode () tar den pin-kod som det första argumentet (i detta fall ledde = 3), och antingen utgång eller ingång som det andra argumentet. På linje 49 vi ser till lampan inte lyser, genom att ange det låg med digitalWrite (). Ställer in det skulle höga aktivera LED. Senare får vi se hur initiera en analog stift. Se bild 2.
Loop () funktion är där din kod går när det är "bara sitter". Koden här måste kunna hantera alla situationer du bryr dig om. Denna kod körs om och om igen tills power kopplas. Första att notera är linje 61, vilket orsakar öglan för att idle för 50 millisekunder så att den endast är klar ca 20 gånger per sekund. Detta håller strömförbrukning, och är fortfarande förmodligen snabbare än du behöver. Se bild 3.
Resten av loopen hanterar kommunikationen med den kod som ser efter Bluetooth styrelsen. Du kan förmodligen ignorera det tills du kommer till linje 73. Här läsa ett tecken från bluetooth i taget och placeras i variabeln "val". Linje 74 använder en if () uttalande att räkna ut vilken karaktär lästes. Allt mellan {} efter if uttalande bara händer om det om uttrycket utvärderas till true. På linjen 75 aktivera vi LED genom att ange pin 3 till hög. På linje 76 använder vi en anpassad funktion för att skicka data via bluetooth tillbaka till användaren. Mer komplexa beteende kan läggas till genom att lägga till mer om () {} block. Koden kan ställas in att svara på olika bokstav kommandon och manipulera olika pins eller skicka tillbaka data i svaret.
SendData funktion är på rad 87. I while loop, vi använder kommandon sendData ("\nLED på") och sendData ("\nLED OFF"). NRF8001 chip kan bara skicka 20 tecken i taget, så det är begränsningen i funktionen sendData. Tecknet \n visas inte, men snarare gör en ny rad ska visas i smartphone app (motsvarighet till en vagnretur). Se bild 4.