first commit ble hid keybutton code
This commit is contained in:
parent
8979902fcd
commit
99b50857d0
1 changed files with 77 additions and 0 deletions
77
CPB_Keybutton_BLE/cpb_keybutton_ble.py
Normal file
77
CPB_Keybutton_BLE/cpb_keybutton_ble.py
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
"""
|
||||
This example acts as a BLE HID keyboard to peer devices.
|
||||
Attach five buttons with pullup resistors to Feather nRF52840
|
||||
each button will send a configurable keycode to mobile device or computer
|
||||
"""
|
||||
import time
|
||||
import board
|
||||
from digitalio import DigitalInOut, Direction
|
||||
|
||||
import adafruit_ble
|
||||
from adafruit_ble.advertising import Advertisement
|
||||
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
|
||||
from adafruit_ble.services.standard.hid import HIDService
|
||||
from adafruit_ble.services.standard.device_info import DeviceInfoService
|
||||
from adafruit_hid.keyboard import Keyboard
|
||||
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
|
||||
from adafruit_hid.keycode import Keycode
|
||||
|
||||
button_1 = DigitalInOut(board.D11)
|
||||
button_2 = DigitalInOut(board.D10)
|
||||
button_3 = DigitalInOut(board.D9)
|
||||
button_4 = DigitalInOut(board.D6)
|
||||
button_5 = DigitalInOut(board.D5)
|
||||
|
||||
button_1.direction = Direction.INPUT
|
||||
button_2.direction = Direction.INPUT
|
||||
button_3.direction = Direction.INPUT
|
||||
button_4.direction = Direction.INPUT
|
||||
button_5.direction = Direction.INPUT
|
||||
|
||||
hid = HIDService()
|
||||
|
||||
device_info = DeviceInfoService(software_revision=adafruit_ble.__version__,
|
||||
manufacturer="Adafruit Industries")
|
||||
advertisement = ProvideServicesAdvertisement(hid)
|
||||
advertisement.appearance = 961
|
||||
scan_response = Advertisement()
|
||||
scan_response.complete_name = "CircuitPython HID"
|
||||
|
||||
ble = adafruit_ble.BLERadio()
|
||||
if not ble.connected:
|
||||
print("advertising")
|
||||
ble.start_advertising(advertisement, scan_response)
|
||||
else:
|
||||
print("already connected")
|
||||
print(ble.connections)
|
||||
|
||||
k = Keyboard(hid.devices)
|
||||
kl = KeyboardLayoutUS(k)
|
||||
while True:
|
||||
while not ble.connected:
|
||||
pass
|
||||
print("Start typing:")
|
||||
|
||||
while ble.connected:
|
||||
if not button_1.value: # pull up logic means button low when pressed
|
||||
#print("back") # for debug in REPL
|
||||
k.send(Keycode.BACKSPACE)
|
||||
time.sleep(0.1)
|
||||
|
||||
if not button_2.value:
|
||||
kl.write("Bluefruit") # use keyboard_layout for words
|
||||
time.sleep(0.4)
|
||||
|
||||
if not button_3.value:
|
||||
k.send(Keycode.SHIFT, Keycode.L) # add shift modifier
|
||||
time.sleep(0.4)
|
||||
|
||||
if not button_4.value:
|
||||
kl.write("e")
|
||||
time.sleep(0.4)
|
||||
|
||||
if not button_5.value:
|
||||
k.send(Keycode.ENTER)
|
||||
time.sleep(0.4)
|
||||
|
||||
ble.start_advertising(advertisement)
|
||||
Loading…
Reference in a new issue