Raspberry Pi Bluetooth LE Controller för WS2812B (NeoPixels) (9 / 9 steg)
Steg 9: Skriva BLE Data via programmering i Python (Raspberry Pi)
I detta sista steg ska vi skriva ett skript i Python att använda programmet gatttool programmässigt. Det innebär att vi ska strukturera vårt skript på ett sätt som gör det möjligt att använda gatttool utan att behöva ange flera gånger kommandon i terminalen.
Manuset är ganska rakt fram, och kan utökas genom att du kan visa olika animationer av RGB LED. Med RFduino drivs och kör samma firmware som i föregående steg, vi går till vår Raspberry Pi och öppna en textredigerare (t.ex. Leafpad).
Vi använder det till att skapa våra manus. Vi börjar genom att ange ett par funktionsdefinitioner:
MAC = "DC:E2:F4:0B:3A:03"
CHAR = 0X0011
def initialize():
commands.getoutput ("hciconfig hci0 ner")
commands.getoutput ("hciconfig hci0 upp")
Skriv ut commands.getoutput ("hciconfig - a")
commands.getoutput ("killall hcitool")
Funktionen initialize() hand tar om konfigurera gränssnittet BLE. Även om vi gjorde detta redan i ett tidigare steg, är det inte dåligt att säkerställa att den är tillgänglig. Denna funktion skriver ut utdata från kommandot hciconfig till Terminal Windowwhere skriptet är sprang.
def sendColor(c):
kommandot "sudo gatttool -t random -b {0}--char-skriva-req - en {1} - n {2}" = .format (MAC, röding, c)
p = underprocess. Popen(Command.Split(), skal = False)
skriva ut p.communicate() [0]
Funktionen sendColor tar en 3-byte sträng som skickas till enheten med mac-adress MAC till karakteristiska handtaget CHAR. Du behöver byta ut dessa värden med egna värden i början av skriptet.
om __name__ == "__main__":
Initialize()
sendColor('FF0000')
Time.Sleep(1)
sendColor('00FF00')
Time.Sleep(1)
sendColor('0000FF')
Time.Sleep(1)
sendColor('000000')
Slutligen när skriptet är sprang det kommer att köras initialize() funktion en gång, och sedan ange färgen till full ljusstyrka röd, vänta 1 sekund, full ljusstyrka grön, vänta en sekund, full ljusstyrka blå, vänta en sekund, och sedan skicka en "ingen färg" (av) kommandot. Om allt är på plats, bör RFduino framgå följande: