Quellcode durchsuchen

variants: XIAO NRF52: Enable user button

The Xiao nRF52840 combined with the Wio-SX1262 is often used for
cheap and compact DIY companion nodes. The Wio actually has an onboard
pushbutton that can be used as user button. Enable support for the
button.

Signed-off-by: Frieder Schrempf <frieder@fris.de>
Frieder Schrempf vor 8 Monaten
Ursprung
Commit
c76d337a00

+ 4 - 0
variants/xiao_nrf52/XiaoNrf52Board.cpp

@@ -29,6 +29,10 @@ void XiaoNrf52Board::begin() {
   pinMode(VBAT_ENABLE, OUTPUT);
   digitalWrite(VBAT_ENABLE, HIGH);
 
+#ifdef PIN_USER_BTN
+  pinMode(PIN_USER_BTN, INPUT);
+#endif
+
 #if defined(PIN_WIRE_SDA) && defined(PIN_WIRE_SCL)
   Wire.setPins(PIN_WIRE_SDA, PIN_WIRE_SCL);
 #endif

+ 7 - 0
variants/xiao_nrf52/platformio.ini

@@ -26,10 +26,13 @@ build_flags = ${nrf52_base.build_flags}
   -D SX126X_RX_BOOSTED_GAIN=1
   -D PIN_WIRE_SCL=D6
   -D PIN_WIRE_SDA=D7
+  -D PIN_USER_BTN=PIN_BUTTON1
+  -D DISPLAY_CLASS=NullDisplayDriver
 build_src_filter = ${nrf52_base.build_src_filter}
   +<helpers/*.cpp>
   +<helpers/sensors>
   +<../variants/xiao_nrf52>
+  +<helpers/ui/NullDisplayDriver.cpp>
 debug_tool = jlink
 upload_protocol = nrfutil
 lib_deps = ${nrf52_base.lib_deps}
@@ -41,6 +44,7 @@ board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld
 board_upload.maximum_size = 708608
 build_flags =
   ${Xiao_nrf52.build_flags}
+  -I examples/companion_radio/ui-orig
   -D MAX_CONTACTS=350
   -D MAX_GROUP_CHANNELS=40
   -D BLE_PIN_CODE=123456
@@ -52,6 +56,7 @@ build_flags =
 build_src_filter = ${Xiao_nrf52.build_src_filter}
   +<helpers/nrf52/SerialBLEInterface.cpp>
   +<../examples/companion_radio/*.cpp>
+  +<../examples/companion_radio/ui-orig/*.cpp>
 lib_deps =
   ${Xiao_nrf52.lib_deps}
   densaugeo/base64 @ ~1.4.0
@@ -62,6 +67,7 @@ board_build.ldscript = boards/nrf52840_s140_v7_extrafs.ld
 board_upload.maximum_size = 708608
 build_flags =
   ${Xiao_nrf52.build_flags}
+  -I examples/companion_radio/ui-orig
   -D MAX_CONTACTS=350
   -D MAX_GROUP_CHANNELS=40
   -D QSPIFLASH=1
@@ -70,6 +76,7 @@ build_flags =
 build_src_filter = ${Xiao_nrf52.build_src_filter}
   +<helpers/nrf52/SerialBLEInterface.cpp>
   +<../examples/companion_radio/*.cpp>
+  +<../examples/companion_radio/ui-orig/*.cpp>
 lib_deps =
   ${Xiao_nrf52.lib_deps}
   densaugeo/base64 @ ~1.4.0

+ 4 - 0
variants/xiao_nrf52/target.cpp

@@ -2,6 +2,10 @@
 #include "target.h"
 #include <helpers/ArduinoHelpers.h>
 
+#ifdef DISPLAY_CLASS
+  DISPLAY_CLASS display;
+#endif
+
 XiaoNrf52Board board;
 
 RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, SPI);

+ 5 - 0
variants/xiao_nrf52/target.h

@@ -9,6 +9,11 @@
 #include <helpers/ArduinoHelpers.h>
 #include <helpers/sensors/EnvironmentSensorManager.h>
 
+#ifdef DISPLAY_CLASS
+  #include <helpers/ui/NullDisplayDriver.h>
+  extern DISPLAY_CLASS display;
+#endif
+
 extern XiaoNrf52Board board;
 extern WRAPPER_CLASS radio_driver;
 extern AutoDiscoverRTCClock rtc_clock;

+ 1 - 1
variants/xiao_nrf52/variant.h

@@ -38,7 +38,7 @@ extern "C"
 #define LED_STATE_ON            (1)     // State when LED is litted
 
 // Buttons
-#define PIN_BUTTON1             (PINS_COUNT)
+#define PIN_BUTTON1             (0)
 
 // Digital PINs
 static const uint8_t D0  = 0 ;