denko 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_atmega_avr.yml +2 -1
  3. data/.github/workflows/build_atmega_megaavr.yml +2 -1
  4. data/.github/workflows/build_atsam3x.yml +1 -0
  5. data/.github/workflows/build_atsamd21.yml +2 -1
  6. data/.github/workflows/build_esp32.yml +4 -2
  7. data/.github/workflows/build_esp32c3.yml +4 -3
  8. data/.github/workflows/build_esp32c6.yml +4 -2
  9. data/.github/workflows/build_esp32h2.yml +4 -2
  10. data/.github/workflows/build_esp32s2.yml +4 -2
  11. data/.github/workflows/build_esp32s3.yml +4 -2
  12. data/.github/workflows/build_esp8266.yml +2 -1
  13. data/.github/workflows/build_ra4m1.yml +1 -0
  14. data/.github/workflows/build_rp2040.yml +4 -3
  15. data/.github/workflows/ruby.yml +1 -1
  16. data/CHANGELOG.md +203 -0
  17. data/DEPS_CLI.md +16 -16
  18. data/DEPS_IDE.md +31 -30
  19. data/MICROCONTROLLERS.md +103 -0
  20. data/PERIPHERALS.md +178 -0
  21. data/README.md +28 -21
  22. data/denko.gemspec +6 -1
  23. data/lib/denko/analog_io/ads1118.rb +5 -5
  24. data/lib/denko/analog_io/ads111x.rb +23 -19
  25. data/lib/denko/analog_io/joystick.rb +87 -0
  26. data/lib/denko/analog_io/potentiometer.rb +1 -5
  27. data/lib/denko/analog_io.rb +22 -8
  28. data/lib/denko/behaviors/bus_controller.rb +2 -1
  29. data/lib/denko/behaviors/bus_peripheral.rb +1 -1
  30. data/lib/denko/behaviors/callbacks.rb +18 -16
  31. data/lib/denko/behaviors/component.rb +0 -4
  32. data/lib/denko/behaviors/lifecycle.rb +1 -1
  33. data/lib/denko/behaviors/listener.rb +9 -3
  34. data/lib/denko/behaviors/multi_pin.rb +4 -6
  35. data/lib/denko/behaviors/poller.rb +11 -2
  36. data/lib/denko/behaviors/reader.rb +109 -21
  37. data/lib/denko/behaviors/single_pin.rb +2 -4
  38. data/lib/denko/behaviors/state.rb +18 -13
  39. data/lib/denko/behaviors/threaded.rb +19 -8
  40. data/lib/denko/behaviors.rb +36 -23
  41. data/lib/denko/board/eeprom.rb +1 -1
  42. data/lib/denko/board/i2c.rb +1 -1
  43. data/lib/denko/board/i2c_bit_bang.rb +9 -5
  44. data/lib/denko/board/map.rb +6 -2
  45. data/lib/denko/board/one_wire.rb +3 -3
  46. data/lib/denko/board/spi.rb +30 -30
  47. data/lib/denko/board/spi_bit_bang.rb +8 -11
  48. data/lib/denko/board.rb +6 -3
  49. data/lib/denko/connection/flow_control.rb +1 -1
  50. data/lib/denko/connection/serial.rb +5 -5
  51. data/lib/denko/digital_io/output.rb +12 -4
  52. data/lib/denko/digital_io/pcf8574.rb +114 -0
  53. data/lib/denko/digital_io/rotary_encoder.rb +10 -6
  54. data/lib/denko/digital_io.rb +24 -6
  55. data/lib/denko/display/canvas.rb +350 -157
  56. data/lib/denko/display/font/bmp_5x7.rb +142 -0
  57. data/lib/denko/display/font/bmp_6x8.rb +142 -0
  58. data/lib/denko/display/font/bmp_8x16.rb +141 -0
  59. data/lib/denko/display/font.rb +22 -0
  60. data/lib/denko/display/hd44780.rb +24 -20
  61. data/lib/denko/display/il0373.rb +186 -0
  62. data/lib/denko/display/mono_oled.rb +193 -0
  63. data/lib/denko/display/pcd8544.rb +154 -0
  64. data/lib/denko/display/pixel_common.rb +83 -0
  65. data/lib/denko/display/sh1106.rb +17 -21
  66. data/lib/denko/display/sh1107.rb +10 -0
  67. data/lib/denko/display/spi_common.rb +35 -0
  68. data/lib/denko/display/spi_epaper_common.rb +30 -0
  69. data/lib/denko/display/ssd1306.rb +6 -228
  70. data/lib/denko/display/ssd1680.rb +14 -0
  71. data/lib/denko/display/ssd1681.rb +8 -0
  72. data/lib/denko/display/ssd168x.rb +227 -0
  73. data/lib/denko/display/st7302.rb +207 -0
  74. data/lib/denko/display/st7565.rb +166 -0
  75. data/lib/denko/display.rb +40 -4
  76. data/lib/denko/eeprom/at24c.rb +67 -0
  77. data/lib/denko/eeprom/board.rb +69 -0
  78. data/lib/denko/eeprom.rb +15 -1
  79. data/lib/denko/helpers/engine_check.rb +13 -0
  80. data/lib/denko/{mutex_stub.rb → helpers/mutex_stub.rb} +6 -0
  81. data/lib/denko/helpers.rb +6 -0
  82. data/lib/denko/i2c/bit_bang.rb +1 -0
  83. data/lib/denko/i2c/bus_common.rb +9 -4
  84. data/lib/denko/i2c/peripheral.rb +5 -1
  85. data/lib/denko/i2c.rb +17 -4
  86. data/lib/denko/led/apa102.rb +1 -3
  87. data/lib/denko/led/base.rb +5 -0
  88. data/lib/denko/led/rgb.rb +16 -10
  89. data/lib/denko/led/seven_segment.rb +1 -1
  90. data/lib/denko/led.rb +17 -8
  91. data/lib/denko/motor/{stepper.rb → a3967.rb} +1 -1
  92. data/lib/denko/motor/servo.rb +16 -6
  93. data/lib/denko/motor.rb +16 -3
  94. data/lib/denko/one_wire/bus.rb +20 -16
  95. data/lib/denko/one_wire/bus_enumerator.rb +25 -14
  96. data/lib/denko/one_wire/helper.rb +4 -2
  97. data/lib/denko/one_wire.rb +18 -5
  98. data/lib/denko/pulse_io/buzzer.rb +2 -6
  99. data/lib/denko/pulse_io/ir_output.rb +1 -5
  100. data/lib/denko/pulse_io/pwm_output.rb +56 -31
  101. data/lib/denko/pulse_io.rb +17 -3
  102. data/lib/denko/rtc/ds3231.rb +4 -3
  103. data/lib/denko/rtc.rb +14 -1
  104. data/lib/denko/sensor/aht.rb +16 -20
  105. data/lib/denko/sensor/bme280.rb +23 -36
  106. data/lib/denko/sensor/bmp180.rb +8 -13
  107. data/lib/denko/sensor/dht.rb +17 -7
  108. data/lib/denko/sensor/ds18b20.rb +5 -4
  109. data/lib/denko/sensor/hdc1080.rb +174 -0
  110. data/lib/denko/sensor/htu21d.rb +17 -6
  111. data/lib/denko/sensor/htu31d.rb +6 -5
  112. data/lib/denko/sensor/jsnsr04t.rb +49 -0
  113. data/lib/denko/sensor/qmp6988.rb +14 -30
  114. data/lib/denko/sensor/rcwl9620.rb +1 -0
  115. data/lib/denko/sensor/sht3x.rb +6 -5
  116. data/lib/denko/sensor/sht4x.rb +125 -0
  117. data/lib/denko/sensor/vl53l0x.rb +58 -0
  118. data/lib/denko/sensor.rb +33 -15
  119. data/lib/denko/spi/base_register.rb +11 -7
  120. data/lib/denko/spi/bus_common.rb +12 -15
  121. data/lib/denko/spi/input_register.rb +6 -6
  122. data/lib/denko/spi/output_register.rb +13 -4
  123. data/lib/denko/spi/peripheral.rb +82 -84
  124. data/lib/denko/spi.rb +20 -10
  125. data/lib/denko/uart/bit_bang.rb +2 -27
  126. data/lib/denko/uart/common.rb +33 -0
  127. data/lib/denko/uart/hardware.rb +1 -26
  128. data/lib/denko/uart.rb +16 -2
  129. data/lib/denko/version.rb +1 -1
  130. data/lib/denko.rb +22 -25
  131. data/lib/denko_cli/targets.rb +7 -7
  132. data/lib/denko_cli/targets.txt +19 -20
  133. data/src/lib/Denko.cpp +26 -13
  134. data/src/lib/Denko.h +4 -4
  135. data/src/lib/DenkoDefines.h +7 -26
  136. data/src/lib/DenkoLEDArray.cpp +1 -8
  137. data/src/lib/DenkoSPI.cpp +31 -29
  138. data/src/lib/DenkoSPIBB.cpp +12 -14
  139. data/test/analog_io/input_test.rb +1 -1
  140. data/test/analog_io/potentiometer_test.rb +2 -2
  141. data/test/behaviors/bus_peripheral_test.rb +4 -4
  142. data/test/behaviors/callbacks_test.rb +20 -10
  143. data/test/behaviors/component_test.rb +18 -8
  144. data/test/board/board_test.rb +9 -9
  145. data/test/board/one_wire_test.rb +25 -14
  146. data/test/board/spi_test.rb +31 -15
  147. data/test/digital_io/input_test.rb +2 -2
  148. data/test/display/canvas_test.rb +306 -0
  149. data/test/display/hd44780_test.rb +34 -7
  150. data/test/eeprom/board_test.rb +45 -0
  151. data/test/helpers/mruby_minitest.rb +95 -0
  152. data/test/helpers/mruby_runner.rb +13 -0
  153. data/test/i2c/bus_test.rb +93 -30
  154. data/test/i2c/peripheral_test.rb +2 -2
  155. data/test/led/apa102_test.rb +24 -0
  156. data/test/led/rgb_test.rb +4 -4
  157. data/test/motor/{stepper_test.rb → a3967_test.rb} +2 -2
  158. data/test/one_wire/bus_enumerator_test.rb +1 -1
  159. data/test/one_wire/bus_test.rb +42 -35
  160. data/test/one_wire/peripheral_test.rb +5 -17
  161. data/test/pulse_io/ir_output_test.rb +5 -0
  162. data/test/pulse_io/pwm_output_test.rb +10 -10
  163. data/test/rtc/ds3231_test.rb +3 -2
  164. data/test/sensor/dht_test.rb +11 -11
  165. data/test/spi/bitbang_test.rb +27 -0
  166. data/test/spi/bus_test.rb +19 -29
  167. data/test/spi/input_register_test.rb +2 -2
  168. data/test/spi/{peripheral_multi_pin_test.rb → peripheral_test.rb} +25 -5
  169. data/test/test_helper.rb +44 -124
  170. data/vendor/board-maps/BoardMap.h +264 -0
  171. data/vendor/board-maps/yaml/ALFREDO_NOU3.yml +2 -0
  172. data/vendor/board-maps/yaml/ATD143_S3.yml +1 -0
  173. data/vendor/board-maps/yaml/BHARATPI_A7672S_4G.yml +14 -0
  174. data/vendor/board-maps/yaml/BHARATPI_LORA.yml +14 -0
  175. data/vendor/board-maps/yaml/BHARATPI_NODE_WIFI.yml +14 -0
  176. data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +0 -1
  177. data/vendor/board-maps/yaml/CEZERIO_DEV_ESP32C6.yml +14 -0
  178. data/vendor/board-maps/yaml/CEZERIO_MINI_DEV_ESP32C6.yml +12 -0
  179. data/vendor/board-maps/yaml/CIRCUITART_ZERO_S3.yml +71 -0
  180. data/vendor/board-maps/yaml/CODECELLC3.yml +13 -0
  181. data/vendor/board-maps/yaml/CYOBOT_V2_ESP32S3.yml +7 -0
  182. data/vendor/board-maps/yaml/EDGES3D.yml +25 -0
  183. data/vendor/board-maps/yaml/ESP32C6_DEV.yml +3 -4
  184. data/vendor/board-maps/yaml/ESP32C6_THING_PLUS.yml +0 -1
  185. data/vendor/board-maps/yaml/ESP32H2_DEV.yml +0 -1
  186. data/vendor/board-maps/yaml/ESP32H2_DEVKIT_LIPO.yml +0 -1
  187. data/vendor/board-maps/yaml/ESP32P4_DEV.yml +35 -0
  188. data/vendor/board-maps/yaml/ESP32S2_DEV.yml +0 -1
  189. data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO.yml +0 -1
  190. data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO_USB.yml +0 -1
  191. data/vendor/board-maps/yaml/ESP32_2432S028R.yml +14 -0
  192. data/vendor/board-maps/yaml/FEATHERS3.yml +1 -1
  193. data/vendor/board-maps/yaml/FRI3D_2024_ESP32S3.yml +43 -0
  194. data/vendor/board-maps/yaml/GEEKBLE_ESP32C3.yml +0 -1
  195. data/vendor/board-maps/yaml/GEEKBLE_NANO_ESP32S3.yml +25 -0
  196. data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_E290.yml +41 -0
  197. data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_E_213.yml +41 -0
  198. data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_T190.yml +41 -0
  199. data/vendor/board-maps/yaml/HUIDU_HD_WF2.yml +5 -0
  200. data/vendor/board-maps/yaml/HUIDU_HD_WF4.yml +1 -0
  201. data/vendor/board-maps/yaml/LILYGO_LORA_CC1101.yml +6 -0
  202. data/vendor/board-maps/yaml/LILYGO_LORA_LR1121.yml +6 -0
  203. data/vendor/board-maps/yaml/LILYGO_LORA_SI4432.yml +6 -0
  204. data/vendor/board-maps/yaml/LILYGO_LORA_SX1262.yml +6 -0
  205. data/vendor/board-maps/yaml/LILYGO_LORA_SX1280.yml +6 -0
  206. data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +0 -1
  207. data/vendor/board-maps/yaml/LOLIN_C3_PICO.yml +1 -2
  208. data/vendor/board-maps/yaml/LoPy.yml +0 -1
  209. data/vendor/board-maps/yaml/LoPy4.yml +0 -1
  210. data/vendor/board-maps/yaml/M5STACK_DINMETER.yml +8 -0
  211. data/vendor/board-maps/yaml/M5STACK_FIRE.yml +1 -1
  212. data/vendor/board-maps/yaml/OMGS3.yml +25 -0
  213. data/vendor/board-maps/yaml/PCBCUPID_GLYPHC3.yml +23 -0
  214. data/vendor/board-maps/yaml/PCBCUPID_GLYPHC6.yml +32 -0
  215. data/vendor/board-maps/yaml/PCBCUPID_GLYPHH2.yml +24 -0
  216. data/vendor/board-maps/yaml/PYCOM_GPY.yml +0 -1
  217. data/vendor/board-maps/yaml/SENSEBOX_MCU_ESP32S2.yml +1 -1
  218. data/vendor/board-maps/yaml/SPARKFUN_ESP32S3_THING_PLUS.yml +13 -0
  219. data/vendor/board-maps/yaml/SPARKLEMOTIONMINI_ESP32.yml +12 -0
  220. data/vendor/board-maps/yaml/SPARKLEMOTIONSTICK_ESP32.yml +11 -0
  221. data/vendor/board-maps/yaml/SPARKLEMOTION_ESP32.yml +12 -0
  222. data/vendor/board-maps/yaml/SQUIXL.yml +7 -0
  223. data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER_C6.yml +0 -1
  224. data/vendor/board-maps/yaml/T_LORA_PAGER.yml +6 -0
  225. data/vendor/board-maps/yaml/T_WATCH_S3.yml +7 -0
  226. data/vendor/board-maps/yaml/T_WATCH_S3_ULTRA.yml +6 -0
  227. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_146.yml +41 -0
  228. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_147.yml +41 -0
  229. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_169.yml +38 -0
  230. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_185.yml +41 -0
  231. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_RELAY_6CH.yml +41 -0
  232. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_143.yml +7 -0
  233. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_164.yml +7 -0
  234. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_18.yml +38 -0
  235. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_191.yml +7 -0
  236. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_241.yml +7 -0
  237. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_146.yml +41 -0
  238. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_169.yml +38 -0
  239. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_185.yml +41 -0
  240. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_185_BOX.yml +41 -0
  241. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_21.yml +41 -0
  242. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_28.yml +41 -0
  243. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_4.yml +36 -0
  244. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_43.yml +38 -0
  245. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_43B.yml +38 -0
  246. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_5.yml +38 -0
  247. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_5B.yml +38 -0
  248. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_7.yml +38 -0
  249. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_ZERO.yml +36 -0
  250. data/vendor/board-maps/yaml/WIPY3.yml +0 -1
  251. data/vendor/board-maps/yaml/WS_ESP32_S3_MATRIX.yml +38 -0
  252. data/vendor/board-maps/yaml/XIAO_ESP32S3_PLUS.yml +46 -0
  253. data/vendor/board-maps/yaml/YB_ESP32S3_AMP_V2.yml +28 -0
  254. data/vendor/board-maps/yaml/YB_ESP32S3_AMP_V3.yml +28 -0
  255. data/vendor/board-maps/yaml/YB_ESP32S3_ETH.yml +40 -0
  256. data/vendor/board-maps/yaml/mercury.yml +20 -0
  257. metadata +116 -101
  258. data/.vscode/settings.json +0 -5
  259. data/.vscode/tasks.json +0 -20
  260. data/HARDWARE.md +0 -263
  261. data/benchmarks/analog_listen.rb +0 -49
  262. data/benchmarks/digital_write.rb +0 -28
  263. data/benchmarks/i2c_ssd1306_refresh.rb +0 -91
  264. data/examples/advanced/m5_env3.rb +0 -46
  265. data/examples/advanced/rotary_encoder_mac_volume.rb +0 -53
  266. data/examples/advanced/ssd1306_time_temp_rh.rb +0 -43
  267. data/examples/analog_io/ads1100.rb +0 -48
  268. data/examples/analog_io/ads1115.rb +0 -57
  269. data/examples/analog_io/ads1118.rb +0 -65
  270. data/examples/analog_io/dac_loopback.rb +0 -34
  271. data/examples/analog_io/input.rb +0 -56
  272. data/examples/analog_io/input_smoothing.rb +0 -27
  273. data/examples/analog_io/potentiometer.rb +0 -31
  274. data/examples/connection/binary_echo.rb +0 -34
  275. data/examples/connection/tcp.rb +0 -19
  276. data/examples/digital_io/button.rb +0 -17
  277. data/examples/digital_io/relay.rb +0 -17
  278. data/examples/digital_io/rotary_encoder.rb +0 -36
  279. data/examples/display/hd44780.png +0 -0
  280. data/examples/display/hd44780.rb +0 -47
  281. data/examples/display/ssd1306.rb +0 -43
  282. data/examples/display/ssd1306_s2_pico.rb +0 -29
  283. data/examples/eeprom/built_in.rb +0 -32
  284. data/examples/i2c/search.rb +0 -39
  285. data/examples/led/apa102_bounce.rb +0 -32
  286. data/examples/led/apa102_fade.rb +0 -44
  287. data/examples/led/builtin_blink.rb +0 -14
  288. data/examples/led/builtin_fade.rb +0 -19
  289. data/examples/led/rgb_led.rb +0 -31
  290. data/examples/led/seven_segment_char_echo.rb +0 -17
  291. data/examples/led/ws2812_bounce.rb +0 -30
  292. data/examples/led/ws2812_builtin_blink.rb +0 -22
  293. data/examples/led/ws2812_fade.rb +0 -43
  294. data/examples/motor/l298.rb +0 -45
  295. data/examples/motor/servo.rb +0 -17
  296. data/examples/motor/stepper.png +0 -0
  297. data/examples/motor/stepper.rb +0 -43
  298. data/examples/one_wire/search.rb +0 -32
  299. data/examples/pulse_io/buzzer.rb +0 -35
  300. data/examples/pulse_io/ir_output.rb +0 -51
  301. data/examples/pulse_io/pwm_output.rb +0 -30
  302. data/examples/rtc/ds3231.rb +0 -31
  303. data/examples/sensor/aht10.rb +0 -17
  304. data/examples/sensor/aht20.rb +0 -17
  305. data/examples/sensor/bme280.rb +0 -38
  306. data/examples/sensor/bmp180.rb +0 -26
  307. data/examples/sensor/dht.rb +0 -29
  308. data/examples/sensor/ds18b20.rb +0 -57
  309. data/examples/sensor/generic_pir.rb +0 -27
  310. data/examples/sensor/hcsr04.rb +0 -17
  311. data/examples/sensor/htu21d.rb +0 -43
  312. data/examples/sensor/htu31d.rb +0 -33
  313. data/examples/sensor/neat_tph_readings.rb +0 -32
  314. data/examples/sensor/qmp6988.rb +0 -51
  315. data/examples/sensor/rcwl9620.rb +0 -15
  316. data/examples/sensor/sht3x.rb +0 -32
  317. data/examples/spi/bitbang_loopback.rb +0 -46
  318. data/examples/spi/input_register.rb +0 -40
  319. data/examples/spi/output_register.rb +0 -41
  320. data/examples/spi/ssd_through_registers.rb +0 -28
  321. data/examples/spi/two_registers.rb +0 -40
  322. data/examples/uart/bit_bang_demo.rb +0 -25
  323. data/examples/uart/board_passthrough.rb +0 -40
  324. data/examples/uart/hardware_loopback.rb +0 -16
  325. data/lib/denko/eeprom/built_in.rb +0 -72
  326. data/lib/denko/fonts.rb +0 -106
  327. data/test/eeprom/built_in_test.rb +0 -61
  328. data/test/spi/peripheral_single_pin_test.rb +0 -48
  329. data/tutorial/01-led/led.fzz +0 -0
  330. data/tutorial/01-led/led.pdf +0 -0
  331. data/tutorial/01-led/led.rb +0 -73
  332. data/tutorial/02-button/button.fzz +0 -0
  333. data/tutorial/02-button/button.pdf +0 -0
  334. data/tutorial/02-button/button.rb +0 -65
  335. data/tutorial/03-potentiometer/potentiometer.fzz +0 -0
  336. data/tutorial/03-potentiometer/potentiometer.pdf +0 -0
  337. data/tutorial/03-potentiometer/potentiometer.rb +0 -66
  338. data/tutorial/04-pwm_led/pwm_led.fzz +0 -0
  339. data/tutorial/04-pwm_led/pwm_led.pdf +0 -0
  340. data/tutorial/04-pwm_led/pwm_led.rb +0 -64
  341. data/tutorial/05-rgb_led/rgb_led.fzz +0 -0
  342. data/tutorial/05-rgb_led/rgb_led.pdf +0 -0
  343. data/tutorial/05-rgb_led/rgb_led.rb +0 -58
  344. data/tutorial/05-rgb_led/rgb_mapping.rb +0 -76
data/test/test_helper.rb CHANGED
@@ -12,84 +12,6 @@ end
12
12
  require 'bundler/setup'
13
13
  require 'denko'
14
14
 
15
- # Touch each class to trigger auto load for simplecov.
16
- # Analog IO
17
- Denko::AnalogIO::ADS1118
18
- Denko::AnalogIO::Input
19
- Denko::AnalogIO::Output
20
- Denko::AnalogIO::Potentiometer
21
-
22
- # Behaviors
23
- # Not needed, since every behavior will be included by at least one class.
24
-
25
- # Board
26
- # BoardMock inherits from Denko::Board
27
-
28
- # Connection
29
- Denko::Connection::Serial
30
- Denko::Connection::TCP
31
-
32
- # Digital IO
33
- Denko::DigitalIO::Button
34
- Denko::DigitalIO::Input
35
- Denko::DigitalIO::Output
36
- Denko::DigitalIO::Relay
37
- Denko::DigitalIO::RotaryEncoder
38
-
39
- # Display
40
- Denko::Display::Canvas
41
- Denko::Display::HD44780
42
- Denko::Display::SSD1306
43
-
44
- # EEPROM
45
- Denko::EEPROM::BuiltIn
46
-
47
- # I2C
48
- Denko::I2C::Bus
49
- Denko::I2C::Peripheral
50
-
51
- # LED
52
- Denko::LED::APA102
53
- Denko::LED::Base
54
- Denko::LED::RGB
55
- Denko::LED::SevenSegment
56
- Denko::LED::WS2812
57
-
58
- # Motor
59
- Denko::Motor::L298
60
- Denko::Motor::Servo
61
- Denko::Motor::Stepper
62
-
63
- # OneWire
64
- Denko::OneWire::Bus
65
- Denko::OneWire::Peripheral
66
- Denko::OneWire::Helper
67
-
68
- # Pulse IO
69
- Denko::PulseIO::Buzzer
70
- Denko::PulseIO::IROutput
71
- Denko::PulseIO::PWMOutput
72
-
73
- # RTC
74
- Denko::RTC::DS3231
75
-
76
- # Sensor
77
- Denko::Sensor::BME280
78
- Denko::Sensor::BMP280
79
- Denko::Sensor::DHT
80
- Denko::Sensor::DS18B20
81
- Denko::Sensor::HTU21D
82
-
83
- # SPI
84
- Denko::SPI::BaseRegister
85
- Denko::SPI::BitBang
86
- Denko::SPI::Bus
87
- Denko::SPI::InputRegister
88
- Denko::SPI::OutputRegister
89
-
90
- # UART
91
- Denko::UART::BitBang
92
-
93
15
  # Helper module to redefine constants quietly.
94
16
  module Constants
95
17
  def self.redefine(const, value, opts={})
@@ -145,73 +67,71 @@ class ConnectionMock
145
67
  end
146
68
 
147
69
  class BoardMock < Denko::Board
148
- def initialize
70
+ def initialize(connection=nil, options={})
149
71
  super(ConnectionMock.new)
150
- @read_injection_mutex = Mutex.new
151
72
  end
152
73
 
153
- WAITING_ON_READ_KEYS = [:read, :bus_controller, :board_proxy, :force_udpate]
154
-
155
- def waiting_on_read(component)
156
- WAITING_ON_READ_KEYS.each do |key|
157
- return true if component.callbacks[key]
158
- end
74
+ def is_a_register?
159
75
  false
160
76
  end
161
77
 
162
- def single_pin_component_exists(pin)
163
- return single_pin_components[pin]
164
- false
78
+ #
79
+ # Reads are async, in a background thread. This is a way to detect when a Component has
80
+ # initiated a read, and is waiting on a response that will eventually call its #update.
81
+ #
82
+ WAITING_ON_READ_KEYS = [:read, :read_raw, :bus_controller, :board_proxy, :force_update]
83
+
84
+ def read_injection_mutex
85
+ @read_injection_mutex ||= Mutex.new
165
86
  end
166
87
 
167
- def hw_i2c_exists(index)
168
- return hw_i2c_comps[index]
88
+ def expects_reading?(component)
89
+ WAITING_ON_READ_KEYS.each { |key| return true if component.callbacks[key] }
169
90
  false
170
91
  end
171
92
 
93
+ def wait_for_component_read(component)
94
+ sleep(0.001) while !component.callbacks
95
+ sleep(0.001) while !expects_reading?(component)
96
+ end
97
+
172
98
  #
173
- # Inject a message into the Board instance as if it were coming from the phsyical board.
174
- # Use this to mock input data for the blocking #read pattern in the Reader behavior.
99
+ # Inject a message that will call the Component#update directly after it reads,
100
+ # bypassing Board. Use for testing above the Board interface.
175
101
  #
176
- def inject_read_for_pin(pin, message)
102
+ def inject_component_update(component, data)
177
103
  Thread.new do
178
- # Wait for a component to be added.
179
- component = false
180
- while !component
181
- sleep(0.001)
182
- component = single_pin_component_exists(pin)
183
- end
184
- inject_read(component, "#{pin}:#{message}")
104
+ wait_for_component_read(component)
105
+ sleep 0.005 unless RUBY_ENGINE == "ruby"
106
+ read_injection_mutex.synchronize { component.update(data) }
185
107
  end
186
108
  end
187
109
 
188
- def inject_read_for_i2c(index, message)
189
- Thread.new do
190
- # Wait for a component to be added.
191
- component = false
192
- while !component
193
- sleep(0.001)
194
- component = hw_i2c_exists(index)
195
- end
196
- inject_read(component, "I2C#{index}:#{message}")
110
+ #
111
+ # We also want to inject readings at the pin or bus level, to test Board itself,
112
+ # or for integration tests. This waits for a pin to have a Component attached to it.
113
+ #
114
+ def wait_for_component_on_pin(pin)
115
+ component = false
116
+ while !component
117
+ sleep(0.001)
118
+ component = single_pin_components[pin]
197
119
  end
120
+ component
198
121
  end
199
122
 
200
- def inject_read_for_component(component, pin, message)
123
+ #
124
+ # Inject a message into the Board instance as if coming from a pin on the phsyical board.
125
+ # Use for testing Board internals, Board interface, and integration tests.
126
+ #
127
+ def inject_read_for_pin(pin, message)
201
128
  Thread.new do
202
- inject_read(component, "#{pin}:#{message}")
203
- end
204
- end
205
-
206
- def inject_read(component, string)
207
- # Wait for the component to have a "WAITING_ON_READ" callback.
208
- sleep(0.001) while !component.callback_mutex
209
- sleep(0.001) while !component.callbacks
210
- sleep(0.001) while !waiting_on_read(component)
211
-
212
- # Then inject the message.
213
- @read_injection_mutex.synchronize do
214
- self.update(string)
129
+ component = wait_for_component_on_pin(pin)
130
+ wait_for_component_read(component)
131
+ sleep 0.005 unless RUBY_ENGINE == "ruby"
132
+ read_injection_mutex.synchronize do
133
+ self.update("#{pin}:#{message}")
134
+ end
215
135
  end
216
136
  end
217
137
  end
@@ -110,6 +110,10 @@
110
110
  #define BOARD_MAP "ESP32C2_DEV"
111
111
  #endif
112
112
 
113
+ #ifdef ARDUINO_ESP32P4_DEV
114
+ #define BOARD_MAP "ESP32P4_DEV"
115
+ #endif
116
+
113
117
  #ifdef ARDUINO_ESP32H2_DEV
114
118
  #define BOARD_MAP "ESP32H2_DEV"
115
119
  #endif
@@ -166,10 +170,26 @@
166
170
  #define BOARD_MAP "AVENTEN_S3_SYNC"
167
171
  #endif
168
172
 
173
+ #ifdef ARDUINO_BHARATPI_NODE_WIFI
174
+ #define BOARD_MAP "BHARATPI_NODE_WIFI"
175
+ #endif
176
+
177
+ #ifdef ARDUINO_BHARATPI_A7672S_4G
178
+ #define BOARD_MAP "BHARATPI_A7672S_4G"
179
+ #endif
180
+
181
+ #ifdef ARDUINO_BHARATPI_LORA
182
+ #define BOARD_MAP "BHARATPI_LORA"
183
+ #endif
184
+
169
185
  #ifdef ARDUINO_BLING
170
186
  #define BOARD_MAP "BLING"
171
187
  #endif
172
188
 
189
+ #ifdef ARDUINO_EDGES3D
190
+ #define BOARD_MAP "EDGES3D"
191
+ #endif
192
+
173
193
  #ifdef ARDUINO_FEATHERS2
174
194
  #define BOARD_MAP "FEATHERS2"
175
195
  #endif
@@ -190,10 +210,18 @@
190
210
  #define BOARD_MAP "NANOS3"
191
211
  #endif
192
212
 
213
+ #ifdef ARDUINO_OMGS3
214
+ #define BOARD_MAP "OMGS3"
215
+ #endif
216
+
193
217
  #ifdef ARDUINO_PROS3
194
218
  #define BOARD_MAP "PROS3"
195
219
  #endif
196
220
 
221
+ #ifdef ARDUINO_SQUIXL
222
+ #define BOARD_MAP "SQUIXL"
223
+ #endif
224
+
197
225
  #ifdef ARDUINO_TINYPICO
198
226
  #define BOARD_MAP "TINYPICO"
199
227
  #endif
@@ -246,6 +274,38 @@
246
274
  #define BOARD_MAP "LILYGO_T3S3_LR1121"
247
275
  #endif
248
276
 
277
+ #ifdef ARDUINO_T_WATCH_S3
278
+ #define BOARD_MAP "T_WATCH_S3"
279
+ #endif
280
+
281
+ #ifdef ARDUINO_LILYGO_LORA_SX1262
282
+ #define BOARD_MAP "LILYGO_LORA_SX1262"
283
+ #endif
284
+
285
+ #ifdef ARDUINO_LILYGO_LORA_SX1280
286
+ #define BOARD_MAP "LILYGO_LORA_SX1280"
287
+ #endif
288
+
289
+ #ifdef ARDUINO_LILYGO_LORA_CC1101
290
+ #define BOARD_MAP "LILYGO_LORA_CC1101"
291
+ #endif
292
+
293
+ #ifdef ARDUINO_LILYGO_LORA_LR1121
294
+ #define BOARD_MAP "LILYGO_LORA_LR1121"
295
+ #endif
296
+
297
+ #ifdef ARDUINO_LILYGO_LORA_SI4432
298
+ #define BOARD_MAP "LILYGO_LORA_SI4432"
299
+ #endif
300
+
301
+ #ifdef ARDUINO_T_WATCH_S3_ULTRA
302
+ #define BOARD_MAP "T_WATCH_S3_ULTRA"
303
+ #endif
304
+
305
+ #ifdef ARDUINO_T_LORA_PAGER
306
+ #define BOARD_MAP "T_LORA_PAGER"
307
+ #endif
308
+
249
309
  #ifdef ARDUINO_MICROS2
250
310
  #define BOARD_MAP "MICROS2"
251
311
  #endif
@@ -294,6 +354,10 @@
294
354
  #define BOARD_MAP "ESP32S2_THING_PLUS"
295
355
  #endif
296
356
 
357
+ #ifdef ARDUINO_SPARKFUN_ESP32S3_THING_PLUS
358
+ #define BOARD_MAP "SPARKFUN_ESP32S3_THING_PLUS"
359
+ #endif
360
+
297
361
  #ifdef ARDUINO_ESP32C6_THING_PLUS
298
362
  #define BOARD_MAP "ESP32C6_THING_PLUS"
299
363
  #endif
@@ -542,6 +606,18 @@
542
606
  #define BOARD_MAP "QUALIA_S3_RGB666"
543
607
  #endif
544
608
 
609
+ #ifdef ARDUINO_SPARKLEMOTION_ESP32
610
+ #define BOARD_MAP "SPARKLEMOTION_ESP32"
611
+ #endif
612
+
613
+ #ifdef ARDUINO_SPARKLEMOTIONMINI_ESP32
614
+ #define BOARD_MAP "SPARKLEMOTIONMINI_ESP32"
615
+ #endif
616
+
617
+ #ifdef ARDUINO_SPARKLEMOTIONSTICK_ESP32
618
+ #define BOARD_MAP "SPARKLEMOTIONSTICK_ESP32"
619
+ #endif
620
+
545
621
  #ifdef ARDUINO_NODEMCU_32S
546
622
  #define BOARD_MAP "NODEMCU_32S"
547
623
  #endif
@@ -722,6 +798,10 @@
722
798
  #define BOARD_MAP "M5STACK_DIAL"
723
799
  #endif
724
800
 
801
+ #ifdef ARDUINO_M5STACK_DINMETER
802
+ #define BOARD_MAP "M5STACK_DINMETER"
803
+ #endif
804
+
725
805
  #ifdef ARDUINO_M5STACK_NANOC6
726
806
  #define BOARD_MAP "M5STACK_NANOC6"
727
807
  #endif
@@ -794,6 +874,18 @@
794
874
  #define BOARD_MAP "HT_DE01"
795
875
  #endif
796
876
 
877
+ #ifdef ARDUINO_HELTEC_VISION_MASTER_E290
878
+ #define BOARD_MAP "HELTEC_VISION_MASTER_E290"
879
+ #endif
880
+
881
+ #ifdef ARDUINO_HELTEC_VISION_MASTER_T190
882
+ #define BOARD_MAP "HELTEC_VISION_MASTER_T190"
883
+ #endif
884
+
885
+ #ifdef ARDUINO_HELTEC_VISION_MASTER_E_213
886
+ #define BOARD_MAP "HELTEC_VISION_MASTER_E_213"
887
+ #endif
888
+
797
889
  #ifdef ARDUINO_ESPECTRO32
798
890
  #define BOARD_MAP "ESPECTRO32"
799
891
  #endif
@@ -874,6 +966,10 @@
874
966
  #define BOARD_MAP "fm_devkit"
875
967
  #endif
876
968
 
969
+ #ifdef ARDUINO_FRI3D_2024_ESP32S3
970
+ #define BOARD_MAP "FRI3D_2024_ESP32S3"
971
+ #endif
972
+
877
973
  #ifdef ARDUINO_FROG_ESP32
878
974
  #define BOARD_MAP "FROG_ESP32"
879
975
  #endif
@@ -1090,6 +1186,10 @@
1090
1186
  #define BOARD_MAP "XIAO_ESP32S3"
1091
1187
  #endif
1092
1188
 
1189
+ #ifdef ARDUINO_XIAO_ESP32S3_PLUS
1190
+ #define BOARD_MAP "XIAO_ESP32S3_PLUS"
1191
+ #endif
1192
+
1093
1193
  #ifdef ARDUINO_connaxio_espoir
1094
1194
  #define BOARD_MAP "connaxio_espoir"
1095
1195
  #endif
@@ -1222,6 +1322,30 @@
1222
1322
  #define BOARD_MAP "GEEKBLE_ESP32C3"
1223
1323
  #endif
1224
1324
 
1325
+ #ifdef ARDUINO_GEEKBLE_NANO_ESP32S3
1326
+ #define BOARD_MAP "GEEKBLE_NANO_ESP32S3"
1327
+ #endif
1328
+
1329
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_ZERO
1330
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_ZERO"
1331
+ #endif
1332
+
1333
+ #ifdef ARDUINO_WS_ESP32_S3_MATRIX
1334
+ #define BOARD_MAP "WS_ESP32_S3_MATRIX"
1335
+ #endif
1336
+
1337
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_169
1338
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_169"
1339
+ #endif
1340
+
1341
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_AMOLED_18
1342
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_AMOLED_18"
1343
+ #endif
1344
+
1345
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_LCD_169
1346
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_LCD_169"
1347
+ #endif
1348
+
1225
1349
  #ifdef ARDUINO_WAVESHARE_ESP32S3_TOUCH_LCD_128
1226
1350
  #define BOARD_MAP "WAVESHARE_ESP32S3_TOUCH_LCD_128"
1227
1351
  #endif
@@ -1242,6 +1366,142 @@
1242
1366
  #define BOARD_MAP "ELECROW_CROWPANEL_7"
1243
1367
  #endif
1244
1368
 
1369
+ #ifdef ARDUINO_CIRCUITART_ZERO_S3
1370
+ #define BOARD_MAP "CIRCUITART_ZERO_S3"
1371
+ #endif
1372
+
1373
+ #ifdef ARDUINO_ALFREDO_NOU3
1374
+ #define BOARD_MAP "ALFREDO_NOU3"
1375
+ #endif
1376
+
1377
+ #ifdef ARDUINO_CODECELLC3
1378
+ #define BOARD_MAP "CODECELLC3"
1379
+ #endif
1380
+
1381
+ #ifdef ARDUINO_ESP32_2432S028R
1382
+ #define BOARD_MAP "ESP32_2432S028R"
1383
+ #endif
1384
+
1385
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_AMOLED_241
1386
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_AMOLED_241"
1387
+ #endif
1388
+
1389
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_43
1390
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_43"
1391
+ #endif
1392
+
1393
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_43B
1394
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_43B"
1395
+ #endif
1396
+
1397
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_7
1398
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_7"
1399
+ #endif
1400
+
1401
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_5
1402
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_5"
1403
+ #endif
1404
+
1405
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_5B
1406
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_5B"
1407
+ #endif
1408
+
1409
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_4
1410
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_4"
1411
+ #endif
1412
+
1413
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_185
1414
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_185"
1415
+ #endif
1416
+
1417
+ #ifdef ARDUINO_CEZERIO_DEV_ESP32C6
1418
+ #define BOARD_MAP "CEZERIO_DEV_ESP32C6"
1419
+ #endif
1420
+
1421
+ #ifdef ARDUINO_CEZERIO_MINI_DEV_ESP32C6
1422
+ #define BOARD_MAP "CEZERIO_MINI_DEV_ESP32C6"
1423
+ #endif
1424
+
1425
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_LCD_185
1426
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_LCD_185"
1427
+ #endif
1428
+
1429
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_146
1430
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_146"
1431
+ #endif
1432
+
1433
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_LCD_146
1434
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_LCD_146"
1435
+ #endif
1436
+
1437
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_185_BOX
1438
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_185_BOX"
1439
+ #endif
1440
+
1441
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_LCD_147
1442
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_LCD_147"
1443
+ #endif
1444
+
1445
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_21
1446
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_21"
1447
+ #endif
1448
+
1449
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_LCD_28
1450
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_LCD_28"
1451
+ #endif
1452
+
1453
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_RELAY_6CH
1454
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_RELAY_6CH"
1455
+ #endif
1456
+
1457
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_AMOLED_164
1458
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_AMOLED_164"
1459
+ #endif
1460
+
1461
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_AMOLED_143
1462
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_AMOLED_143"
1463
+ #endif
1464
+
1465
+ #ifdef ARDUINO_WAVESHARE_ESP32_S3_TOUCH_AMOLED_191
1466
+ #define BOARD_MAP "WAVESHARE_ESP32_S3_TOUCH_AMOLED_191"
1467
+ #endif
1468
+
1469
+ #ifdef ARDUINO_PCBCUPID_GLYPHC3
1470
+ #define BOARD_MAP "PCBCUPID_GLYPHC3"
1471
+ #endif
1472
+
1473
+ #ifdef ARDUINO_PCBCUPID_GLYPHH2
1474
+ #define BOARD_MAP "PCBCUPID_GLYPHH2"
1475
+ #endif
1476
+
1477
+ #ifdef ARDUINO_PCBCUPID_GLYPHC6
1478
+ #define BOARD_MAP "PCBCUPID_GLYPHC6"
1479
+ #endif
1480
+
1481
+ #ifdef ARDUINO_YB_ESP32S3_AMP_V2
1482
+ #define BOARD_MAP "YB_ESP32S3_AMP_V2"
1483
+ #endif
1484
+
1485
+ #ifdef ARDUINO_YB_ESP32S3_AMP_V3
1486
+ #define BOARD_MAP "YB_ESP32S3_AMP_V3"
1487
+ #endif
1488
+
1489
+ #ifdef ARDUINO_YB_ESP32S3_ETH
1490
+ #define BOARD_MAP "YB_ESP32S3_ETH"
1491
+ #endif
1492
+
1493
+ #ifdef ARDUINO_HUIDU_HD_WF2
1494
+ #define BOARD_MAP "HUIDU_HD_WF2"
1495
+ #endif
1496
+
1497
+ #ifdef ARDUINO_HUIDU_HD_WF4
1498
+ #define BOARD_MAP "HUIDU_HD_WF4"
1499
+ #endif
1500
+
1501
+ #ifdef ARDUINO_CYOBOT_V2_ESP32S3
1502
+ #define BOARD_MAP "CYOBOT_V2_ESP32S3"
1503
+ #endif
1504
+
1245
1505
  #ifdef ARDUINO_ESP8266_GENERIC
1246
1506
  #define BOARD_MAP "ESP8266_GENERIC"
1247
1507
  #endif
@@ -1342,6 +1602,10 @@
1342
1602
  #define BOARD_MAP "ESP8266_AGRUMINO_LEMON_V4"
1343
1603
  #endif
1344
1604
 
1605
+ #ifdef ARDUINO_mercury
1606
+ #define BOARD_MAP "mercury"
1607
+ #endif
1608
+
1345
1609
  #ifdef ARDUINO_ESP8266_NODEMCU_ESP12
1346
1610
  #define BOARD_MAP "ESP8266_NODEMCU_ESP12"
1347
1611
  #endif
@@ -0,0 +1,2 @@
1
+ ---
2
+ :LED_BUILTIN: 45
@@ -5,6 +5,7 @@
5
5
  :MOSI: 11
6
6
  :MISO: 13
7
7
  :SCK: 12
8
+ :LED_BUILTIN: 5
8
9
  :A0: 1
9
10
  :A1: 2
10
11
  :A2: 3
@@ -0,0 +1,14 @@
1
+ ---
2
+ :LED_BUILTIN: 2
3
+ :A0: 14
4
+ :A1: 13
5
+ :A2: 12
6
+ :A3: 4
7
+ :A4: 2
8
+ :A5: 0
9
+ :SDA: 21
10
+ :SCL: 22
11
+ :SS: 5
12
+ :MOSI: 23
13
+ :MISO: 19
14
+ :SCK: 18
@@ -0,0 +1,14 @@
1
+ ---
2
+ :LED_BUILTIN: 2
3
+ :A0: 14
4
+ :A1: 13
5
+ :A2: 12
6
+ :A3: 4
7
+ :A4: 2
8
+ :A5: 0
9
+ :SS: 5
10
+ :SDA: 21
11
+ :SCL: 22
12
+ :MOSI: 23
13
+ :MISO: 19
14
+ :SCK: 18
@@ -0,0 +1,14 @@
1
+ ---
2
+ :LED_BUILTIN: 2
3
+ :A0: 14
4
+ :A1: 13
5
+ :A2: 12
6
+ :A3: 4
7
+ :A4: 2
8
+ :A5: 0
9
+ :SDA: 21
10
+ :SCL: 22
11
+ :SS: 5
12
+ :MOSI: 23
13
+ :MISO: 19
14
+ :SCK: 18
@@ -1,5 +1,4 @@
1
1
  ---
2
- :LED_BUILTIN: 48
3
2
  :SDA: 15
4
3
  :SCL: 16
5
4
  :SS: 10
@@ -0,0 +1,14 @@
1
+ ---
2
+ :SDA: 8
3
+ :SCL: 7
4
+ :SS: 14
5
+ :MOSI: 22
6
+ :MISO: 23
7
+ :SCK: 21
8
+ :A0: 0
9
+ :A1: 1
10
+ :A2: 2
11
+ :A3: 3
12
+ :A4: 4
13
+ :A5: 5
14
+ :A6: 6
@@ -0,0 +1,12 @@
1
+ ---
2
+ :SDA: 23
3
+ :SCL: 22
4
+ :MOSI: 19
5
+ :MISO: 21
6
+ :SCK: 18
7
+ :SS: 17
8
+ :A0: 0
9
+ :A1: 1
10
+ :A2: 2
11
+ :A3: 3
12
+ :A6: 6