denko 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (627) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/build_avr.yml +61 -0
  3. data/.github/workflows/build_esp32.yml +58 -0
  4. data/.github/workflows/build_esp8266.yml +57 -0
  5. data/.github/workflows/build_megaavr.yml +61 -0
  6. data/.github/workflows/build_rp2040.yml +61 -0
  7. data/.github/workflows/build_sam3x.yml +59 -0
  8. data/.github/workflows/build_samd.yml +61 -0
  9. data/.github/workflows/ruby.yml +47 -0
  10. data/.gitignore +24 -0
  11. data/.gitmodules +3 -0
  12. data/.vscode/settings.json +5 -0
  13. data/.vscode/tasks.json +20 -0
  14. data/CHANGELOG.md +466 -0
  15. data/DEPS_CLI.md +80 -0
  16. data/DEPS_IDE.md +120 -0
  17. data/Gemfile +4 -0
  18. data/HARDWARE.md +195 -0
  19. data/LICENSE +22 -0
  20. data/README.md +152 -0
  21. data/Rakefile +11 -0
  22. data/bin/denko +22 -0
  23. data/build +27 -0
  24. data/denko.gemspec +47 -0
  25. data/examples/advanced/rotary_encoder_mac_volume.rb +48 -0
  26. data/examples/advanced/ssd1306_time_temp_rh.rb +48 -0
  27. data/examples/analog_io/ads1118.rb +74 -0
  28. data/examples/analog_io/dac_loopback.rb +32 -0
  29. data/examples/analog_io/input.rb +52 -0
  30. data/examples/connection/tcp.rb +34 -0
  31. data/examples/digital_io/rotary_encoder.rb +26 -0
  32. data/examples/display/hd44780.png +0 -0
  33. data/examples/display/hd44780.rb +39 -0
  34. data/examples/display/ssd1306.rb +40 -0
  35. data/examples/display/ssd1306_s2_pico.rb +29 -0
  36. data/examples/eeprom/built_in.rb +32 -0
  37. data/examples/i2c/search.rb +53 -0
  38. data/examples/led/apa102_bounce.rb +33 -0
  39. data/examples/led/apa102_breathe.rb +45 -0
  40. data/examples/led/builtin_blink.rb +12 -0
  41. data/examples/led/seven_segment_char_echo.rb +15 -0
  42. data/examples/led/ws2812_bounce.rb +32 -0
  43. data/examples/led/ws2812_builtin_blink.rb +21 -0
  44. data/examples/motor/l298.rb +43 -0
  45. data/examples/motor/servo.rb +16 -0
  46. data/examples/motor/stepper.png +0 -0
  47. data/examples/motor/stepper.rb +43 -0
  48. data/examples/pulse_io/buzzer.rb +30 -0
  49. data/examples/pulse_io/ir_transmitter.rb +55 -0
  50. data/examples/rtc/ds3231.rb +48 -0
  51. data/examples/sensor/aht10.rb +15 -0
  52. data/examples/sensor/aht20.rb +15 -0
  53. data/examples/sensor/bme280.rb +75 -0
  54. data/examples/sensor/dht.rb +24 -0
  55. data/examples/sensor/ds18b20.rb +58 -0
  56. data/examples/sensor/htu21d.rb +54 -0
  57. data/examples/sensor/htu31d.rb +31 -0
  58. data/examples/spi/input_register.rb +50 -0
  59. data/examples/spi/output_register.rb +49 -0
  60. data/examples/spi/ssd_through_register.rb +40 -0
  61. data/examples/spi/two_registers.rb +46 -0
  62. data/examples/uart/bit_bang_read.rb +16 -0
  63. data/examples/uart/bit_bang_write.rb +16 -0
  64. data/examples/uart/board_passthrough.rb +34 -0
  65. data/examples/uart/hardware_loopback.rb +16 -0
  66. data/lib/denko/analog_io/ads1118.rb +182 -0
  67. data/lib/denko/analog_io/input.rb +79 -0
  68. data/lib/denko/analog_io/output.rb +20 -0
  69. data/lib/denko/analog_io/potentiometer.rb +15 -0
  70. data/lib/denko/analog_io/sensor.rb +6 -0
  71. data/lib/denko/analog_io.rb +9 -0
  72. data/lib/denko/behaviors/board_proxy.rb +23 -0
  73. data/lib/denko/behaviors/bus_controller.rb +11 -0
  74. data/lib/denko/behaviors/bus_controller_addressed.rb +15 -0
  75. data/lib/denko/behaviors/bus_peripheral.rb +21 -0
  76. data/lib/denko/behaviors/bus_peripheral_addressed.rb +15 -0
  77. data/lib/denko/behaviors/callbacks.rb +67 -0
  78. data/lib/denko/behaviors/component.rb +48 -0
  79. data/lib/denko/behaviors/input_pin.rb +24 -0
  80. data/lib/denko/behaviors/listener.rb +22 -0
  81. data/lib/denko/behaviors/multi_pin.rb +72 -0
  82. data/lib/denko/behaviors/output_pin.rb +13 -0
  83. data/lib/denko/behaviors/poller.rb +31 -0
  84. data/lib/denko/behaviors/reader.rb +49 -0
  85. data/lib/denko/behaviors/single_pin.rb +26 -0
  86. data/lib/denko/behaviors/state.rb +24 -0
  87. data/lib/denko/behaviors/subcomponents.rb +35 -0
  88. data/lib/denko/behaviors/threaded.rb +54 -0
  89. data/lib/denko/behaviors.rb +26 -0
  90. data/lib/denko/board/core.rb +151 -0
  91. data/lib/denko/board/eeprom.rb +20 -0
  92. data/lib/denko/board/i2c.rb +68 -0
  93. data/lib/denko/board/infrared.rb +18 -0
  94. data/lib/denko/board/led_array.rb +18 -0
  95. data/lib/denko/board/map.rb +46 -0
  96. data/lib/denko/board/message_pack.rb +7 -0
  97. data/lib/denko/board/one_wire.rb +34 -0
  98. data/lib/denko/board/pulse.rb +26 -0
  99. data/lib/denko/board/servo.rb +22 -0
  100. data/lib/denko/board/spi.rb +65 -0
  101. data/lib/denko/board/spi_bit_bang.rb +41 -0
  102. data/lib/denko/board/tone.rb +23 -0
  103. data/lib/denko/board/uart.rb +42 -0
  104. data/lib/denko/board/uart_bit_bang.rb +33 -0
  105. data/lib/denko/board.rb +104 -0
  106. data/lib/denko/connection/base.rb +75 -0
  107. data/lib/denko/connection/board_uart.rb +36 -0
  108. data/lib/denko/connection/flow_control.rb +153 -0
  109. data/lib/denko/connection/handshake.rb +60 -0
  110. data/lib/denko/connection/serial.rb +90 -0
  111. data/lib/denko/connection/tcp.rb +44 -0
  112. data/lib/denko/connection.rb +10 -0
  113. data/lib/denko/digital_io/button.rb +8 -0
  114. data/lib/denko/digital_io/input.rb +44 -0
  115. data/lib/denko/digital_io/output.rb +47 -0
  116. data/lib/denko/digital_io/relay.rb +6 -0
  117. data/lib/denko/digital_io/rotary_encoder.rb +107 -0
  118. data/lib/denko/digital_io.rb +9 -0
  119. data/lib/denko/display/canvas.rb +282 -0
  120. data/lib/denko/display/hd44780.rb +266 -0
  121. data/lib/denko/display/ssd1306.rb +179 -0
  122. data/lib/denko/display.rb +7 -0
  123. data/lib/denko/eeprom/built_in.rb +69 -0
  124. data/lib/denko/eeprom.rb +5 -0
  125. data/lib/denko/fonts.rb +106 -0
  126. data/lib/denko/i2c/bus.rb +52 -0
  127. data/lib/denko/i2c/peripheral.rb +38 -0
  128. data/lib/denko/i2c.rb +6 -0
  129. data/lib/denko/led/apa102.rb +87 -0
  130. data/lib/denko/led/base.rb +12 -0
  131. data/lib/denko/led/rgb.rb +38 -0
  132. data/lib/denko/led/seven_segment.rb +111 -0
  133. data/lib/denko/led/ws2812.rb +48 -0
  134. data/lib/denko/led.rb +13 -0
  135. data/lib/denko/message.rb +92 -0
  136. data/lib/denko/motor/l298.rb +49 -0
  137. data/lib/denko/motor/servo.rb +51 -0
  138. data/lib/denko/motor/stepper.rb +71 -0
  139. data/lib/denko/motor.rb +7 -0
  140. data/lib/denko/one_wire/bus.rb +61 -0
  141. data/lib/denko/one_wire/bus_enumeration.rb +88 -0
  142. data/lib/denko/one_wire/constants.rb +17 -0
  143. data/lib/denko/one_wire/helper.rb +33 -0
  144. data/lib/denko/one_wire/peripheral.rb +62 -0
  145. data/lib/denko/one_wire.rb +9 -0
  146. data/lib/denko/pulse_io/buzzer.rb +25 -0
  147. data/lib/denko/pulse_io/ir_transmitter.rb +22 -0
  148. data/lib/denko/pulse_io/pwm_output.rb +34 -0
  149. data/lib/denko/pulse_io.rb +7 -0
  150. data/lib/denko/rtc/ds3231.rb +48 -0
  151. data/lib/denko/rtc.rb +5 -0
  152. data/lib/denko/sensor/aht.rb +165 -0
  153. data/lib/denko/sensor/bme280.rb +366 -0
  154. data/lib/denko/sensor/dht.rb +43 -0
  155. data/lib/denko/sensor/ds18b20.rb +74 -0
  156. data/lib/denko/sensor/htu21d.rb +168 -0
  157. data/lib/denko/sensor/htu31d.rb +187 -0
  158. data/lib/denko/sensor/virtual.rb +42 -0
  159. data/lib/denko/sensor.rb +13 -0
  160. data/lib/denko/spi/base_register.rb +37 -0
  161. data/lib/denko/spi/bit_bang.rb +74 -0
  162. data/lib/denko/spi/bus.rb +44 -0
  163. data/lib/denko/spi/input_register.rb +130 -0
  164. data/lib/denko/spi/output_register.rb +67 -0
  165. data/lib/denko/spi/peripheral.rb +43 -0
  166. data/lib/denko/spi.rb +10 -0
  167. data/lib/denko/uart/bit_bang.rb +69 -0
  168. data/lib/denko/uart/hardware.rb +65 -0
  169. data/lib/denko/uart.rb +6 -0
  170. data/lib/denko/version.rb +3 -0
  171. data/lib/denko.rb +39 -0
  172. data/lib/denko_cli/generator.rb +171 -0
  173. data/lib/denko_cli/helper.rb +29 -0
  174. data/lib/denko_cli/missing_files.txt +20 -0
  175. data/lib/denko_cli/packages.rb +101 -0
  176. data/lib/denko_cli/parser.rb +73 -0
  177. data/lib/denko_cli/targets.rb +30 -0
  178. data/lib/denko_cli/targets.txt +113 -0
  179. data/lib/denko_cli/usage.txt +34 -0
  180. data/lib/denko_cli.rb +18 -0
  181. data/src/denko_ethernet.ino +78 -0
  182. data/src/denko_serial.ino +41 -0
  183. data/src/denko_wifi.ino +157 -0
  184. data/src/lib/Denko.cpp +330 -0
  185. data/src/lib/Denko.h +259 -0
  186. data/src/lib/DenkoCoreIO.cpp +322 -0
  187. data/src/lib/DenkoDefines.h +116 -0
  188. data/src/lib/DenkoEEPROM.cpp +64 -0
  189. data/src/lib/DenkoI2C.cpp +155 -0
  190. data/src/lib/DenkoIROut.cpp +33 -0
  191. data/src/lib/DenkoIROutESP.cpp +26 -0
  192. data/src/lib/DenkoLEDArray.cpp +49 -0
  193. data/src/lib/DenkoOneWire.cpp +156 -0
  194. data/src/lib/DenkoPulseInput.cpp +57 -0
  195. data/src/lib/DenkoSPI.cpp +165 -0
  196. data/src/lib/DenkoSPIBB.cpp +156 -0
  197. data/src/lib/DenkoServo.cpp +83 -0
  198. data/src/lib/DenkoTone.cpp +25 -0
  199. data/src/lib/DenkoUART.cpp +118 -0
  200. data/src/lib/DenkoUARTBB.cpp +62 -0
  201. data/target.yml +3 -0
  202. data/test/analog_io/input_test.rb +38 -0
  203. data/test/analog_io/output_test.rb +26 -0
  204. data/test/analog_io/potentiometer_test.rb +62 -0
  205. data/test/behaviors/board_proxy_test.rb +24 -0
  206. data/test/behaviors/bus_controller_addressed_test.rb +40 -0
  207. data/test/behaviors/bus_controller_test.rb +28 -0
  208. data/test/behaviors/bus_peripheral_addressed.rb +44 -0
  209. data/test/behaviors/bus_peripheral_test.rb +39 -0
  210. data/test/behaviors/callbacks_test.rb +118 -0
  211. data/test/behaviors/component_test.rb +56 -0
  212. data/test/behaviors/input_pin_test.rb +42 -0
  213. data/test/behaviors/listener_test.rb +60 -0
  214. data/test/behaviors/multi_pin_test.rb +70 -0
  215. data/test/behaviors/output_pin_test.rb +27 -0
  216. data/test/behaviors/poller_test.rb +64 -0
  217. data/test/behaviors/reader_test.rb +68 -0
  218. data/test/behaviors/single_pin_test.rb +41 -0
  219. data/test/behaviors/subcomponents_test.rb +75 -0
  220. data/test/behaviors/threaded_test.rb +98 -0
  221. data/test/board/board_test.rb +130 -0
  222. data/test/board/core_test.rb +182 -0
  223. data/test/board/eeprom_test.rb +34 -0
  224. data/test/board/helper_test.rb +38 -0
  225. data/test/board/i2c_test.rb +114 -0
  226. data/test/board/infrared_test.rb +37 -0
  227. data/test/board/message_test.rb +54 -0
  228. data/test/board/one_wire_test.rb +69 -0
  229. data/test/board/pulse_test.rb +51 -0
  230. data/test/board/servo_test.rb +47 -0
  231. data/test/board/spi_test.rb +97 -0
  232. data/test/board/tone_test.rb +42 -0
  233. data/test/connection/serial_test.rb +172 -0
  234. data/test/connection/tcp_test.rb +37 -0
  235. data/test/digital_io/input_test.rb +65 -0
  236. data/test/digital_io/output_test.rb +64 -0
  237. data/test/digital_io/rotary_encoder_test.rb +99 -0
  238. data/test/display/hd44780_test.rb +23 -0
  239. data/test/eeprom/built_in_test.rb +61 -0
  240. data/test/i2c/bus_test.rb +66 -0
  241. data/test/i2c/peripheral_test.rb +50 -0
  242. data/test/led/base_test.rb +24 -0
  243. data/test/led/rgb_test.rb +64 -0
  244. data/test/led/seven_segment_test.rb +86 -0
  245. data/test/motor/servo_test.rb +62 -0
  246. data/test/motor/stepper_test.rb +51 -0
  247. data/test/one_wire/bus_enumerator_test.rb +134 -0
  248. data/test/one_wire/bus_test.rb +142 -0
  249. data/test/one_wire/helper_test.rb +18 -0
  250. data/test/one_wire/peripheral_test.rb +158 -0
  251. data/test/pulse_io/buzzer_test.rb +48 -0
  252. data/test/pulse_io/ir_transmitter_test.rb +38 -0
  253. data/test/pulse_io/pwm_output_test.rb +72 -0
  254. data/test/rtc/ds3231_test.rb +55 -0
  255. data/test/sensor/dht_test.rb +64 -0
  256. data/test/sensor/ds18b20_test.rb +107 -0
  257. data/test/spi/base_register_test.rb +34 -0
  258. data/test/spi/bus_test.rb +76 -0
  259. data/test/spi/input_register_test.rb +140 -0
  260. data/test/spi/output_register_test.rb +93 -0
  261. data/test/test_helper.rb +223 -0
  262. data/test/uart/bitbang_test.rb +37 -0
  263. data/tutorial/01-led/led.fzz +0 -0
  264. data/tutorial/01-led/led.pdf +0 -0
  265. data/tutorial/01-led/led.rb +73 -0
  266. data/tutorial/02-button/button.fzz +0 -0
  267. data/tutorial/02-button/button.pdf +0 -0
  268. data/tutorial/02-button/button.rb +64 -0
  269. data/tutorial/03-potentiometer/potentiometer.fzz +0 -0
  270. data/tutorial/03-potentiometer/potentiometer.pdf +0 -0
  271. data/tutorial/03-potentiometer/potentiometer.rb +62 -0
  272. data/tutorial/04-pwm_led/pwm_led.fzz +0 -0
  273. data/tutorial/04-pwm_led/pwm_led.pdf +0 -0
  274. data/tutorial/04-pwm_led/pwm_led.rb +66 -0
  275. data/tutorial/05-rgb_led/rgb_led.fzz +0 -0
  276. data/tutorial/05-rgb_led/rgb_led.pdf +0 -0
  277. data/tutorial/05-rgb_led/rgb_led.rb +58 -0
  278. data/tutorial/05-rgb_led/rgb_mapping.rb +76 -0
  279. data/vendor/board-maps/.gitignore +56 -0
  280. data/vendor/board-maps/.gitmodules +21 -0
  281. data/vendor/board-maps/BoardMap.h +1364 -0
  282. data/vendor/board-maps/README.md +51 -0
  283. data/vendor/board-maps/lib/boards_parser.rb +66 -0
  284. data/vendor/board-maps/lib/header_parser.rb +164 -0
  285. data/vendor/board-maps/run.rb +47 -0
  286. data/vendor/board-maps/yaml/0XCB_HELIOS.yml +48 -0
  287. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2.yml +25 -0
  288. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_REVTFT.yml +25 -0
  289. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_TFT.yml +27 -0
  290. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3.yml +29 -0
  291. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_NOPSRAM.yml +29 -0
  292. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_REVTFT.yml +25 -0
  293. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_TFT.yml +27 -0
  294. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32_V2.yml +30 -0
  295. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040.yml +48 -0
  296. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_CAN.yml +48 -0
  297. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_DVI.yml +48 -0
  298. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_PROP_MAKER.yml +48 -0
  299. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_RFM.yml +48 -0
  300. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_SCORPIO.yml +48 -0
  301. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_THINKINK.yml +48 -0
  302. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_USB_HOST.yml +48 -0
  303. data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_ESP32.yml +24 -0
  304. data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_RP2040.yml +48 -0
  305. data/vendor/board-maps/yaml/ADAFRUIT_KB2040_RP2040.yml +48 -0
  306. data/vendor/board-maps/yaml/ADAFRUIT_MACROPAD_RP2040.yml +48 -0
  307. data/vendor/board-maps/yaml/ADAFRUIT_MATRIXPORTAL_ESP32S3.yml +16 -0
  308. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32C3.yml +12 -0
  309. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S2.yml +22 -0
  310. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_NOPSRAM.yml +20 -0
  311. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32_PICO.yml +27 -0
  312. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_RP2040.yml +48 -0
  313. data/vendor/board-maps/yaml/ADAFRUIT_STEMMAFRIEND_RP2040.yml +48 -0
  314. data/vendor/board-maps/yaml/ADAFRUIT_TRINKEYQT_RP2040.yml +48 -0
  315. data/vendor/board-maps/yaml/ALKS.yml +34 -0
  316. data/vendor/board-maps/yaml/AMPERKA_WIFI_SLOT.yml +16 -0
  317. data/vendor/board-maps/yaml/AVR_ADK.yml +24 -0
  318. data/vendor/board-maps/yaml/AVR_BT.yml +16 -0
  319. data/vendor/board-maps/yaml/AVR_CIRCUITPLAY.yml +14 -0
  320. data/vendor/board-maps/yaml/AVR_DUEMILANOVE.yml +16 -0
  321. data/vendor/board-maps/yaml/AVR_ESPLORA.yml +20 -0
  322. data/vendor/board-maps/yaml/AVR_ETHERNET.yml +16 -0
  323. data/vendor/board-maps/yaml/AVR_FIO.yml +16 -0
  324. data/vendor/board-maps/yaml/AVR_GEMMA.yml +6 -0
  325. data/vendor/board-maps/yaml/AVR_INDUSTRIAL101.yml +20 -0
  326. data/vendor/board-maps/yaml/AVR_LEONARDO.yml +20 -0
  327. data/vendor/board-maps/yaml/AVR_LEONARDO_ETH.yml +20 -0
  328. data/vendor/board-maps/yaml/AVR_LILYPAD.yml +16 -0
  329. data/vendor/board-maps/yaml/AVR_LILYPAD_USB.yml +20 -0
  330. data/vendor/board-maps/yaml/AVR_LININO_ONE.yml +20 -0
  331. data/vendor/board-maps/yaml/AVR_MEGA.yml +24 -0
  332. data/vendor/board-maps/yaml/AVR_MEGA2560.yml +24 -0
  333. data/vendor/board-maps/yaml/AVR_MICRO.yml +20 -0
  334. data/vendor/board-maps/yaml/AVR_MINI.yml +16 -0
  335. data/vendor/board-maps/yaml/AVR_NANO.yml +16 -0
  336. data/vendor/board-maps/yaml/AVR_NANO_EVERY.yml +22 -0
  337. data/vendor/board-maps/yaml/AVR_NG.yml +16 -0
  338. data/vendor/board-maps/yaml/AVR_PRO.yml +16 -0
  339. data/vendor/board-maps/yaml/AVR_ROBOT_CONTROL.yml +22 -0
  340. data/vendor/board-maps/yaml/AVR_ROBOT_MOTOR.yml +19 -0
  341. data/vendor/board-maps/yaml/AVR_UNO.yml +16 -0
  342. data/vendor/board-maps/yaml/AVR_UNO_WIFI_DEV_ED.yml +16 -0
  343. data/vendor/board-maps/yaml/AVR_UNO_WIFI_REV2.yml +22 -0
  344. data/vendor/board-maps/yaml/AVR_YUN.yml +20 -0
  345. data/vendor/board-maps/yaml/AVR_YUNMINI.yml +20 -0
  346. data/vendor/board-maps/yaml/AirM2M_CORE_ESP32C3.yml +14 -0
  347. data/vendor/board-maps/yaml/BEE_DATA_LOGGER.yml +39 -0
  348. data/vendor/board-maps/yaml/BPI_BIT.yml +9 -0
  349. data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +31 -0
  350. data/vendor/board-maps/yaml/BRIDGETEK_IDM2040-7A.yml +48 -0
  351. data/vendor/board-maps/yaml/BeeMotionS3.yml +40 -0
  352. data/vendor/board-maps/yaml/Bee_Motion.yml +27 -0
  353. data/vendor/board-maps/yaml/Bee_Motion_Mini.yml +1 -0
  354. data/vendor/board-maps/yaml/Bee_S3.yml +38 -0
  355. data/vendor/board-maps/yaml/CHALLENGER_2040_LORA_RP2040.yml +39 -0
  356. data/vendor/board-maps/yaml/CHALLENGER_2040_LTE_RP2040.yml +38 -0
  357. data/vendor/board-maps/yaml/CHALLENGER_2040_NFC_RP2040.yml +32 -0
  358. data/vendor/board-maps/yaml/CHALLENGER_2040_SDRTC_RP2040.yml +36 -0
  359. data/vendor/board-maps/yaml/CHALLENGER_2040_SUBGHZ_RP2040.yml +39 -0
  360. data/vendor/board-maps/yaml/CHALLENGER_2040_UWB_RP2040.yml +39 -0
  361. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_BLE_RP2040.yml +42 -0
  362. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_RP2040.yml +38 -0
  363. data/vendor/board-maps/yaml/CHALLENGER_NB_2040_WIFI_RP2040.yml +38 -0
  364. data/vendor/board-maps/yaml/CRABIK_SLOT_ESP32_S3.yml +19 -0
  365. data/vendor/board-maps/yaml/CYTRON_MAKER_FEATHER_AIOT_S3.yml +26 -0
  366. data/vendor/board-maps/yaml/CYTRON_MAKER_NANO_RP2040.yml +48 -0
  367. data/vendor/board-maps/yaml/CYTRON_MAKER_PI_RP2040.yml +48 -0
  368. data/vendor/board-maps/yaml/CoreESP32.yml +49 -0
  369. data/vendor/board-maps/yaml/D1_MINI32.yml +36 -0
  370. data/vendor/board-maps/yaml/D1_UNO32.yml +28 -0
  371. data/vendor/board-maps/yaml/DATANOISETV_PICOADK.yml +48 -0
  372. data/vendor/board-maps/yaml/DENKY.yml +26 -0
  373. data/vendor/board-maps/yaml/DENKY_PICOV3.yml +26 -0
  374. data/vendor/board-maps/yaml/DENKY_WROOM32.yml +26 -0
  375. data/vendor/board-maps/yaml/DEPARTMENT_OF_ALCHEMY_MINIMAIN_ESP32S2.yml +26 -0
  376. data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32_C3.yml +14 -0
  377. data/vendor/board-maps/yaml/DFROBOT_BEETLE_RP2040.yml +48 -0
  378. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32E.yml +44 -0
  379. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32S3.yml +38 -0
  380. data/vendor/board-maps/yaml/DFROBOT_ROMEO_ESP32S3.yml +7 -0
  381. data/vendor/board-maps/yaml/DPU_ESP32.yml +26 -0
  382. data/vendor/board-maps/yaml/DYDK.yml +38 -0
  383. data/vendor/board-maps/yaml/DYDK1A.yml +37 -0
  384. data/vendor/board-maps/yaml/DYDK1Av2.yml +45 -0
  385. data/vendor/board-maps/yaml/DYG.yml +20 -0
  386. data/vendor/board-maps/yaml/DYM.yml +40 -0
  387. data/vendor/board-maps/yaml/DYMv2.yml +39 -0
  388. data/vendor/board-maps/yaml/D_Duino_32.yml +29 -0
  389. data/vendor/board-maps/yaml/ELECTRONICCATS_HUNTERCAT_NFC.yml +44 -0
  390. data/vendor/board-maps/yaml/ESP320.yml +8 -0
  391. data/vendor/board-maps/yaml/ESP32C3_DEV.yml +14 -0
  392. data/vendor/board-maps/yaml/ESP32C3_M1_I_KIT.yml +13 -0
  393. data/vendor/board-maps/yaml/ESP32S2_DEV.yml +33 -0
  394. data/vendor/board-maps/yaml/ESP32S2_THING_PLUS.yml +34 -0
  395. data/vendor/board-maps/yaml/ESP32S2_USB.yml +33 -0
  396. data/vendor/board-maps/yaml/ESP32S3_CAM_LCD.yml +7 -0
  397. data/vendor/board-maps/yaml/ESP32S3_DEV.yml +38 -0
  398. data/vendor/board-maps/yaml/ESP32_DEV.yml +26 -0
  399. data/vendor/board-maps/yaml/ESP32_DEVKIT_LIPO.yml +26 -0
  400. data/vendor/board-maps/yaml/ESP32_EVB.yml +7 -0
  401. data/vendor/board-maps/yaml/ESP32_GATEWAY.yml +13 -0
  402. data/vendor/board-maps/yaml/ESP32_GATEWAY_C.yml +13 -0
  403. data/vendor/board-maps/yaml/ESP32_GATEWAY_E.yml +13 -0
  404. data/vendor/board-maps/yaml/ESP32_GATEWAY_F.yml +13 -0
  405. data/vendor/board-maps/yaml/ESP32_IOT_REDBOARD.yml +27 -0
  406. data/vendor/board-maps/yaml/ESP32_MICROMOD.yml +24 -0
  407. data/vendor/board-maps/yaml/ESP32_PICO.yml +26 -0
  408. data/vendor/board-maps/yaml/ESP32_POE.yml +7 -0
  409. data/vendor/board-maps/yaml/ESP32_POE_ISO.yml +7 -0
  410. data/vendor/board-maps/yaml/ESP32_S3_BOX.yml +16 -0
  411. data/vendor/board-maps/yaml/ESP32_S3_USB_OTG.yml +11 -0
  412. data/vendor/board-maps/yaml/ESP32_THING.yml +27 -0
  413. data/vendor/board-maps/yaml/ESP32_THING_PLUS.yml +30 -0
  414. data/vendor/board-maps/yaml/ESP32_THING_PLUS_C.yml +30 -0
  415. data/vendor/board-maps/yaml/ESP32_WROOM_DA.yml +26 -0
  416. data/vendor/board-maps/yaml/ESP32_WROVER_KIT.yml +26 -0
  417. data/vendor/board-maps/yaml/ESP8266_ADAFRUIT_HUZZAH.yml +9 -0
  418. data/vendor/board-maps/yaml/ESP8266_AGRUMINO_LEMON_V4.yml +8 -0
  419. data/vendor/board-maps/yaml/ESP8266_ARDUINO_PRIMO.yml +7 -0
  420. data/vendor/board-maps/yaml/ESP8266_ARDUINO_STAR_OTTO.yml +7 -0
  421. data/vendor/board-maps/yaml/ESP8266_ARDUINO_UNOWIFI.yml +9 -0
  422. data/vendor/board-maps/yaml/ESP8266_ESP01.yml +9 -0
  423. data/vendor/board-maps/yaml/ESP8266_ESP07.yml +20 -0
  424. data/vendor/board-maps/yaml/ESP8266_ESP12.yml +20 -0
  425. data/vendor/board-maps/yaml/ESP8266_ESP13.yml +17 -0
  426. data/vendor/board-maps/yaml/ESP8266_ESP210.yml +9 -0
  427. data/vendor/board-maps/yaml/ESP8266_ESPECTRO_CORE.yml +9 -0
  428. data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP12.yml +9 -0
  429. data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP13.yml +9 -0
  430. data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V1.yml +9 -0
  431. data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V2.yml +9 -0
  432. data/vendor/board-maps/yaml/ESP8266_GENERIC.yml +9 -0
  433. data/vendor/board-maps/yaml/ESP8266_INVENT_ONE.yml +22 -0
  434. data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12.yml +20 -0
  435. data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12E.yml +20 -0
  436. data/vendor/board-maps/yaml/ESP8266_OAK.yml +9 -0
  437. data/vendor/board-maps/yaml/ESP8266_PHOENIX_V1.yml +9 -0
  438. data/vendor/board-maps/yaml/ESP8266_PHOENIX_V2.yml +9 -0
  439. data/vendor/board-maps/yaml/ESP8266_SCHIRMILABS_EDUINO_WIFI.yml +25 -0
  440. data/vendor/board-maps/yaml/ESP8266_SONOFF_BASIC.yml +9 -0
  441. data/vendor/board-maps/yaml/ESP8266_SONOFF_S20.yml +9 -0
  442. data/vendor/board-maps/yaml/ESP8266_SONOFF_SV.yml +9 -0
  443. data/vendor/board-maps/yaml/ESP8266_SONOFF_TH.yml +9 -0
  444. data/vendor/board-maps/yaml/ESP8266_THING.yml +9 -0
  445. data/vendor/board-maps/yaml/ESP8266_THING_DEV.yml +9 -0
  446. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINI.yml +18 -0
  447. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINILITE.yml +18 -0
  448. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINIPRO.yml +18 -0
  449. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1R1.yml +25 -0
  450. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1WROOM02.yml +18 -0
  451. data/vendor/board-maps/yaml/ESP8266_WIO_LINK.yml +9 -0
  452. data/vendor/board-maps/yaml/ESP8266_XINABOX_CW01.yml +9 -0
  453. data/vendor/board-maps/yaml/ESPECTRO32.yml +27 -0
  454. data/vendor/board-maps/yaml/ESPea32.yml +27 -0
  455. data/vendor/board-maps/yaml/ESPino32.yml +27 -0
  456. data/vendor/board-maps/yaml/ET-Board.yml +26 -0
  457. data/vendor/board-maps/yaml/EXTREMEELEXTRONICS_RC2040.yml +46 -0
  458. data/vendor/board-maps/yaml/Edgebox-ESP-100.yml +7 -0
  459. data/vendor/board-maps/yaml/FEATHERS2.yml +33 -0
  460. data/vendor/board-maps/yaml/FEATHERS2NEO.yml +30 -0
  461. data/vendor/board-maps/yaml/FEATHERS3.yml +29 -0
  462. data/vendor/board-maps/yaml/FEATHER_ESP32.yml +28 -0
  463. data/vendor/board-maps/yaml/FLYBOARD2040_CORE.yml +48 -0
  464. data/vendor/board-maps/yaml/FRANZININHO_WIFI.yml +33 -0
  465. data/vendor/board-maps/yaml/FRANZININHO_WIFI_MSC.yml +33 -0
  466. data/vendor/board-maps/yaml/FROG_ESP32.yml +26 -0
  467. data/vendor/board-maps/yaml/FUNHOUSE_ESP32S2.yml +22 -0
  468. data/vendor/board-maps/yaml/GEN4_IOD.yml +9 -0
  469. data/vendor/board-maps/yaml/GENERIC_RP2040.yml +48 -0
  470. data/vendor/board-maps/yaml/HEALTHYPI_4.yml +27 -0
  471. data/vendor/board-maps/yaml/HONEYLEMON.yml +27 -0
  472. data/vendor/board-maps/yaml/HORNBILL_ESP32_DEV.yml +27 -0
  473. data/vendor/board-maps/yaml/HORNBILL_ESP32_MINIMA.yml +16 -0
  474. data/vendor/board-maps/yaml/ILABS_2040_RPICO32_RP2040.yml +47 -0
  475. data/vendor/board-maps/yaml/IMBRIOS_LOGSENS_V1P1.yml +19 -0
  476. data/vendor/board-maps/yaml/INTOROBOT_ESP32_DEV.yml +34 -0
  477. data/vendor/board-maps/yaml/LILYGO_T_DISPLAY_S3.yml +26 -0
  478. data/vendor/board-maps/yaml/LOLIN32.yml +27 -0
  479. data/vendor/board-maps/yaml/LOLIN32_LITE.yml +27 -0
  480. data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +14 -0
  481. data/vendor/board-maps/yaml/LOLIN_D32.yml +27 -0
  482. data/vendor/board-maps/yaml/LOLIN_D32_PRO.yml +27 -0
  483. data/vendor/board-maps/yaml/LOLIN_S2_MINI.yml +34 -0
  484. data/vendor/board-maps/yaml/LOLIN_S2_PICO.yml +34 -0
  485. data/vendor/board-maps/yaml/LOLIN_S3.yml +32 -0
  486. data/vendor/board-maps/yaml/LOLIN_S3_MINI.yml +32 -0
  487. data/vendor/board-maps/yaml/LOLIN_S3_PRO.yml +32 -0
  488. data/vendor/board-maps/yaml/Lion_Bit_Dev_Board.yml +18 -0
  489. data/vendor/board-maps/yaml/LoPy.yml +27 -0
  490. data/vendor/board-maps/yaml/LoPy4.yml +27 -0
  491. data/vendor/board-maps/yaml/M5STACK_CORES3.yml +8 -0
  492. data/vendor/board-maps/yaml/M5STACK_Core2.yml +9 -0
  493. data/vendor/board-maps/yaml/M5STACK_FIRE.yml +10 -0
  494. data/vendor/board-maps/yaml/M5Stack-Timer-CAM.yml +10 -0
  495. data/vendor/board-maps/yaml/M5Stack_ATOM.yml +10 -0
  496. data/vendor/board-maps/yaml/M5Stack_ATOMS3.yml +7 -0
  497. data/vendor/board-maps/yaml/M5Stack_CoreInk.yml +9 -0
  498. data/vendor/board-maps/yaml/M5Stack_Core_ESP32.yml +10 -0
  499. data/vendor/board-maps/yaml/M5Stack_Station.yml +10 -0
  500. data/vendor/board-maps/yaml/M5Stick_C.yml +10 -0
  501. data/vendor/board-maps/yaml/MAGTAG29_ESP32S2.yml +21 -0
  502. data/vendor/board-maps/yaml/MELOPERO_COOKIE_RP2040.yml +48 -0
  503. data/vendor/board-maps/yaml/MELOPERO_SHAKE_RP2040.yml +48 -0
  504. data/vendor/board-maps/yaml/METRO_ESP32S2.yml +34 -0
  505. data/vendor/board-maps/yaml/MGBOT_IOTIK32A.yml +27 -0
  506. data/vendor/board-maps/yaml/MGBOT_IOTIK32B.yml +27 -0
  507. data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32DEVKIT.yml +27 -0
  508. data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32MINIKIT.yml +27 -0
  509. data/vendor/board-maps/yaml/MICROS2.yml +34 -0
  510. data/vendor/board-maps/yaml/MOD_WIFI_ESP8266.yml +9 -0
  511. data/vendor/board-maps/yaml/Metro.yml +8 -0
  512. data/vendor/board-maps/yaml/NANO32.yml +27 -0
  513. data/vendor/board-maps/yaml/NANO_RP2040_CONNECT.yml +35 -0
  514. data/vendor/board-maps/yaml/NEBULAS3.yml +33 -0
  515. data/vendor/board-maps/yaml/NEKOSYSTEMS_BL2040_MINI.yml +48 -0
  516. data/vendor/board-maps/yaml/NULLBITS_BIT_C_PRO.yml +48 -0
  517. data/vendor/board-maps/yaml/Node32s.yml +27 -0
  518. data/vendor/board-maps/yaml/NodeMCU_32S.yml +27 -0
  519. data/vendor/board-maps/yaml/ODROID_ESP32.yml +10 -0
  520. data/vendor/board-maps/yaml/ONEHORSE_ESP32_DEV.yml +24 -0
  521. data/vendor/board-maps/yaml/OROCA_EDUBOT.yml +33 -0
  522. data/vendor/board-maps/yaml/PIMORONI_PGA2040.yml +48 -0
  523. data/vendor/board-maps/yaml/PROS3.yml +28 -0
  524. data/vendor/board-maps/yaml/PYCOM_GPY.yml +27 -0
  525. data/vendor/board-maps/yaml/Piranha.yml +16 -0
  526. data/vendor/board-maps/yaml/Pocket32.yml +27 -0
  527. data/vendor/board-maps/yaml/QUANTUM.yml +26 -0
  528. data/vendor/board-maps/yaml/RASPBERRY_PI_PICO.yml +48 -0
  529. data/vendor/board-maps/yaml/RASPBERRY_PI_PICO_W.yml +48 -0
  530. data/vendor/board-maps/yaml/REDPILL_ESP32S3.yml +32 -0
  531. data/vendor/board-maps/yaml/RMP.yml +33 -0
  532. data/vendor/board-maps/yaml/SAMD_CIRCUITPLAYGROUND_EXPRESS.yml +12 -0
  533. data/vendor/board-maps/yaml/SAMD_MKR1000.yml +20 -0
  534. data/vendor/board-maps/yaml/SAMD_MKRFox1200.yml +19 -0
  535. data/vendor/board-maps/yaml/SAMD_MKRGSM1400.yml +15 -0
  536. data/vendor/board-maps/yaml/SAMD_MKRNB1500.yml +15 -0
  537. data/vendor/board-maps/yaml/SAMD_MKRVIDOR4000.yml +19 -0
  538. data/vendor/board-maps/yaml/SAMD_MKRWAN1300.yml +18 -0
  539. data/vendor/board-maps/yaml/SAMD_MKRWAN1310.yml +18 -0
  540. data/vendor/board-maps/yaml/SAMD_MKRWIFI1010.yml +19 -0
  541. data/vendor/board-maps/yaml/SAMD_MKRZERO.yml +19 -0
  542. data/vendor/board-maps/yaml/SAMD_NANO_33_IOT.yml +13 -0
  543. data/vendor/board-maps/yaml/SAMD_TIAN.yml +15 -0
  544. data/vendor/board-maps/yaml/SAMD_ZERO.yml +14 -0
  545. data/vendor/board-maps/yaml/SAM_DUE.yml +26 -0
  546. data/vendor/board-maps/yaml/SAM_ZERO.yml +15 -0
  547. data/vendor/board-maps/yaml/SEEED_INDICATOR_RP2040.yml +47 -0
  548. data/vendor/board-maps/yaml/SEEED_XIAO_RP2040.yml +29 -0
  549. data/vendor/board-maps/yaml/SOLDERPARTY_RP2040_STAMP.yml +48 -0
  550. data/vendor/board-maps/yaml/SONOFF_DUALR3.yml +26 -0
  551. data/vendor/board-maps/yaml/SPARKFUN_PROMICRO_RP2040.yml +48 -0
  552. data/vendor/board-maps/yaml/SPARKFUN_THINGPLUS_RP2040.yml +48 -0
  553. data/vendor/board-maps/yaml/STAMP_S3.yml +4 -0
  554. data/vendor/board-maps/yaml/TAMC_TERMOD_S3.yml +31 -0
  555. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1262.yml +23 -0
  556. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1268.yml +23 -0
  557. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1276.yml +23 -0
  558. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1278.yml +23 -0
  559. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1280.yml +23 -0
  560. data/vendor/board-maps/yaml/TBeam.yml +23 -0
  561. data/vendor/board-maps/yaml/TINYPICO.yml +26 -0
  562. data/vendor/board-maps/yaml/TINYS2.yml +33 -0
  563. data/vendor/board-maps/yaml/TINYS3.yml +25 -0
  564. data/vendor/board-maps/yaml/TTGO-T-OI-PLUS_DEV.yml +11 -0
  565. data/vendor/board-maps/yaml/TTGO_LoRa32_V1.yml +28 -0
  566. data/vendor/board-maps/yaml/TTGO_LoRa32_V2.yml +28 -0
  567. data/vendor/board-maps/yaml/TTGO_LoRa32_v21new.yml +28 -0
  568. data/vendor/board-maps/yaml/TTGO_T1.yml +27 -0
  569. data/vendor/board-maps/yaml/TTGO_T7_V13_Mini32.yml +27 -0
  570. data/vendor/board-maps/yaml/TTGO_T7_V14_Mini32.yml +27 -0
  571. data/vendor/board-maps/yaml/TWATCH_2020_V1.yml +10 -0
  572. data/vendor/board-maps/yaml/TWATCH_2020_V2.yml +10 -0
  573. data/vendor/board-maps/yaml/TWATCH_2020_V3.yml +10 -0
  574. data/vendor/board-maps/yaml/TWATCH_BASE.yml +10 -0
  575. data/vendor/board-maps/yaml/TWatch.yml +10 -0
  576. data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver.yml +18 -0
  577. data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver_MK_II.yml +18 -0
  578. data/vendor/board-maps/yaml/UBLOX_NINA_W10.yml +48 -0
  579. data/vendor/board-maps/yaml/UBLOX_NORA_W10.yml +43 -0
  580. data/vendor/board-maps/yaml/UPESY_RP2040_DEVKIT.yml +48 -0
  581. data/vendor/board-maps/yaml/VALTRACK_V4_MFW_ESP32_C3.yml +23 -0
  582. data/vendor/board-maps/yaml/VALTRACK_V4_VTS_ESP32_C3.yml +23 -0
  583. data/vendor/board-maps/yaml/VIYALAB_MIZU_RP2040.yml +48 -0
  584. data/vendor/board-maps/yaml/WATCHY.yml +7 -0
  585. data/vendor/board-maps/yaml/WATCHY_V10.yml +7 -0
  586. data/vendor/board-maps/yaml/WATCHY_V15.yml +7 -0
  587. data/vendor/board-maps/yaml/WATCHY_V20.yml +7 -0
  588. data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_0_96.yml +47 -0
  589. data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_1_28.yml +47 -0
  590. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ONE.yml +47 -0
  591. data/vendor/board-maps/yaml/WAVESHARE_RP2040_PLUS.yml +48 -0
  592. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ZERO.yml +47 -0
  593. data/vendor/board-maps/yaml/WESP32.yml +17 -0
  594. data/vendor/board-maps/yaml/WIDORA_AIR.yml +34 -0
  595. data/vendor/board-maps/yaml/WIFIDUINO_ESP8266.yml +23 -0
  596. data/vendor/board-maps/yaml/WIFINFO.yml +20 -0
  597. data/vendor/board-maps/yaml/WIPY3.yml +27 -0
  598. data/vendor/board-maps/yaml/WIZNET_5100S_EVB_PICO.yml +48 -0
  599. data/vendor/board-maps/yaml/WIZNET_5500_EVB_PICO.yml +48 -0
  600. data/vendor/board-maps/yaml/WIZNET_WIZFI360_EVB_PICO.yml +48 -0
  601. data/vendor/board-maps/yaml/WT32_ETH01.yml +8 -0
  602. data/vendor/board-maps/yaml/WiFiduino32S3.yml +27 -0
  603. data/vendor/board-maps/yaml/WiFiduinoV2.yml +27 -0
  604. data/vendor/board-maps/yaml/Wifiduino32.yml +40 -0
  605. data/vendor/board-maps/yaml/XIAO_ESP32C3.yml +22 -0
  606. data/vendor/board-maps/yaml/XIAO_ESP32S3.yml +36 -0
  607. data/vendor/board-maps/yaml/YD_RP2040.yml +48 -0
  608. data/vendor/board-maps/yaml/atmegazero_esp32s2.yml +30 -0
  609. data/vendor/board-maps/yaml/connaxio_espoir.yml +18 -0
  610. data/vendor/board-maps/yaml/esp32vn_iot_uno.yml +22 -0
  611. data/vendor/board-maps/yaml/fm_devkit.yml +15 -0
  612. data/vendor/board-maps/yaml/heltec_wifi_32_lora_V3.yml +31 -0
  613. data/vendor/board-maps/yaml/heltec_wifi_kit_32.yml +28 -0
  614. data/vendor/board-maps/yaml/heltec_wifi_kit_32_V3.yml +32 -0
  615. data/vendor/board-maps/yaml/heltec_wifi_lora_32.yml +27 -0
  616. data/vendor/board-maps/yaml/heltec_wifi_lora_32_V2.yml +27 -0
  617. data/vendor/board-maps/yaml/heltec_wireless_stick.yml +27 -0
  618. data/vendor/board-maps/yaml/heltec_wireless_stick_LITE.yml +27 -0
  619. data/vendor/board-maps/yaml/openkb.yml +27 -0
  620. data/vendor/board-maps/yaml/roboheart_hercules.yml +17 -0
  621. data/vendor/board-maps/yaml/sensesiot_weizen.yml +26 -0
  622. data/vendor/board-maps/yaml/uPesy_WROOM.yml +27 -0
  623. data/vendor/board-maps/yaml/uPesy_WROVER.yml +27 -0
  624. data/vendor/board-maps/yaml/unphone8.yml +32 -0
  625. data/vendor/board-maps/yaml/unphone9.yml +32 -0
  626. data/vendor/board-maps/yaml/wifi_kit_8.yml +15 -0
  627. metadata +800 -0
@@ -0,0 +1,51 @@
1
+ # Arduino Board Maps in YAML Format
2
+
3
+ The aim of this script is to map common identifiers used in the [Arduino](https://github.com/arduino) IDE to their integer pin numbers. For example, on many Arduino boards, the analog input pin labeled `A0` maps to an integer pin number of `14`, but this isn't always the case. With the large variety of boards the Arduino IDE supports, it's difficult to keep track of mappings manually.
4
+
5
+ ### How to identify the board?
6
+
7
+ Along with the maps inside the `yaml` folder, there is `BoardMap.h`. Include that in a sketch, and it will `#define BOARD_MAP`, based on your board selection in Arduino. The value of `BOARD_MAP` is the filename for that board's map, minus the `.yml` extension.
8
+
9
+ ### Why map the pins?
10
+
11
+ If the sketch tells a remote machine its `BOARD_MAP`, the map can be loaded from its file. From there, the remote machine uses it to translate between pin identifiers and integers, before sending instructions to the board, or receiving messages from it.
12
+
13
+ This is the exact use case this was deisgned for, in support of the [denko](https://github.com/denko-rb/denko) Ruby gem. It allows more intuitive pin referencing in Ruby, while simplifying the Arduino sketch so it only handles pins as integers.
14
+
15
+ ## Supported Arduino Cores
16
+
17
+ - [avr](https://github.com/arduino/ArduinoCore-avr)
18
+ - [megaavr](https://github.com/arduino/ArduinoCore-megaavr)
19
+ - [sam](https://github.com/arduino/ArduinoCore-sam)
20
+ - [samd](https://github.com/arduino/ArduinoCore-samd)
21
+ - [esp8266](https://github.com/esp8266/Arduino)
22
+ - [esp32](https://github.com/espressif/arduino-esp32)
23
+ - [rp2040](https://github.com/earlephilhower/arduino-pico)
24
+
25
+ ## Mappings
26
+
27
+ - `A0` analog input pins (sequential on AVR, disordered on others)
28
+ - `DAC0` digital-to-analog-pins
29
+ - `D0` pins (some on RP2040. Many on ESP8266 where DX doesn't map to GPIOX)
30
+ - `T0` pins (capacitive touch pins on ESP32)
31
+ - `SCL`, `SDA`, `SCLX`, `SDAX`, default and numbered hardware I2C pins
32
+ - `MOSI`, `MISO`, `SCK`, `SS`, `MOSIX`, `MISOX`, `SCKX`, `SSX`, default and numbered hardware SPI pins
33
+ - `LED_BUILTIN` which is usually defined for the on-board LED
34
+
35
+ TODO: Add UART and CAN?
36
+
37
+ ## Usage
38
+
39
+ Clone or download this repo. Use `BoardMap.h` and all the files inside `yaml` as descibed above.
40
+
41
+ Each map is a flat dictionary where each key (an identifier) maps to one integer.
42
+
43
+ **Note:** All keys are prefixed with `:`, so they automatically translate to Ruby symbols when loaded.
44
+
45
+ ## Development
46
+
47
+ Be warned. This is mostly a hack that runs a bunch of regex matches on `boards.txt` and header files from each Arduino core. :man_shrugging:
48
+
49
+ - Clone this repo.
50
+ - Clone the submodules inside the `core` folder with `git submodule init` and `git submodule update`. No need for recursion, but will still be close to 4GB.
51
+ - Make changes and `ruby run.rb` to udpate `BoardMap.h` and all the YAML files.
@@ -0,0 +1,66 @@
1
+ class BoardsParser
2
+ #
3
+ # This catches the following styles of edge cases (only seen in ESP8266 core so far):
4
+ #
5
+ # 1) Main board defines a variant (header) folder, sub-models define none, so they all use the main folder:
6
+ # sonoff.build.board=ESP8266_SONOFF_SV
7
+ # sonoff.build.variant=itead
8
+ # sonoff.menu.BoardModel.sonoffBasic.build.board=ESP8266_SONOFF_BASIC
9
+ # sonoff.menu.BoardModel.sonoffS20.build.board=ESP8266_SONOFF_S20
10
+ # sonoff.menu.BoardModel.sonoffSV.build.board=ESP8266_SONOFF_SV
11
+ # sonoff.menu.BoardModel.sonoffTH.build.board=ESP8266_SONOFF_TH
12
+ #
13
+ # 2) Main board is defined. Sub-models each define their own variant (header) folder:
14
+ # arduino-esp8266.build.board=ESP8266_ARDUINO
15
+ # arduino-esp8266.menu.BoardModel.primo.build.board=ESP8266_ARDUINO_PRIMO
16
+ # arduino-esp8266.menu.BoardModel.primo.build.variant=arduino_spi
17
+ # arduino-esp8266.menu.BoardModel.starottodeved.build.board=ESP8266_ARDUINO_STAR_OTTO
18
+ # arduino-esp8266.menu.BoardModel.starottodeved.build.variant=arduino_uart
19
+ # arduino-esp8266.menu.BoardModel.unowifideved.build.board=ESP8266_ARDUINO_UNOWIFI
20
+ # arduino-esp8266.menu.BoardModel.unowifideved.build.variant=arduino_uart
21
+ #
22
+ # If both of these are ever combined in the same variant, this parser WILL fail.
23
+ #
24
+ def self.parse(core_root_path)
25
+ boards = {}
26
+ board_identifier = nil
27
+ header_folder = nil
28
+
29
+ File.readlines("#{core_root_path}/boards.txt").each do |line|
30
+ # Lines matching this define a board or board sub-model.
31
+ match = line.match(/build.board=(.*)\s*\z/)
32
+ if match
33
+ board_identifier = "ARDUINO_#{match[1]}"
34
+
35
+ # If there's a board and header set, add it to the hash.
36
+ # Will catch when a sub-model with different name reuses the main board header.
37
+ if board_identifier && header_folder
38
+ boards[board_identifier] = header_folder
39
+ end
40
+ next
41
+ end
42
+
43
+ # Lines matching this give the folder name for the board's header file.
44
+ match = line.match(/build.variant=(.*)\s*\z/)
45
+ if match
46
+ header_folder = "#{core_root_path}/variants/#{match[1]}"
47
+
48
+ # If there's a board and header set, add it to the hash.
49
+ # Will catch when sub-models use different headers.
50
+ if board_identifier && header_folder
51
+ boards[board_identifier] = header_folder
52
+ end
53
+ next
54
+ end
55
+
56
+ # Reset state if end of board section reached.
57
+ match = line.match(/######/)
58
+ if match
59
+ board_identifier = nil
60
+ header_folder = nil
61
+ end
62
+ end
63
+
64
+ return boards
65
+ end
66
+ end
@@ -0,0 +1,164 @@
1
+ class HeaderParser
2
+ attr_reader :map
3
+
4
+ def initialize(folder)
5
+ # Empty hash to fill and return with the pin map.
6
+ @map = {}
7
+ @folder = folder
8
+
9
+ # Gotta try all .h files since there's no naming consistency...
10
+ # No idea if this puts them in the right order, but it shouldn't matter.
11
+ header_files = Dir["#{@folder}/*.h"]
12
+ header_files.each do |path|
13
+ parse_file(path)
14
+ end
15
+
16
+ clean_map
17
+ end
18
+
19
+ def parse_file(path)
20
+ begin
21
+ file = File.open(path)
22
+ rescue => exception
23
+ # Fail silently if file not found. Some of these headers include standard libs...
24
+ return
25
+ end
26
+
27
+ file.each_line do |line|
28
+ # Reject comments.
29
+ next if line.match /\A\/\//
30
+
31
+ # Reject lines that end with pin-style identifiers, instead of numbers.
32
+ next if line.match /(PIN_)*(A|D|DAC|T)(\d+)\s*;*\s*\z/
33
+ next if line.match /(PIN_SPI_|PIN_WIRE_)*(SDA|SCL|SS|MOSI|MISO|SCK)\s*;*\s*\z/
34
+
35
+ # Recursively parse included headers...smh
36
+ included = line.match /\A\s*#include\s*("|<)(.*)("|>)/
37
+ if included
38
+ path = File.expand_path(included[2], @folder)
39
+ parse_file(path)
40
+ end
41
+
42
+ # Match RP2040 analog overrides and store them with prefixed keys like :_A0
43
+ # Will substitute them later in #clean_map
44
+ rp2040_analog = line.match /__PIN(_A\d+)\s*\(?(\d+)\w*\)?/
45
+ if rp2040_analog
46
+ @map[rp2040_analog[1].to_sym] = rp2040_analog[2].to_i
47
+ next
48
+ end
49
+
50
+ #
51
+ # Match analog input and DAC pins declared like:
52
+ # #define PIN_A0 (14ul)
53
+ # #define PIN_DAC0 (14)
54
+ # #define PIN_A0 14
55
+ # #define A0 14
56
+ #
57
+ pin = line.match /(PIN_)*((A|DAC)\d+)\s*\(?(\d+)\w*\)?/
58
+ if pin
59
+ @map[pin[2].to_sym] = pin[4].to_i
60
+ next
61
+ end
62
+
63
+ #
64
+ # Match I2C/SPI pins declared like:
65
+ # #define PIN_WIRE_SDA (20ul)
66
+ # #define PIN_SPI0_MOSI (51)
67
+ # #define PIN_WIRE2_SDA 20
68
+ # #define WIRE1_SDA 21
69
+ #
70
+ pin = line.match /(PIN_)*((WIRE|SPI)\d*_\w+)\s*\(?(\d+)\w*\)?/
71
+ if pin
72
+ @map[pin[2].to_sym] = pin[4].to_i
73
+ next
74
+ end
75
+
76
+ #
77
+ # Match custom labeled D* pins (eg. ESP8266) declared like:
78
+ # static const uint D4 = (2)
79
+ #
80
+ # Match analog pins declared like:
81
+ # static const uint8_t A0 = 14
82
+ #
83
+ # Match DAC pins declared like:
84
+ # static const uint8_t DAC1 = 25
85
+ #
86
+ # Match capacitive touch pins declared like:
87
+ # static const uint8_t T0 = 4
88
+ #
89
+ pin = line.match /((A|D|DAC|T)\d+)\s*=\s*\(?(\d+)\w*\)?/
90
+ if pin
91
+ @map[pin[1].to_sym] = pin[3].to_i
92
+ next
93
+ end
94
+
95
+ #
96
+ # Match I2C/SPI pins declared like:
97
+ # static const uint8_t SDA = 21
98
+ #
99
+ pin = line.match /(SDA|SCL|SS|MOSI|MISO|SCK)\s*=\s*\(?(\d+)\w*\)?/
100
+ if pin
101
+ @map[pin[1].to_sym] = pin[2].to_i
102
+ next
103
+ end
104
+
105
+ #
106
+ # Match LED_BUILTIN declared like:
107
+ # #define LED_BUILTIN 13
108
+ # #define PIN_LED 2
109
+ # #define PIN_LED13 13
110
+ #
111
+ led = line.match /(PIN_LED|LED_BUILTIN)(_13)*\s+\(?(\d+)\w*\)?/
112
+ if led
113
+ @map[:LED_BUILTIN] = led[3].to_i unless line.match /2812/
114
+ next
115
+ end
116
+
117
+ #
118
+ # Match LED_BUILTIN declared like:
119
+ # static const uint8_t LED_BUILTIN = 2
120
+ # static const uint8_t LED_BUILTIN13 = 13
121
+ # static const uint8_t PIN_LED = 4
122
+ #
123
+ led = line.match /(PIN_LED|LED_BUILTIN)(_13)*\s*=\s*\(?(\d+)\w*\)?/
124
+ if led
125
+ @map[:LED_BUILTIN] = led[3].to_i unless line.match /2812/
126
+ next
127
+ end
128
+ end
129
+ end
130
+
131
+ def clean_map
132
+ # Updated references to merge with the map after.
133
+ map_updates = {}
134
+
135
+ @map.each do |key, value|
136
+ # One board double defines SPI_SS and SPI_CS.
137
+ @map.delete(key) if key.to_s.match /CS/
138
+
139
+ # Filter out some stuff we shouldn't be catching.
140
+ if key.to_s.match /(HOWMANY|PIN_DEFINED|INTERFACES_COUNT|CHANNELS_NUM|PAD)/
141
+ @map.delete(key)
142
+ next
143
+ end
144
+
145
+ # Fix RP2040 analog pin overrides.
146
+ if key.to_s.match /_A\d+/
147
+ new_key = key.to_s.gsub("_", "")
148
+ map_updates[new_key.to_sym] = value
149
+ @map.delete(key)
150
+ end
151
+
152
+ # Standardize SPI / WIRE styling.
153
+ spi_match = key.to_s.match /(SPI|WIRE)(\d*)_(\w+)/
154
+ if spi_match
155
+ new_key = "#{spi_match[3]}#{spi_match[2]}"
156
+ map_updates[new_key.to_sym] = value
157
+ @map.delete(key)
158
+ next
159
+ end
160
+ end
161
+
162
+ @map = @map.merge(map_updates)
163
+ end
164
+ end
@@ -0,0 +1,47 @@
1
+ require_relative "lib/boards_parser"
2
+ require_relative "lib/header_parser"
3
+
4
+ CORES = ["avr", "esp32", "esp8266", "megaavr", "rp2040", "sam3x", "samd"]
5
+
6
+ # This will end up containing a map for each board identified. Each key
7
+ # is a board's identifier and the value is its pin map as a hash.
8
+ board_maps = {}
9
+
10
+ CORES.each do |core|
11
+ core_root = "#{Dir.pwd}/cores/#{core}"
12
+
13
+ # Get a hash that maps each board to its variant folder.
14
+ board_headers = BoardsParser.parse(core_root)
15
+
16
+ # For each board, parse its header and add it to the hash of maps.
17
+ board_headers.each do |board, header_folder|
18
+ parser = HeaderParser.new(header_folder)
19
+ board_maps[board] = parser.map
20
+ end
21
+ end
22
+
23
+ # Remove chars from board identifier that won't work in a filename.
24
+ def board_to_filename(board_identifier)
25
+ board_identifier.gsub(":", "_").gsub(",", "_").gsub(/\AARDUINO_/, "")
26
+ end
27
+
28
+ # Define every board name in BoardMap.h
29
+ File.open("#{Dir.pwd}/BoardMap.h", "w") do |file|
30
+ board_maps.each_key do |board_identifier|
31
+ file.write "#ifdef #{board_identifier}\n"
32
+ file.write " #define BOARD_MAP \"#{board_to_filename(board_identifier)}\"\n"
33
+ file.write "#endif\n"
34
+ file.write "\n"
35
+ end
36
+ end
37
+
38
+ # Generate a YAML file for each board.
39
+ require 'yaml'
40
+ board_maps.each do |board_identifier, map|
41
+ filename = board_to_filename(board_identifier)
42
+ File.open("#{Dir.pwd}/yaml/#{filename}.yml", "w") do |file|
43
+ file.write(map.to_yaml)
44
+ end
45
+ end
46
+
47
+ puts "Parsed #{board_maps.count} boards."
@@ -0,0 +1,48 @@
1
+ ---
2
+ :LED_BUILTIN: 17
3
+ :D0: 0
4
+ :D1: 1
5
+ :D2: 2
6
+ :D3: 3
7
+ :D4: 4
8
+ :D5: 5
9
+ :D6: 6
10
+ :D7: 7
11
+ :D8: 8
12
+ :D9: 9
13
+ :D10: 10
14
+ :D11: 11
15
+ :D12: 12
16
+ :D13: 13
17
+ :D14: 14
18
+ :D15: 15
19
+ :D16: 16
20
+ :D17: 17
21
+ :D18: 18
22
+ :D19: 19
23
+ :D20: 20
24
+ :D21: 21
25
+ :D22: 22
26
+ :D23: 23
27
+ :D24: 24
28
+ :D25: 25
29
+ :D26: 26
30
+ :D27: 27
31
+ :D28: 28
32
+ :D29: 29
33
+ :A0: 26
34
+ :A1: 27
35
+ :A2: 28
36
+ :A3: 29
37
+ :MISO0: 20
38
+ :MOSI0: 23
39
+ :SCK0: 22
40
+ :SS0: 21
41
+ :MISO1: 31
42
+ :MOSI1: 31
43
+ :SCK1: 31
44
+ :SS1: 31
45
+ :SDA0: 31
46
+ :SCL0: 31
47
+ :SDA1: 2
48
+ :SCL1: 3
@@ -0,0 +1,25 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :SDA: 3
4
+ :SCL: 4
5
+ :SS: 42
6
+ :MOSI: 35
7
+ :SCK: 36
8
+ :MISO: 37
9
+ :A0: 18
10
+ :A1: 17
11
+ :A2: 16
12
+ :A3: 15
13
+ :A4: 14
14
+ :A5: 8
15
+ :T5: 5
16
+ :T6: 6
17
+ :T8: 8
18
+ :T9: 9
19
+ :T10: 10
20
+ :T11: 11
21
+ :T12: 12
22
+ :T13: 13
23
+ :T14: 14
24
+ :DAC1: 17
25
+ :DAC2: 18
@@ -0,0 +1,25 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :SDA: 3
4
+ :SCL: 4
5
+ :SS: 42
6
+ :MOSI: 35
7
+ :SCK: 36
8
+ :MISO: 37
9
+ :A0: 18
10
+ :A1: 17
11
+ :A2: 16
12
+ :A3: 15
13
+ :A4: 14
14
+ :A5: 8
15
+ :T5: 5
16
+ :T6: 6
17
+ :T8: 8
18
+ :T9: 9
19
+ :T10: 10
20
+ :T11: 11
21
+ :T12: 12
22
+ :T13: 13
23
+ :T14: 14
24
+ :DAC1: 17
25
+ :DAC2: 18
@@ -0,0 +1,27 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :SDA: 42
4
+ :SCL: 41
5
+ :SS: 7
6
+ :MOSI: 35
7
+ :SCK: 36
8
+ :MISO: 37
9
+ :A0: 18
10
+ :A1: 17
11
+ :A2: 16
12
+ :A3: 15
13
+ :A4: 14
14
+ :A5: 8
15
+ :T1: 1
16
+ :T2: 2
17
+ :T5: 5
18
+ :T6: 6
19
+ :T8: 8
20
+ :T9: 9
21
+ :T10: 10
22
+ :T11: 11
23
+ :T12: 12
24
+ :T13: 13
25
+ :T14: 14
26
+ :DAC1: 17
27
+ :DAC2: 18
@@ -0,0 +1,29 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :SDA: 3
4
+ :SCL: 4
5
+ :SS: 42
6
+ :MOSI: 35
7
+ :SCK: 36
8
+ :MISO: 37
9
+ :A0: 18
10
+ :A1: 4
11
+ :A2: 16
12
+ :A3: 15
13
+ :A4: 14
14
+ :A5: 8
15
+ :A6: 3
16
+ :A7: 4
17
+ :A8: 5
18
+ :A9: 6
19
+ :T3: 3
20
+ :T4: 4
21
+ :T5: 5
22
+ :T6: 6
23
+ :T8: 8
24
+ :T9: 9
25
+ :T10: 10
26
+ :T11: 11
27
+ :T12: 12
28
+ :T13: 13
29
+ :T14: 14
@@ -0,0 +1,29 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :SDA: 3
4
+ :SCL: 4
5
+ :SS: 42
6
+ :MOSI: 35
7
+ :SCK: 36
8
+ :MISO: 37
9
+ :A0: 18
10
+ :A1: 4
11
+ :A2: 16
12
+ :A3: 15
13
+ :A4: 14
14
+ :A5: 8
15
+ :A6: 3
16
+ :A7: 4
17
+ :A8: 5
18
+ :A9: 6
19
+ :T3: 3
20
+ :T4: 4
21
+ :T5: 5
22
+ :T6: 6
23
+ :T8: 8
24
+ :T9: 9
25
+ :T10: 10
26
+ :T11: 11
27
+ :T12: 12
28
+ :T13: 13
29
+ :T14: 14
@@ -0,0 +1,25 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :SDA: 3
4
+ :SCL: 4
5
+ :SS: 42
6
+ :MOSI: 35
7
+ :SCK: 36
8
+ :MISO: 37
9
+ :A0: 18
10
+ :A1: 17
11
+ :A2: 16
12
+ :A3: 15
13
+ :A4: 14
14
+ :A5: 8
15
+ :T5: 5
16
+ :T6: 6
17
+ :T8: 8
18
+ :T9: 9
19
+ :T10: 10
20
+ :T11: 11
21
+ :T12: 12
22
+ :T13: 13
23
+ :T14: 14
24
+ :DAC1: 17
25
+ :DAC2: 18
@@ -0,0 +1,27 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :SDA: 42
4
+ :SCL: 41
5
+ :SS: 7
6
+ :MOSI: 35
7
+ :SCK: 36
8
+ :MISO: 37
9
+ :A0: 18
10
+ :A1: 17
11
+ :A2: 16
12
+ :A3: 15
13
+ :A4: 14
14
+ :A5: 8
15
+ :T1: 1
16
+ :T2: 2
17
+ :T5: 5
18
+ :T6: 6
19
+ :T8: 8
20
+ :T9: 9
21
+ :T10: 10
22
+ :T11: 11
23
+ :T12: 12
24
+ :T13: 13
25
+ :T14: 14
26
+ :DAC1: 17
27
+ :DAC2: 18
@@ -0,0 +1,30 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :SDA: 22
4
+ :SCL: 20
5
+ :SS: 33
6
+ :MOSI: 19
7
+ :MISO: 21
8
+ :SCK: 5
9
+ :A0: 26
10
+ :A1: 3
11
+ :A2: 34
12
+ :A3: 39
13
+ :A4: 36
14
+ :A5: 4
15
+ :A6: 14
16
+ :A7: 32
17
+ :A8: 15
18
+ :A9: 33
19
+ :T0: 4
20
+ :T1: 0
21
+ :T2: 2
22
+ :T3: 15
23
+ :T4: 13
24
+ :T5: 12
25
+ :T6: 14
26
+ :T7: 27
27
+ :T8: 33
28
+ :T9: 32
29
+ :DAC1: 25
30
+ :DAC2: 26
@@ -0,0 +1,48 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :D0: 0
4
+ :D1: 1
5
+ :D2: 2
6
+ :D3: 3
7
+ :D4: 4
8
+ :D5: 5
9
+ :D6: 6
10
+ :D7: 7
11
+ :D8: 8
12
+ :D9: 9
13
+ :D10: 10
14
+ :D11: 11
15
+ :D12: 12
16
+ :D13: 13
17
+ :D14: 14
18
+ :D15: 15
19
+ :D16: 16
20
+ :D17: 17
21
+ :D18: 18
22
+ :D19: 19
23
+ :D20: 20
24
+ :D21: 21
25
+ :D22: 22
26
+ :D23: 23
27
+ :D24: 24
28
+ :D25: 25
29
+ :D26: 26
30
+ :D27: 27
31
+ :D28: 28
32
+ :D29: 29
33
+ :A0: 26
34
+ :A1: 27
35
+ :A2: 28
36
+ :A3: 29
37
+ :MISO0: 20
38
+ :MOSI0: 19
39
+ :SCK0: 18
40
+ :SS0: 17
41
+ :MISO1: 31
42
+ :MOSI1: 31
43
+ :SCK1: 31
44
+ :SS1: 31
45
+ :SDA0: 2
46
+ :SCL0: 3
47
+ :SDA1: 24
48
+ :SCL1: 25
@@ -0,0 +1,48 @@
1
+ ---
2
+ :LED_BUILTIN: 13
3
+ :D0: 0
4
+ :D1: 1
5
+ :D2: 2
6
+ :D3: 3
7
+ :D4: 4
8
+ :D5: 5
9
+ :D6: 6
10
+ :D7: 7
11
+ :D8: 8
12
+ :D9: 9
13
+ :D10: 10
14
+ :D11: 11
15
+ :D12: 12
16
+ :D13: 13
17
+ :D14: 14
18
+ :D15: 15
19
+ :D16: 16
20
+ :D17: 17
21
+ :D18: 18
22
+ :D19: 19
23
+ :D20: 20
24
+ :D21: 21
25
+ :D22: 22
26
+ :D23: 23
27
+ :D24: 24
28
+ :D25: 25
29
+ :D26: 26
30
+ :D27: 27
31
+ :D28: 28
32
+ :D29: 29
33
+ :A0: 26
34
+ :A1: 27
35
+ :A2: 28
36
+ :A3: 29
37
+ :MISO0: 8
38
+ :MOSI0: 15
39
+ :SCK0: 14
40
+ :SS0: 13
41
+ :MISO1: 31
42
+ :MOSI1: 31
43
+ :SCK1: 31
44
+ :SS1: 31
45
+ :SDA0: 2
46
+ :SCL0: 3
47
+ :SDA1: 31
48
+ :SCL1: 31