denko 0.13.5 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (719) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{build_avr.yml → build_atmega_avr.yml} +18 -18
  3. data/.github/workflows/{build_megaavr.yml → build_atmega_megaavr.yml} +18 -18
  4. data/.github/workflows/{build_sam3x.yml → build_atsam3x.yml} +17 -17
  5. data/.github/workflows/{build_samd.yml → build_atsamd21.yml} +18 -18
  6. data/.github/workflows/build_esp32.yml +17 -17
  7. data/.github/workflows/build_esp32c3.yml +57 -0
  8. data/.github/workflows/build_esp32c6.yml +57 -0
  9. data/.github/workflows/build_esp32h2.yml +56 -0
  10. data/.github/workflows/build_esp32s2.yml +57 -0
  11. data/.github/workflows/build_esp32s3.yml +57 -0
  12. data/.github/workflows/build_esp8266.yml +15 -15
  13. data/.github/workflows/build_ra4m1.yml +16 -16
  14. data/.github/workflows/build_rp2040.yml +17 -16
  15. data/.github/workflows/ruby.yml +20 -20
  16. data/CHANGELOG.md +195 -11
  17. data/DEPS_CLI.md +9 -9
  18. data/DEPS_IDE.md +17 -18
  19. data/HARDWARE.md +50 -51
  20. data/README.md +61 -53
  21. data/Rakefile +1 -1
  22. data/benchmarks/analog_listen.rb +49 -0
  23. data/benchmarks/digital_write.rb +28 -0
  24. data/benchmarks/i2c_ssd1306_refresh.rb +13 -6
  25. data/build +1 -1
  26. data/denko.gemspec +5 -2
  27. data/examples/advanced/{m5_env.rb → m5_env3.rb} +12 -14
  28. data/examples/advanced/rotary_encoder_mac_volume.rb +18 -13
  29. data/examples/advanced/ssd1306_time_temp_rh.rb +8 -13
  30. data/examples/analog_io/ads1100.rb +48 -0
  31. data/examples/analog_io/ads1115.rb +2 -2
  32. data/examples/analog_io/ads1118.rb +3 -11
  33. data/examples/analog_io/input.rb +17 -16
  34. data/examples/analog_io/input_smoothing.rb +27 -0
  35. data/examples/analog_io/potentiometer.rb +31 -0
  36. data/examples/connection/binary_echo.rb +34 -0
  37. data/examples/connection/tcp.rb +12 -27
  38. data/examples/digital_io/button.rb +7 -3
  39. data/examples/digital_io/relay.rb +17 -0
  40. data/examples/digital_io/rotary_encoder.rb +21 -11
  41. data/examples/display/hd44780.rb +13 -5
  42. data/examples/display/ssd1306.rb +20 -17
  43. data/examples/display/ssd1306_s2_pico.rb +2 -2
  44. data/examples/i2c/search.rb +10 -26
  45. data/examples/led/apa102_bounce.rb +3 -4
  46. data/examples/led/apa102_fade.rb +44 -0
  47. data/examples/led/builtin_blink.rb +3 -1
  48. data/examples/led/builtin_fade.rb +19 -0
  49. data/examples/led/rgb_led.rb +31 -0
  50. data/examples/led/seven_segment_char_echo.rb +4 -2
  51. data/examples/led/ws2812_bounce.rb +5 -7
  52. data/examples/led/ws2812_builtin_blink.rb +3 -2
  53. data/examples/led/ws2812_fade.rb +43 -0
  54. data/examples/motor/l298.rb +10 -8
  55. data/examples/motor/servo.rb +4 -3
  56. data/examples/motor/stepper.rb +13 -13
  57. data/examples/one_wire/search.rb +32 -0
  58. data/examples/pulse_io/buzzer.rb +8 -3
  59. data/examples/pulse_io/ir_output.rb +51 -0
  60. data/examples/pulse_io/pwm_output.rb +30 -0
  61. data/examples/rtc/ds3231.rb +18 -35
  62. data/examples/sensor/aht10.rb +4 -6
  63. data/examples/sensor/aht20.rb +4 -6
  64. data/examples/sensor/bme280.rb +4 -4
  65. data/examples/sensor/bmp180.rb +9 -5
  66. data/examples/sensor/dht.rb +20 -15
  67. data/examples/sensor/ds18b20.rb +20 -21
  68. data/examples/sensor/generic_pir.rb +4 -2
  69. data/examples/sensor/hcsr04.rb +5 -2
  70. data/examples/sensor/htu21d.rb +9 -20
  71. data/examples/sensor/htu31d.rb +7 -9
  72. data/examples/sensor/neat_tph_readings.rb +15 -9
  73. data/examples/sensor/qmp6988.rb +5 -7
  74. data/examples/sensor/rcwl9620.rb +3 -3
  75. data/examples/sensor/sht3x.rb +4 -6
  76. data/examples/spi/bitbang_loopback.rb +46 -0
  77. data/examples/spi/input_register.rb +9 -19
  78. data/examples/spi/output_register.rb +9 -17
  79. data/examples/spi/ssd_through_registers.rb +28 -0
  80. data/examples/spi/two_registers.rb +18 -24
  81. data/examples/uart/bit_bang_demo.rb +25 -0
  82. data/examples/uart/board_passthrough.rb +19 -13
  83. data/examples/uart/hardware_loopback.rb +1 -1
  84. data/lib/denko/analog_io/ads1100.rb +127 -0
  85. data/lib/denko/analog_io/ads1115.rb +8 -25
  86. data/lib/denko/analog_io/ads1118.rb +10 -25
  87. data/lib/denko/analog_io/ads111x.rb +25 -11
  88. data/lib/denko/analog_io/input.rb +29 -55
  89. data/lib/denko/analog_io/input_helper.rb +42 -0
  90. data/lib/denko/analog_io/output.rb +5 -5
  91. data/lib/denko/analog_io/potentiometer.rb +6 -8
  92. data/lib/denko/analog_io.rb +2 -1
  93. data/lib/denko/behaviors/board_proxy.rb +13 -1
  94. data/lib/denko/behaviors/bus_controller.rb +1 -0
  95. data/lib/denko/behaviors/bus_controller_addressed.rb +1 -0
  96. data/lib/denko/behaviors/bus_peripheral.rb +3 -4
  97. data/lib/denko/behaviors/bus_peripheral_addressed.rb +8 -6
  98. data/lib/denko/behaviors/callbacks.rb +9 -7
  99. data/lib/denko/behaviors/component.rb +16 -14
  100. data/lib/denko/behaviors/input_pin.rb +14 -15
  101. data/lib/denko/behaviors/lifecycle.rb +51 -0
  102. data/lib/denko/behaviors/multi_pin.rb +22 -18
  103. data/lib/denko/behaviors/output_pin.rb +9 -4
  104. data/lib/denko/behaviors/single_pin.rb +1 -0
  105. data/lib/denko/behaviors/state.rb +15 -9
  106. data/lib/denko/behaviors/subcomponents.rb +72 -12
  107. data/lib/denko/behaviors.rb +2 -1
  108. data/lib/denko/board/core.rb +36 -18
  109. data/lib/denko/board/i2c.rb +14 -14
  110. data/lib/denko/board/i2c_bit_bang.rb +49 -0
  111. data/lib/denko/board/infrared.rb +6 -6
  112. data/lib/denko/board/led_array.rb +6 -5
  113. data/lib/denko/board/spi.rb +15 -10
  114. data/lib/denko/board/spi_bit_bang.rb +9 -7
  115. data/lib/denko/board.rb +35 -33
  116. data/lib/denko/connection/binary_echo.rb +17 -0
  117. data/lib/denko/connection/flow_control.rb +11 -15
  118. data/lib/denko/connection/handshake.rb +2 -0
  119. data/lib/denko/digital_io/button.rb +4 -0
  120. data/lib/denko/digital_io/c_bit_bang.rb +15 -0
  121. data/lib/denko/digital_io/input.rb +4 -5
  122. data/lib/denko/digital_io/output.rb +7 -6
  123. data/lib/denko/digital_io/relay.rb +2 -0
  124. data/lib/denko/digital_io/rotary_encoder.rb +78 -60
  125. data/lib/denko/digital_io.rb +1 -0
  126. data/lib/denko/display/hd44780.rb +136 -93
  127. data/lib/denko/display/sh1106.rb +42 -0
  128. data/lib/denko/display/ssd1306.rb +105 -45
  129. data/lib/denko/display.rb +1 -0
  130. data/lib/denko/eeprom/built_in.rb +19 -16
  131. data/lib/denko/i2c/bit_bang.rb +31 -0
  132. data/lib/denko/i2c/bus.rb +8 -36
  133. data/lib/denko/i2c/bus_common.rb +45 -0
  134. data/lib/denko/i2c/peripheral.rb +28 -19
  135. data/lib/denko/i2c.rb +2 -0
  136. data/lib/denko/led/apa102.rb +43 -29
  137. data/lib/denko/led/base.rb +8 -2
  138. data/lib/denko/led/rgb.rb +5 -7
  139. data/lib/denko/led/seven_segment.rb +24 -9
  140. data/lib/denko/led/ws2812.rb +10 -7
  141. data/lib/denko/message.rb +5 -0
  142. data/lib/denko/motor/l298.rb +11 -10
  143. data/lib/denko/motor/servo.rb +22 -10
  144. data/lib/denko/motor/stepper.rb +11 -14
  145. data/lib/denko/mutex_stub.rb +7 -0
  146. data/lib/denko/one_wire/bus.rb +9 -5
  147. data/lib/denko/one_wire/peripheral.rb +0 -3
  148. data/lib/denko/pulse_io/buzzer.rb +9 -3
  149. data/lib/denko/pulse_io/{ir_transmitter.rb → ir_output.rb} +9 -4
  150. data/lib/denko/pulse_io/pwm_output.rb +69 -15
  151. data/lib/denko/pulse_io.rb +3 -3
  152. data/lib/denko/rtc/ds3231.rb +11 -13
  153. data/lib/denko/sensor/aht.rb +22 -21
  154. data/lib/denko/sensor/bme280.rb +60 -63
  155. data/lib/denko/sensor/bmp180.rb +41 -38
  156. data/lib/denko/sensor/dht.rb +22 -5
  157. data/lib/denko/sensor/ds18b20.rb +40 -34
  158. data/lib/denko/sensor/hcsr04.rb +7 -5
  159. data/lib/denko/sensor/helper.rb +37 -0
  160. data/lib/denko/sensor/htu21d.rb +44 -55
  161. data/lib/denko/sensor/htu31d.rb +32 -33
  162. data/lib/denko/sensor/qmp6988.rb +25 -23
  163. data/lib/denko/sensor/rcwl9620.rb +2 -5
  164. data/lib/denko/sensor/sht3x.rb +23 -21
  165. data/lib/denko/sensor.rb +1 -2
  166. data/lib/denko/spi/base_register.rb +22 -22
  167. data/lib/denko/spi/bit_bang.rb +17 -51
  168. data/lib/denko/spi/bus.rb +15 -29
  169. data/lib/denko/spi/bus_common.rb +36 -0
  170. data/lib/denko/spi/input_register.rb +36 -30
  171. data/lib/denko/spi/output_register.rb +25 -40
  172. data/lib/denko/spi/peripheral.rb +93 -24
  173. data/lib/denko/spi.rb +6 -1
  174. data/lib/denko/uart/bit_bang.rb +5 -3
  175. data/lib/denko/uart/hardware.rb +9 -8
  176. data/lib/denko/version.rb +1 -1
  177. data/lib/denko.rb +10 -0
  178. data/lib/denko_cli/generator.rb +2 -2
  179. data/lib/denko_cli/packages.rb +8 -10
  180. data/lib/denko_cli/targets.rb +8 -8
  181. data/lib/denko_cli/targets.txt +4 -4
  182. data/lib/denko_cli/usage.txt +1 -1
  183. data/src/denko_ethernet.ino +0 -14
  184. data/src/denko_serial.ino +0 -14
  185. data/src/denko_wifi.ino +6 -15
  186. data/src/lib/Denko.cpp +39 -3
  187. data/src/lib/Denko.h +42 -26
  188. data/src/lib/DenkoCoreIO.cpp +60 -103
  189. data/src/lib/DenkoDefines.h +36 -31
  190. data/src/lib/DenkoI2C.cpp +54 -45
  191. data/src/lib/DenkoI2CBB.cpp +238 -0
  192. data/src/lib/DenkoIROut.cpp +12 -7
  193. data/src/lib/DenkoLEDArray.cpp +36 -13
  194. data/src/lib/DenkoSPI.cpp +6 -5
  195. data/src/lib/DenkoSPIBB.cpp +7 -6
  196. data/target.yml +37 -2
  197. data/test/analog_io/potentiometer_test.rb +10 -10
  198. data/test/behaviors/board_proxy_test.rb +1 -1
  199. data/test/behaviors/callbacks_test.rb +11 -3
  200. data/test/behaviors/component_test.rb +17 -9
  201. data/test/behaviors/input_pin_test.rb +14 -9
  202. data/test/behaviors/multi_pin_test.rb +14 -4
  203. data/test/behaviors/output_pin_test.rb +11 -8
  204. data/test/behaviors/poller_test.rb +1 -0
  205. data/test/behaviors/reader_test.rb +3 -2
  206. data/test/behaviors/subcomponents_test.rb +22 -2
  207. data/test/board/core_test.rb +15 -11
  208. data/test/board/i2c_test.rb +39 -33
  209. data/test/board/infrared_test.rb +1 -1
  210. data/test/board/message_test.rb +17 -11
  211. data/test/board/spi_test.rb +21 -21
  212. data/test/digital_io/button_test.rb +15 -0
  213. data/test/digital_io/relay_test.rb +18 -0
  214. data/test/digital_io/rotary_encoder_test.rb +80 -60
  215. data/test/eeprom/built_in_test.rb +9 -9
  216. data/test/i2c/bus_test.rb +30 -14
  217. data/test/i2c/peripheral_test.rb +36 -17
  218. data/test/led/base_test.rb +2 -1
  219. data/test/led/rgb_test.rb +6 -6
  220. data/test/led/seven_segment_test.rb +7 -7
  221. data/test/motor/servo_test.rb +1 -1
  222. data/test/motor/stepper_test.rb +2 -2
  223. data/test/one_wire/bus_test.rb +1 -0
  224. data/test/pulse_io/buzzer_test.rb +7 -4
  225. data/test/pulse_io/{ir_transmitter_test.rb → ir_output_test.rb} +10 -10
  226. data/test/pulse_io/pwm_output_test.rb +74 -18
  227. data/test/rtc/ds3231_test.rb +11 -13
  228. data/test/sensor/dht_test.rb +1 -1
  229. data/test/sensor/ds18b20_test.rb +4 -8
  230. data/test/spi/bus_test.rb +7 -7
  231. data/test/spi/input_register_test.rb +15 -15
  232. data/test/spi/output_register_test.rb +10 -28
  233. data/test/spi/peripheral_multi_pin_test.rb +53 -0
  234. data/test/spi/peripheral_single_pin_test.rb +48 -0
  235. data/test/test_helper.rb +36 -33
  236. data/tutorial/02-button/button.rb +5 -4
  237. data/tutorial/03-potentiometer/potentiometer.rb +9 -5
  238. data/tutorial/04-pwm_led/pwm_led.rb +14 -16
  239. data/tutorial/05-rgb_led/rgb_led.rb +6 -6
  240. data/tutorial/05-rgb_led/rgb_mapping.rb +11 -11
  241. data/vendor/board-maps/.gitignore +56 -0
  242. data/vendor/board-maps/.gitmodules +24 -0
  243. data/vendor/board-maps/BoardMap.h +1852 -0
  244. data/vendor/board-maps/README.md +52 -0
  245. data/vendor/board-maps/lib/boards_parser.rb +66 -0
  246. data/vendor/board-maps/lib/header_parser.rb +199 -0
  247. data/vendor/board-maps/run.rb +57 -0
  248. data/vendor/board-maps/yaml/0XCB_HELIOS.yml +48 -0
  249. data/vendor/board-maps/yaml/ADAFRUIT_CAMERA_ESP32S3.yml +11 -0
  250. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32C6.yml +15 -0
  251. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2.yml +25 -0
  252. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_REVTFT.yml +25 -0
  253. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_TFT.yml +27 -0
  254. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3.yml +34 -0
  255. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_NOPSRAM.yml +34 -0
  256. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_REVTFT.yml +25 -0
  257. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_TFT.yml +27 -0
  258. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32_V2.yml +34 -0
  259. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040.yml +48 -0
  260. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_ADALOGGER.yml +44 -0
  261. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_CAN.yml +48 -0
  262. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_DVI.yml +48 -0
  263. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_PROP_MAKER.yml +48 -0
  264. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_RFM.yml +48 -0
  265. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_SCORPIO.yml +48 -0
  266. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_THINKINK.yml +48 -0
  267. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_USB_HOST.yml +48 -0
  268. data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_ESP32.yml +24 -0
  269. data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_RP2040.yml +48 -0
  270. data/vendor/board-maps/yaml/ADAFRUIT_KB2040_RP2040.yml +48 -0
  271. data/vendor/board-maps/yaml/ADAFRUIT_MACROPAD_RP2040.yml +48 -0
  272. data/vendor/board-maps/yaml/ADAFRUIT_MATRIXPORTAL_ESP32S3.yml +16 -0
  273. data/vendor/board-maps/yaml/ADAFRUIT_METRO_RP2040.yml +48 -0
  274. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32C3.yml +13 -0
  275. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S2.yml +23 -0
  276. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_N4R2.yml +21 -0
  277. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_NOPSRAM.yml +21 -0
  278. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32_PICO.yml +29 -0
  279. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_RP2040.yml +48 -0
  280. data/vendor/board-maps/yaml/ADAFRUIT_STEMMAFRIEND_RP2040.yml +48 -0
  281. data/vendor/board-maps/yaml/ADAFRUIT_TRINKEYQT_RP2040.yml +48 -0
  282. data/vendor/board-maps/yaml/ALKS.yml +34 -0
  283. data/vendor/board-maps/yaml/AMKEN_BB.yml +48 -0
  284. data/vendor/board-maps/yaml/AMKEN_ES.yml +48 -0
  285. data/vendor/board-maps/yaml/AMKEN_REVELOP.yml +48 -0
  286. data/vendor/board-maps/yaml/AMKEN_REVELOP_PLUS.yml +48 -0
  287. data/vendor/board-maps/yaml/AMPERKA_WIFI_SLOT.yml +16 -0
  288. data/vendor/board-maps/yaml/ARTRONSHOP_RP2_NANO.yml +32 -0
  289. data/vendor/board-maps/yaml/ASL_CAN_X2.yml +41 -0
  290. data/vendor/board-maps/yaml/ATD143_S3.yml +41 -0
  291. data/vendor/board-maps/yaml/AVENTEN_S3_SYNC.yml +38 -0
  292. data/vendor/board-maps/yaml/AVR_ADK.yml +24 -0
  293. data/vendor/board-maps/yaml/AVR_BT.yml +16 -0
  294. data/vendor/board-maps/yaml/AVR_CIRCUITPLAY.yml +14 -0
  295. data/vendor/board-maps/yaml/AVR_DUEMILANOVE.yml +16 -0
  296. data/vendor/board-maps/yaml/AVR_ESPLORA.yml +20 -0
  297. data/vendor/board-maps/yaml/AVR_ETHERNET.yml +16 -0
  298. data/vendor/board-maps/yaml/AVR_FIO.yml +16 -0
  299. data/vendor/board-maps/yaml/AVR_GEMMA.yml +6 -0
  300. data/vendor/board-maps/yaml/AVR_INDUSTRIAL101.yml +20 -0
  301. data/vendor/board-maps/yaml/AVR_LEONARDO.yml +20 -0
  302. data/vendor/board-maps/yaml/AVR_LEONARDO_ETH.yml +20 -0
  303. data/vendor/board-maps/yaml/AVR_LILYPAD.yml +16 -0
  304. data/vendor/board-maps/yaml/AVR_LILYPAD_USB.yml +20 -0
  305. data/vendor/board-maps/yaml/AVR_LININO_ONE.yml +20 -0
  306. data/vendor/board-maps/yaml/AVR_MEGA.yml +24 -0
  307. data/vendor/board-maps/yaml/AVR_MEGA2560.yml +24 -0
  308. data/vendor/board-maps/yaml/AVR_MICRO.yml +20 -0
  309. data/vendor/board-maps/yaml/AVR_MINI.yml +16 -0
  310. data/vendor/board-maps/yaml/AVR_NANO.yml +16 -0
  311. data/vendor/board-maps/yaml/AVR_NANO_EVERY.yml +22 -0
  312. data/vendor/board-maps/yaml/AVR_NG.yml +16 -0
  313. data/vendor/board-maps/yaml/AVR_PRO.yml +16 -0
  314. data/vendor/board-maps/yaml/AVR_ROBOT_CONTROL.yml +22 -0
  315. data/vendor/board-maps/yaml/AVR_ROBOT_MOTOR.yml +19 -0
  316. data/vendor/board-maps/yaml/AVR_UNO.yml +16 -0
  317. data/vendor/board-maps/yaml/AVR_UNO_WIFI_DEV_ED.yml +16 -0
  318. data/vendor/board-maps/yaml/AVR_UNO_WIFI_REV2.yml +22 -0
  319. data/vendor/board-maps/yaml/AVR_YUN.yml +20 -0
  320. data/vendor/board-maps/yaml/AVR_YUNMINI.yml +20 -0
  321. data/vendor/board-maps/yaml/AirM2M_CORE_ESP32C3.yml +14 -0
  322. data/vendor/board-maps/yaml/BEE_DATA_LOGGER.yml +39 -0
  323. data/vendor/board-maps/yaml/BLING.yml +25 -0
  324. data/vendor/board-maps/yaml/BPI_BIT.yml +9 -0
  325. data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +42 -0
  326. data/vendor/board-maps/yaml/BRIDGETEK_IDM2040_43A.yml +48 -0
  327. data/vendor/board-maps/yaml/BRIDGETEK_IDM2040_7A.yml +48 -0
  328. data/vendor/board-maps/yaml/BeeMotionS3.yml +45 -0
  329. data/vendor/board-maps/yaml/Bee_Motion.yml +30 -0
  330. data/vendor/board-maps/yaml/Bee_Motion_Mini.yml +13 -0
  331. data/vendor/board-maps/yaml/Bee_S3.yml +38 -0
  332. data/vendor/board-maps/yaml/Breadstick_Raspberry.yml +31 -0
  333. data/vendor/board-maps/yaml/CHALLENGER_2040_LORA_RP2040.yml +39 -0
  334. data/vendor/board-maps/yaml/CHALLENGER_2040_LTE_RP2040.yml +38 -0
  335. data/vendor/board-maps/yaml/CHALLENGER_2040_NFC_RP2040.yml +32 -0
  336. data/vendor/board-maps/yaml/CHALLENGER_2040_SDRTC_RP2040.yml +36 -0
  337. data/vendor/board-maps/yaml/CHALLENGER_2040_SUBGHZ_RP2040.yml +39 -0
  338. data/vendor/board-maps/yaml/CHALLENGER_2040_UWB_RP2040.yml +39 -0
  339. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI6_BLE_RP2040.yml +42 -0
  340. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_BLE_RP2040.yml +42 -0
  341. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_RP2040.yml +38 -0
  342. data/vendor/board-maps/yaml/CHALLENGER_NB_2040_WIFI_RP2040.yml +38 -0
  343. data/vendor/board-maps/yaml/CONNECTIVITY_2040_LTE_WIFI_BLE_RP2040.yml +48 -0
  344. data/vendor/board-maps/yaml/CRABIK_SLOT_ESP32_S3.yml +19 -0
  345. data/vendor/board-maps/yaml/CYTRON_MAKER_FEATHER_AIOT_S3.yml +29 -0
  346. data/vendor/board-maps/yaml/CYTRON_MAKER_NANO_RP2040.yml +48 -0
  347. data/vendor/board-maps/yaml/CYTRON_MAKER_PI_RP2040.yml +48 -0
  348. data/vendor/board-maps/yaml/CYTRON_MAKER_UNO_RP2040.yml +48 -0
  349. data/vendor/board-maps/yaml/CoreESP32.yml +53 -0
  350. data/vendor/board-maps/yaml/D1_MINI32.yml +45 -0
  351. data/vendor/board-maps/yaml/D1_UNO32.yml +28 -0
  352. data/vendor/board-maps/yaml/DATANOISETV_PICOADK.yml +48 -0
  353. data/vendor/board-maps/yaml/DEGZ_SUIBO_RP2040.yml +48 -0
  354. data/vendor/board-maps/yaml/DENKY.yml +35 -0
  355. data/vendor/board-maps/yaml/DENKY_PICOV3.yml +35 -0
  356. data/vendor/board-maps/yaml/DENKY_WROOM32.yml +35 -0
  357. data/vendor/board-maps/yaml/DEPARTMENT_OF_ALCHEMY_MINIMAIN_ESP32S2.yml +26 -0
  358. data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32C6.yml +8 -0
  359. data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32_C3.yml +14 -0
  360. data/vendor/board-maps/yaml/DFROBOT_BEETLE_RP2040.yml +48 -0
  361. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32C6.yml +20 -0
  362. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32E.yml +49 -0
  363. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32S3.yml +38 -0
  364. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_ESP32.yml +46 -0
  365. data/vendor/board-maps/yaml/DFROBOT_ROMEO_ESP32S3.yml +7 -0
  366. data/vendor/board-maps/yaml/DPTECHNICS_WALTER.yml +39 -0
  367. data/vendor/board-maps/yaml/DPU_ESP32.yml +35 -0
  368. data/vendor/board-maps/yaml/DYDK.yml +38 -0
  369. data/vendor/board-maps/yaml/DYDK1A.yml +37 -0
  370. data/vendor/board-maps/yaml/DYDK1Av2.yml +45 -0
  371. data/vendor/board-maps/yaml/DYG.yml +20 -0
  372. data/vendor/board-maps/yaml/DYM.yml +40 -0
  373. data/vendor/board-maps/yaml/DYMv2.yml +39 -0
  374. data/vendor/board-maps/yaml/D_Duino_32.yml +37 -0
  375. data/vendor/board-maps/yaml/ELECROW_CROWPANEL_7.yml +8 -0
  376. data/vendor/board-maps/yaml/ELECTRONICCATS_HUNTERCAT_NFC.yml +44 -0
  377. data/vendor/board-maps/yaml/ESP320.yml +8 -0
  378. data/vendor/board-maps/yaml/ESP32C2_DEV.yml +12 -0
  379. data/vendor/board-maps/yaml/ESP32C3_DEV.yml +14 -0
  380. data/vendor/board-maps/yaml/ESP32C3_DEVKIT_LIPO.yml +14 -0
  381. data/vendor/board-maps/yaml/ESP32C3_M1_I_KIT.yml +13 -0
  382. data/vendor/board-maps/yaml/ESP32C6_DEV.yml +15 -0
  383. data/vendor/board-maps/yaml/ESP32C6_EVB.yml +15 -0
  384. data/vendor/board-maps/yaml/ESP32C6_QWIIC_POCKET.yml +15 -0
  385. data/vendor/board-maps/yaml/ESP32C6_THING_PLUS.yml +15 -0
  386. data/vendor/board-maps/yaml/ESP32H2_DEV.yml +13 -0
  387. data/vendor/board-maps/yaml/ESP32H2_DEVKIT_LIPO.yml +13 -0
  388. data/vendor/board-maps/yaml/ESP32S2_DEV.yml +44 -0
  389. data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO.yml +44 -0
  390. data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO_USB.yml +44 -0
  391. data/vendor/board-maps/yaml/ESP32S2_THING_PLUS.yml +44 -0
  392. data/vendor/board-maps/yaml/ESP32S2_USB.yml +43 -0
  393. data/vendor/board-maps/yaml/ESP32S3_CAM_LCD.yml +7 -0
  394. data/vendor/board-maps/yaml/ESP32S3_DEV.yml +38 -0
  395. data/vendor/board-maps/yaml/ESP32S3_DEVKIT_LIPO.yml +42 -0
  396. data/vendor/board-maps/yaml/ESP32S3_POWERFEATHER.yml +22 -0
  397. data/vendor/board-maps/yaml/ESP32_DEV.yml +35 -0
  398. data/vendor/board-maps/yaml/ESP32_DEVKIT_LIPO.yml +35 -0
  399. data/vendor/board-maps/yaml/ESP32_EVB.yml +7 -0
  400. data/vendor/board-maps/yaml/ESP32_GATEWAY.yml +13 -0
  401. data/vendor/board-maps/yaml/ESP32_GATEWAY_C.yml +13 -0
  402. data/vendor/board-maps/yaml/ESP32_GATEWAY_E.yml +13 -0
  403. data/vendor/board-maps/yaml/ESP32_GATEWAY_F.yml +13 -0
  404. data/vendor/board-maps/yaml/ESP32_IOT_REDBOARD.yml +36 -0
  405. data/vendor/board-maps/yaml/ESP32_MICROMOD.yml +24 -0
  406. data/vendor/board-maps/yaml/ESP32_PICO.yml +35 -0
  407. data/vendor/board-maps/yaml/ESP32_POE.yml +7 -0
  408. data/vendor/board-maps/yaml/ESP32_POE_ISO.yml +7 -0
  409. data/vendor/board-maps/yaml/ESP32_S3R8N16.yml +3 -0
  410. data/vendor/board-maps/yaml/ESP32_S3_BOX.yml +19 -0
  411. data/vendor/board-maps/yaml/ESP32_S3_USB_OTG.yml +11 -0
  412. data/vendor/board-maps/yaml/ESP32_SBC_FABGL.yml +35 -0
  413. data/vendor/board-maps/yaml/ESP32_THING.yml +36 -0
  414. data/vendor/board-maps/yaml/ESP32_THING_PLUS.yml +33 -0
  415. data/vendor/board-maps/yaml/ESP32_THING_PLUS_C.yml +33 -0
  416. data/vendor/board-maps/yaml/ESP32_WROOM_DA.yml +35 -0
  417. data/vendor/board-maps/yaml/ESP32_WROVER_KIT.yml +35 -0
  418. data/vendor/board-maps/yaml/ESP8266_ADAFRUIT_HUZZAH.yml +9 -0
  419. data/vendor/board-maps/yaml/ESP8266_AGRUMINO_LEMON_V4.yml +8 -0
  420. data/vendor/board-maps/yaml/ESP8266_ARDUINO_PRIMO.yml +7 -0
  421. data/vendor/board-maps/yaml/ESP8266_ARDUINO_STAR_OTTO.yml +7 -0
  422. data/vendor/board-maps/yaml/ESP8266_ARDUINO_UNOWIFI.yml +9 -0
  423. data/vendor/board-maps/yaml/ESP8266_ESP01.yml +9 -0
  424. data/vendor/board-maps/yaml/ESP8266_ESP07.yml +20 -0
  425. data/vendor/board-maps/yaml/ESP8266_ESP12.yml +20 -0
  426. data/vendor/board-maps/yaml/ESP8266_ESP13.yml +17 -0
  427. data/vendor/board-maps/yaml/ESP8266_ESP210.yml +9 -0
  428. data/vendor/board-maps/yaml/ESP8266_ESPECTRO_CORE.yml +9 -0
  429. data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP12.yml +9 -0
  430. data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP13.yml +9 -0
  431. data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V1.yml +9 -0
  432. data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V2.yml +9 -0
  433. data/vendor/board-maps/yaml/ESP8266_GENERIC.yml +9 -0
  434. data/vendor/board-maps/yaml/ESP8266_INVENT_ONE.yml +22 -0
  435. data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12.yml +20 -0
  436. data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12E.yml +20 -0
  437. data/vendor/board-maps/yaml/ESP8266_OAK.yml +9 -0
  438. data/vendor/board-maps/yaml/ESP8266_PHOENIX_V1.yml +9 -0
  439. data/vendor/board-maps/yaml/ESP8266_PHOENIX_V2.yml +9 -0
  440. data/vendor/board-maps/yaml/ESP8266_SCHIRMILABS_EDUINO_WIFI.yml +25 -0
  441. data/vendor/board-maps/yaml/ESP8266_SONOFF_BASIC.yml +9 -0
  442. data/vendor/board-maps/yaml/ESP8266_SONOFF_S20.yml +9 -0
  443. data/vendor/board-maps/yaml/ESP8266_SONOFF_SV.yml +9 -0
  444. data/vendor/board-maps/yaml/ESP8266_SONOFF_TH.yml +9 -0
  445. data/vendor/board-maps/yaml/ESP8266_THING.yml +9 -0
  446. data/vendor/board-maps/yaml/ESP8266_THING_DEV.yml +9 -0
  447. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINI.yml +18 -0
  448. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINILITE.yml +18 -0
  449. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINIPRO.yml +18 -0
  450. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1R1.yml +25 -0
  451. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1WROOM02.yml +18 -0
  452. data/vendor/board-maps/yaml/ESP8266_WIO_LINK.yml +9 -0
  453. data/vendor/board-maps/yaml/ESP8266_XINABOX_CW01.yml +9 -0
  454. data/vendor/board-maps/yaml/ESPECTRO32.yml +36 -0
  455. data/vendor/board-maps/yaml/ESPea32.yml +36 -0
  456. data/vendor/board-maps/yaml/ESPino32.yml +36 -0
  457. data/vendor/board-maps/yaml/ET-Board.yml +26 -0
  458. data/vendor/board-maps/yaml/EVN_ALPHA.yml +48 -0
  459. data/vendor/board-maps/yaml/EXTREMEELEXTRONICS_RC2040.yml +46 -0
  460. data/vendor/board-maps/yaml/Edgebox-ESP-100.yml +7 -0
  461. data/vendor/board-maps/yaml/FEATHERS2.yml +43 -0
  462. data/vendor/board-maps/yaml/FEATHERS2NEO.yml +31 -0
  463. data/vendor/board-maps/yaml/FEATHERS3.yml +32 -0
  464. data/vendor/board-maps/yaml/FEATHERS3NEO.yml +32 -0
  465. data/vendor/board-maps/yaml/FEATHER_ESP32.yml +32 -0
  466. data/vendor/board-maps/yaml/FLYBOARD2040_CORE.yml +48 -0
  467. data/vendor/board-maps/yaml/FRANZININHO_WIFI.yml +43 -0
  468. data/vendor/board-maps/yaml/FRANZININHO_WIFI_MSC.yml +43 -0
  469. data/vendor/board-maps/yaml/FROG_ESP32.yml +35 -0
  470. data/vendor/board-maps/yaml/FUNHOUSE_ESP32S2.yml +22 -0
  471. data/vendor/board-maps/yaml/GEEKBLE_ESP32C3.yml +14 -0
  472. data/vendor/board-maps/yaml/GEN4_IOD.yml +9 -0
  473. data/vendor/board-maps/yaml/GENERIC_RP2040.yml +48 -0
  474. data/vendor/board-maps/yaml/HEALTHYPI_4.yml +36 -0
  475. data/vendor/board-maps/yaml/HELTEC_CAPSULE_SENSOR_V3.yml +43 -0
  476. data/vendor/board-maps/yaml/HELTEC_WIFI_LORA_32_V3.yml +42 -0
  477. data/vendor/board-maps/yaml/HELTEC_WIRELESS_BRIDGE.yml +8 -0
  478. data/vendor/board-maps/yaml/HELTEC_WIRELESS_MINI_SHELL.yml +13 -0
  479. data/vendor/board-maps/yaml/HELTEC_WIRELESS_PAPER.yml +42 -0
  480. data/vendor/board-maps/yaml/HELTEC_WIRELESS_SHELL_V3.yml +42 -0
  481. data/vendor/board-maps/yaml/HELTEC_WIRELESS_STICK_LITE_V3.yml +30 -0
  482. data/vendor/board-maps/yaml/HELTEC_WIRELESS_STICK_V3.yml +41 -0
  483. data/vendor/board-maps/yaml/HELTEC_WIRELESS_TRACKER.yml +41 -0
  484. data/vendor/board-maps/yaml/HONEYLEMON.yml +36 -0
  485. data/vendor/board-maps/yaml/HORNBILL_ESP32_DEV.yml +36 -0
  486. data/vendor/board-maps/yaml/HORNBILL_ESP32_MINIMA.yml +19 -0
  487. data/vendor/board-maps/yaml/HT_DE01.yml +42 -0
  488. data/vendor/board-maps/yaml/ILABS_2040_RPICO32_RP2040.yml +47 -0
  489. data/vendor/board-maps/yaml/IMBRIOS_LOGSENS_V1P1.yml +23 -0
  490. data/vendor/board-maps/yaml/INTOROBOT_ESP32_DEV.yml +34 -0
  491. data/vendor/board-maps/yaml/IOXESP32.yml +36 -0
  492. data/vendor/board-maps/yaml/IOXESP32PS.yml +36 -0
  493. data/vendor/board-maps/yaml/LILYGO_T3S3_LR1121.yml +9 -0
  494. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1262.yml +9 -0
  495. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1276.yml +9 -0
  496. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1278.yml +9 -0
  497. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1280.yml +9 -0
  498. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1280PA.yml +8 -0
  499. data/vendor/board-maps/yaml/LILYGO_T_DISPLAY.yml +35 -0
  500. data/vendor/board-maps/yaml/LILYGO_T_DISPLAY_S3.yml +32 -0
  501. data/vendor/board-maps/yaml/LILYGO_T_ETH_LITE.yml +21 -0
  502. data/vendor/board-maps/yaml/LIONBITS3_DEV.yml +34 -0
  503. data/vendor/board-maps/yaml/LOLIN32.yml +36 -0
  504. data/vendor/board-maps/yaml/LOLIN32_LITE.yml +36 -0
  505. data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +14 -0
  506. data/vendor/board-maps/yaml/LOLIN_C3_PICO.yml +14 -0
  507. data/vendor/board-maps/yaml/LOLIN_D32.yml +36 -0
  508. data/vendor/board-maps/yaml/LOLIN_D32_PRO.yml +36 -0
  509. data/vendor/board-maps/yaml/LOLIN_S2_MINI.yml +44 -0
  510. data/vendor/board-maps/yaml/LOLIN_S2_PICO.yml +44 -0
  511. data/vendor/board-maps/yaml/LOLIN_S3.yml +40 -0
  512. data/vendor/board-maps/yaml/LOLIN_S3_MINI.yml +40 -0
  513. data/vendor/board-maps/yaml/LOLIN_S3_MINI_PRO.yml +40 -0
  514. data/vendor/board-maps/yaml/LOLIN_S3_PRO.yml +40 -0
  515. data/vendor/board-maps/yaml/Lion_Bit_Dev_Board.yml +16 -0
  516. data/vendor/board-maps/yaml/LoPy.yml +38 -0
  517. data/vendor/board-maps/yaml/LoPy4.yml +38 -0
  518. data/vendor/board-maps/yaml/M5STACK_CAPSULE.yml +8 -0
  519. data/vendor/board-maps/yaml/M5STACK_CARDPUTER.yml +8 -0
  520. data/vendor/board-maps/yaml/M5STACK_CORE.yml +10 -0
  521. data/vendor/board-maps/yaml/M5STACK_CORES3.yml +8 -0
  522. data/vendor/board-maps/yaml/M5STACK_Core2.yml +9 -0
  523. data/vendor/board-maps/yaml/M5STACK_DIAL.yml +8 -0
  524. data/vendor/board-maps/yaml/M5STACK_FIRE.yml +9 -0
  525. data/vendor/board-maps/yaml/M5STACK_NANOC6.yml +17 -0
  526. data/vendor/board-maps/yaml/M5STACK_PAPER.yml +9 -0
  527. data/vendor/board-maps/yaml/M5STACK_POE_CAM.yml +5 -0
  528. data/vendor/board-maps/yaml/M5STACK_STAMP_C3.yml +13 -0
  529. data/vendor/board-maps/yaml/M5STACK_STAMP_PICO.yml +7 -0
  530. data/vendor/board-maps/yaml/M5STACK_STAMP_S3.yml +4 -0
  531. data/vendor/board-maps/yaml/M5STACK_STICKC.yml +9 -0
  532. data/vendor/board-maps/yaml/M5STACK_STICKC_PLUS.yml +9 -0
  533. data/vendor/board-maps/yaml/M5STACK_STICKC_PLUS2.yml +9 -0
  534. data/vendor/board-maps/yaml/M5STACK_TIMER_CAM.yml +10 -0
  535. data/vendor/board-maps/yaml/M5STACK_TOUGH.yml +9 -0
  536. data/vendor/board-maps/yaml/M5STACK_UNIT_CAM.yml +10 -0
  537. data/vendor/board-maps/yaml/M5STACK_UNIT_CAMS3.yml +4 -0
  538. data/vendor/board-maps/yaml/M5Stack_ATOM.yml +9 -0
  539. data/vendor/board-maps/yaml/M5Stack_ATOMS3.yml +7 -0
  540. data/vendor/board-maps/yaml/M5Stack_CoreInk.yml +9 -0
  541. data/vendor/board-maps/yaml/M5Stack_Station.yml +10 -0
  542. data/vendor/board-maps/yaml/MAGTAG29_ESP32S2.yml +31 -0
  543. data/vendor/board-maps/yaml/MAKERGO_C3_SUPERMINI.yml +14 -0
  544. data/vendor/board-maps/yaml/MARBLE_PICO.yml +48 -0
  545. data/vendor/board-maps/yaml/MELOPERO_COOKIE_RP2040.yml +48 -0
  546. data/vendor/board-maps/yaml/MELOPERO_SHAKE_RP2040.yml +48 -0
  547. data/vendor/board-maps/yaml/METEHOCA_AKANA_R1.yml +46 -0
  548. data/vendor/board-maps/yaml/METRO_ESP32S2.yml +44 -0
  549. data/vendor/board-maps/yaml/METRO_ESP32S3.yml +42 -0
  550. data/vendor/board-maps/yaml/MGBOT_IOTIK32A.yml +36 -0
  551. data/vendor/board-maps/yaml/MGBOT_IOTIK32B.yml +36 -0
  552. data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32DEVKIT.yml +36 -0
  553. data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32MINIKIT.yml +36 -0
  554. data/vendor/board-maps/yaml/MICROS2.yml +44 -0
  555. data/vendor/board-maps/yaml/MINIMA.yml +15 -0
  556. data/vendor/board-maps/yaml/MOD_WIFI_ESP8266.yml +9 -0
  557. data/vendor/board-maps/yaml/Metro.yml +8 -0
  558. data/vendor/board-maps/yaml/NAMINO_ARANCIO.yml +3 -0
  559. data/vendor/board-maps/yaml/NAMINO_BIANCO.yml +13 -0
  560. data/vendor/board-maps/yaml/NAMINO_ROSSO.yml +3 -0
  561. data/vendor/board-maps/yaml/NANO32.yml +36 -0
  562. data/vendor/board-maps/yaml/NANOS3.yml +25 -0
  563. data/vendor/board-maps/yaml/NANO_ESP32.yml +18 -0
  564. data/vendor/board-maps/yaml/NANO_RP2040_CONNECT.yml +35 -0
  565. data/vendor/board-maps/yaml/NEBULAS3.yml +32 -0
  566. data/vendor/board-maps/yaml/NEKOSYSTEMS_BL2040_MINI.yml +48 -0
  567. data/vendor/board-maps/yaml/NEWSAN_ARCHI.yml +48 -0
  568. data/vendor/board-maps/yaml/NOLOGO_ESP32C3_SUPER_MINI.yml +14 -0
  569. data/vendor/board-maps/yaml/NOLOGO_ESP32S3_PICO.yml +12 -0
  570. data/vendor/board-maps/yaml/NULLBITS_BIT_C_PRO.yml +48 -0
  571. data/vendor/board-maps/yaml/Node32s.yml +36 -0
  572. data/vendor/board-maps/yaml/NodeMCU_32S.yml +36 -0
  573. data/vendor/board-maps/yaml/ODROID_ESP32.yml +10 -0
  574. data/vendor/board-maps/yaml/OLIMEX_RP2040_PICO30_16MB.yml +48 -0
  575. data/vendor/board-maps/yaml/OLIMEX_RP2040_PICO30_2MB.yml +48 -0
  576. data/vendor/board-maps/yaml/ONEHORSE_ESP32_DEV.yml +34 -0
  577. data/vendor/board-maps/yaml/OPTA_ANALOG.yml +7 -0
  578. data/vendor/board-maps/yaml/OPTA_DIGITAL.yml +5 -0
  579. data/vendor/board-maps/yaml/OROCA_EDUBOT.yml +33 -0
  580. data/vendor/board-maps/yaml/PIMORONI_PGA2040.yml +48 -0
  581. data/vendor/board-maps/yaml/PIMORONI_PLASMA2040.yml +29 -0
  582. data/vendor/board-maps/yaml/PIMORONI_TINY2040.yml +44 -0
  583. data/vendor/board-maps/yaml/PINTRONIX_PINMAX.yml +42 -0
  584. data/vendor/board-maps/yaml/PORTENTA_C33.yml +28 -0
  585. data/vendor/board-maps/yaml/PROS3.yml +33 -0
  586. data/vendor/board-maps/yaml/PYCOM_GPY.yml +38 -0
  587. data/vendor/board-maps/yaml/Piranha.yml +22 -0
  588. data/vendor/board-maps/yaml/Pocket32.yml +36 -0
  589. data/vendor/board-maps/yaml/QUALIA_S3_RGB666.yml +15 -0
  590. data/vendor/board-maps/yaml/QUANTUM.yml +35 -0
  591. data/vendor/board-maps/yaml/RAKWIRELESS_RAK11300.yml +47 -0
  592. data/vendor/board-maps/yaml/RASPBERRY_PI_PICO.yml +48 -0
  593. data/vendor/board-maps/yaml/RASPBERRY_PI_PICO_W.yml +48 -0
  594. data/vendor/board-maps/yaml/REDPILL_ESP32S3.yml +41 -0
  595. data/vendor/board-maps/yaml/REDSCORP_RP2040_EINS.yml +35 -0
  596. data/vendor/board-maps/yaml/REDSCORP_RP2040_PROMINI.yml +35 -0
  597. data/vendor/board-maps/yaml/SAMD_CIRCUITPLAYGROUND_EXPRESS.yml +11 -0
  598. data/vendor/board-maps/yaml/SAMD_MKR1000.yml +20 -0
  599. data/vendor/board-maps/yaml/SAMD_MKRFox1200.yml +19 -0
  600. data/vendor/board-maps/yaml/SAMD_MKRGSM1400.yml +15 -0
  601. data/vendor/board-maps/yaml/SAMD_MKRNB1500.yml +15 -0
  602. data/vendor/board-maps/yaml/SAMD_MKRVIDOR4000.yml +19 -0
  603. data/vendor/board-maps/yaml/SAMD_MKRWAN1300.yml +18 -0
  604. data/vendor/board-maps/yaml/SAMD_MKRWAN1310.yml +18 -0
  605. data/vendor/board-maps/yaml/SAMD_MKRWIFI1010.yml +19 -0
  606. data/vendor/board-maps/yaml/SAMD_MKRZERO.yml +19 -0
  607. data/vendor/board-maps/yaml/SAMD_NANO_33_IOT.yml +13 -0
  608. data/vendor/board-maps/yaml/SAMD_TIAN.yml +15 -0
  609. data/vendor/board-maps/yaml/SAMD_ZERO.yml +14 -0
  610. data/vendor/board-maps/yaml/SAM_DUE.yml +28 -0
  611. data/vendor/board-maps/yaml/SAM_ZERO.yml +15 -0
  612. data/vendor/board-maps/yaml/SEA_PICRO.yml +48 -0
  613. data/vendor/board-maps/yaml/SEEED_INDICATOR_RP2040.yml +47 -0
  614. data/vendor/board-maps/yaml/SEEED_XIAO_RP2040.yml +29 -0
  615. data/vendor/board-maps/yaml/SENSEBOX_MCU_ESP32S2.yml +12 -0
  616. data/vendor/board-maps/yaml/SILICOGNITION_RP2040_SHIM.yml +30 -0
  617. data/vendor/board-maps/yaml/SOLDERPARTY_RP2040_STAMP.yml +48 -0
  618. data/vendor/board-maps/yaml/SONOFF_DUALR3.yml +35 -0
  619. data/vendor/board-maps/yaml/SPARKFUN_MICROMOD_RP2040.yml +48 -0
  620. data/vendor/board-maps/yaml/SPARKFUN_PROMICRO_RP2040.yml +48 -0
  621. data/vendor/board-maps/yaml/SPARKFUN_PRO_MICRO_ESP32C3.yml +24 -0
  622. data/vendor/board-maps/yaml/SPARKFUN_THINGPLUS_RP2040.yml +48 -0
  623. data/vendor/board-maps/yaml/TAMC_TERMOD_S3.yml +41 -0
  624. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1262.yml +28 -0
  625. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1268.yml +28 -0
  626. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1276.yml +28 -0
  627. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1278.yml +28 -0
  628. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1280.yml +28 -0
  629. data/vendor/board-maps/yaml/TBeam.yml +28 -0
  630. data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER.yml +31 -0
  631. data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER_C6.yml +15 -0
  632. data/vendor/board-maps/yaml/TINYC6.yml +25 -0
  633. data/vendor/board-maps/yaml/TINYPICO.yml +35 -0
  634. data/vendor/board-maps/yaml/TINYS2.yml +43 -0
  635. data/vendor/board-maps/yaml/TINYS3.yml +25 -0
  636. data/vendor/board-maps/yaml/TTGO-T-OI-PLUS_DEV.yml +11 -0
  637. data/vendor/board-maps/yaml/TTGO_LoRa32_V1.yml +38 -0
  638. data/vendor/board-maps/yaml/TTGO_LoRa32_V2.yml +38 -0
  639. data/vendor/board-maps/yaml/TTGO_LoRa32_v21new.yml +38 -0
  640. data/vendor/board-maps/yaml/TTGO_T1.yml +36 -0
  641. data/vendor/board-maps/yaml/TTGO_T7_V13_Mini32.yml +36 -0
  642. data/vendor/board-maps/yaml/TTGO_T7_V14_Mini32.yml +36 -0
  643. data/vendor/board-maps/yaml/TWATCH_2020_V1.yml +9 -0
  644. data/vendor/board-maps/yaml/TWATCH_2020_V2.yml +9 -0
  645. data/vendor/board-maps/yaml/TWATCH_2020_V3.yml +9 -0
  646. data/vendor/board-maps/yaml/TWATCH_BASE.yml +9 -0
  647. data/vendor/board-maps/yaml/TWatch.yml +9 -0
  648. data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver.yml +18 -0
  649. data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver_MK_II.yml +18 -0
  650. data/vendor/board-maps/yaml/UBLOX_NINA_W10.yml +57 -0
  651. data/vendor/board-maps/yaml/UBLOX_NORA_W10.yml +43 -0
  652. data/vendor/board-maps/yaml/UNOWIFIR4.yml +17 -0
  653. data/vendor/board-maps/yaml/UPESY_EDU_ESP32.yml +28 -0
  654. data/vendor/board-maps/yaml/UPESY_ESP32C3_BASIC.yml +13 -0
  655. data/vendor/board-maps/yaml/UPESY_ESP32C3_MINI.yml +12 -0
  656. data/vendor/board-maps/yaml/UPESY_ESP32S3_BASIC.yml +42 -0
  657. data/vendor/board-maps/yaml/UPESY_RP2040_DEVKIT.yml +48 -0
  658. data/vendor/board-maps/yaml/VALTRACK_V4_MFW_ESP32_C3.yml +23 -0
  659. data/vendor/board-maps/yaml/VALTRACK_V4_VTS_ESP32_C3.yml +23 -0
  660. data/vendor/board-maps/yaml/VIRALINK_GATE32_01.yml +6 -0
  661. data/vendor/board-maps/yaml/VIRALINK_GATE32_11.yml +7 -0
  662. data/vendor/board-maps/yaml/VIYALAB_MIZU_RP2040.yml +48 -0
  663. data/vendor/board-maps/yaml/WATCHY.yml +7 -0
  664. data/vendor/board-maps/yaml/WATCHY_V10.yml +7 -0
  665. data/vendor/board-maps/yaml/WATCHY_V15.yml +7 -0
  666. data/vendor/board-maps/yaml/WATCHY_V20.yml +7 -0
  667. data/vendor/board-maps/yaml/WAVESHARE_ESP32S3_TOUCH_LCD_128.yml +8 -0
  668. data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_0_96.yml +47 -0
  669. data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_1_28.yml +47 -0
  670. data/vendor/board-maps/yaml/WAVESHARE_RP2040_MATRIX.yml +48 -0
  671. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ONE.yml +48 -0
  672. data/vendor/board-maps/yaml/WAVESHARE_RP2040_PIZERO.yml +47 -0
  673. data/vendor/board-maps/yaml/WAVESHARE_RP2040_PLUS.yml +48 -0
  674. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ZERO.yml +48 -0
  675. data/vendor/board-maps/yaml/WEACT_STUDIO_ESP32C3.yml +14 -0
  676. data/vendor/board-maps/yaml/WESP32.yml +17 -0
  677. data/vendor/board-maps/yaml/WIDORA_AIR.yml +34 -0
  678. data/vendor/board-maps/yaml/WIFIDUINO_ESP8266.yml +23 -0
  679. data/vendor/board-maps/yaml/WIFINFO.yml +20 -0
  680. data/vendor/board-maps/yaml/WIPY3.yml +38 -0
  681. data/vendor/board-maps/yaml/WIZNET_5100S_EVB_PICO.yml +48 -0
  682. data/vendor/board-maps/yaml/WIZNET_5500_EVB_PICO.yml +48 -0
  683. data/vendor/board-maps/yaml/WIZNET_WIZFI360_EVB_PICO.yml +48 -0
  684. data/vendor/board-maps/yaml/WT32_ETH01.yml +8 -0
  685. data/vendor/board-maps/yaml/WT32_SC01_PLUS.yml +7 -0
  686. data/vendor/board-maps/yaml/WiFiduino32S3.yml +27 -0
  687. data/vendor/board-maps/yaml/WiFiduinoV2.yml +28 -0
  688. data/vendor/board-maps/yaml/Wifiduino32.yml +40 -0
  689. data/vendor/board-maps/yaml/XIAO_ESP32C3.yml +21 -0
  690. data/vendor/board-maps/yaml/XIAO_ESP32C6.yml +22 -0
  691. data/vendor/board-maps/yaml/XIAO_ESP32S3.yml +37 -0
  692. data/vendor/board-maps/yaml/YD_RP2040.yml +48 -0
  693. data/vendor/board-maps/yaml/atmegazero_esp32s2.yml +30 -0
  694. data/vendor/board-maps/yaml/connaxio_espoir.yml +24 -0
  695. data/vendor/board-maps/yaml/esp32vn_iot_uno.yml +31 -0
  696. data/vendor/board-maps/yaml/fm_devkit.yml +15 -0
  697. data/vendor/board-maps/yaml/heltec_wifi_kit_32.yml +38 -0
  698. data/vendor/board-maps/yaml/heltec_wifi_kit_32_V3.yml +42 -0
  699. data/vendor/board-maps/yaml/heltec_wifi_lora_32.yml +36 -0
  700. data/vendor/board-maps/yaml/heltec_wifi_lora_32_V2.yml +36 -0
  701. data/vendor/board-maps/yaml/heltec_wireless_stick.yml +36 -0
  702. data/vendor/board-maps/yaml/heltec_wireless_stick_LITE.yml +36 -0
  703. data/vendor/board-maps/yaml/openkb.yml +37 -0
  704. data/vendor/board-maps/yaml/roboheart_hercules.yml +26 -0
  705. data/vendor/board-maps/yaml/sensesiot_weizen.yml +35 -0
  706. data/vendor/board-maps/yaml/uPesy_WROOM.yml +36 -0
  707. data/vendor/board-maps/yaml/uPesy_WROVER.yml +36 -0
  708. data/vendor/board-maps/yaml/unphone8.yml +42 -0
  709. data/vendor/board-maps/yaml/unphone9.yml +50 -0
  710. data/vendor/board-maps/yaml/wifi_kit_8.yml +15 -0
  711. metadata +541 -22
  712. data/examples/led/apa102_breathe.rb +0 -45
  713. data/examples/pulse_io/ir_transmitter.rb +0 -55
  714. data/examples/spi/ssd_through_register.rb +0 -40
  715. data/examples/uart/bit_bang_read.rb +0 -16
  716. data/examples/uart/bit_bang_write.rb +0 -16
  717. data/lib/denko/analog_io/sensor.rb +0 -6
  718. data/lib/denko/sensor/virtual.rb +0 -42
  719. data/src/lib/DenkoIROutESP.cpp +0 -26
data/DEPS_IDE.md CHANGED
@@ -8,7 +8,7 @@ Some microcontroller platforms require board manager cores that do not come with
8
8
  * Confirm and exit Preferences. Wait for the IDE to finish downloading indexes from the new URL.
9
9
  * Click on Tools > Board > Board Manager.
10
10
  * Search for the platform you are installing by name, and click Install, optionally selecting a version.
11
-
11
+
12
12
  ### Installing Libraries
13
13
 
14
14
  All platforms will require libraries to be installed. To install a library do the following:
@@ -33,9 +33,9 @@ All platforms will require libraries to be installed. To install a library do th
33
33
  Arduino SAMD Boards (32-bits ARM Cortex-M0+)
34
34
  Arduino UNO R4 Boards
35
35
  ESP8266 Boards
36
- ESP32 Boards
36
+ ESP32 Boards @ v3.0.5
37
37
  Raspberry Pi Pico/RP2040
38
- ````
38
+ ````
39
39
  * Libraries:
40
40
  ````
41
41
  Servo by Michael Margolis, Arduino
@@ -43,8 +43,7 @@ All platforms will require libraries to be installed. To install a library do th
43
43
  WiFi by Arduino
44
44
  WiFi101 by Arduino
45
45
  WiFiNINA by Arduino
46
- IRremote @ v4.1.2 by shirriff, z3to, ArminJo
47
- IRremoteESP82666 @ v2.8.5 by David Conran, Sebastien Warin
46
+ IRremote @ v4.4.1 by shirriff, z3to, ArminJo
48
47
  ESP32Servo by Kevin Harrington, John K. Bennett
49
48
  Adafruit NeoPixel by Adafruit
50
49
  ````
@@ -53,24 +52,24 @@ All platforms will require libraries to be installed. To install a library do th
53
52
  * Boards:
54
53
  ````
55
54
  Arduino megaAVR Boards (only for Atmega4809 / Nano Every)
56
- ````
55
+ ````
57
56
  * Libraries:
58
57
  ````
59
58
  Servo by Michael Margolis, Arduino
60
59
  Ethernet by Various
61
60
  WiFi by Arduino
62
61
  WiFiNINA by Arduino
63
- IRremote @ v4.1.2 by shirriff, z3to, ArminJo
62
+ IRremote @ v4.4.1 by shirriff, z3to, ArminJo
64
63
  Adafruit NeoPixel by Adafruit
65
64
  ````
66
-
65
+
67
66
  **ARM-based Arduinos & Clones Only:**
68
67
  * Boards:
69
68
  ````
70
69
  Arduino SAM Boards (32-bits ARM Cortex-M3)
71
70
  Arduino SAMD Boards (32-bits ARM Cortex-M0+)
72
71
  Arduino UNO R4 Boards
73
- ````
72
+ ````
74
73
  * Libraries:
75
74
  ````
76
75
  Servo by Michael Margolis, Arduino
@@ -78,7 +77,7 @@ All platforms will require libraries to be installed. To install a library do th
78
77
  WiFi by Arduino
79
78
  WiFi101 by Arduino
80
79
  WiFiNINA by Arduino
81
- IRremote @ v4.1.2 by shirriff, z3to, ArminJo
80
+ IRremote @ v4.4.1 by shirriff, z3to, ArminJo
82
81
  Adafruit NeoPixel by Adafruit
83
82
  ````
84
83
 
@@ -90,10 +89,10 @@ All platforms will require libraries to be installed. To install a library do th
90
89
  * Boards:
91
90
  ````
92
91
  ESP8266 Boards
93
- ````
92
+ ````
94
93
  * Libraries:
95
94
  ````
96
- IRremoteESP82666 @ v2.8.5 by David Conran, Sebastien Warin
95
+ IRremote @ v4.4.1 by shirriff, z3to, ArminJo
97
96
  Adafruit NeoPixel by Adafruit
98
97
  ````
99
98
 
@@ -104,15 +103,15 @@ All platforms will require libraries to be installed. To install a library do th
104
103
  ````
105
104
  * Boards (latest version unless specified):
106
105
  ````
107
- ESP32 Boards
108
- ````
106
+ ESP32 Boards @ v3.0.5
107
+ ````
109
108
  * Libraries (latest version unless specified):
110
109
  ````
111
- IRremoteESP82666 @ v2.8.5 by David Conran, Sebastien Warin
110
+ IRremote @ v4.4.1 by shirriff, z3to, ArminJo
112
111
  ESP32Servo by Kevin Harrington, John K. Bennett
113
112
  Adafruit NeoPixel by Adafruit
114
113
  ````
115
-
114
+
116
115
  **RP2040 Only:**
117
116
  * Board Manager URLs:
118
117
  ````
@@ -121,8 +120,8 @@ All platforms will require libraries to be installed. To install a library do th
121
120
  * Boards:
122
121
  ````
123
122
  Raspberry Pi Pico/RP2040
124
- ````
123
+ ````
125
124
  * Libraries:
126
125
  ````
127
- IRremote @ v4.1.2 by shirriff, z3to, ArminJo
126
+ IRremote @ v4.4.1 by shirriff, z3to, ArminJo
128
127
  ````
data/HARDWARE.md CHANGED
@@ -2,9 +2,33 @@
2
2
 
3
3
  :green_heart: Full support :yellow_heart: Partial support :heart: Planned. No support yet :question: Works in theory. Untested in real hardware.
4
4
 
5
+ ### Espressif Chips with Wi-Fi (Except H2)
6
+ [![ESP8266 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp8266.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp8266.yml)
7
+ [![ESP32 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp32.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp32.yml)
8
+ [![ESP32-C3 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp32c3.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp32c3.yml)
9
+ [![ESP32-C6 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp32c6.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp32c6.yml)
10
+ [![ESP32-H2 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp32h2.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp32h2.yml)
11
+ [![ESP32-S2 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp32s2.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp32s2.yml)
12
+ [![ESP32-S3 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp32s3.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp32s3.yml)
13
+
14
+ | Chip | Status | Board Tested | Notes |
15
+ | :-------- | :------: | :--------------- |------ |
16
+ | ESP8266 | :green_heart: | NodeMCU |
17
+ | ESP8285 | :question: | DOIT ESP-Mx DevKit | Should be identical to 8266. Not tested in hardware.
18
+ | ESP32 | :green_heart: | DOIT ESP32 DevKit V1 |
19
+ | ESP32-S2 | :green_heart: | LOLIN S2 Pico | Native USB-CDC (broken in core 3.0+)
20
+ | ESP32-S3 | :green_heart: | LOLIN S3 V1.0.0 | Native USB-CDC (broken in core 3.0+)
21
+ | ESP32-C3 | :green_heart: | LOLIN C3 Mini V2.1.0 | Native USB-CDC (broken in core 3.0+)
22
+ | ESP32-H2 | :green_heart: | ESP32-H2-MINI-1 | No Wi-Fi. Native USB-CDC (broken in core 3.0+)
23
+ | ESP32-C6 | :green_heart: | ESP32-C6-WROOM-1 | Native USB-CDC (broken in core 3.0+)
24
+
25
+ **Note:** For ESP32 chips using native USB-CDC, make sure `USB CDC On Boot` is `Enabled` in the IDE's `Tools` menu. Flashing from the CLI doesn't automatically enable this, so the IDE is recommended for now.
26
+
27
+ **Note:** Since Arduino ESP32 Core version 3.0+, USB-CDC is very unreliable when sending lots of data both directions (something denko can do). It's a known issue in the core. Use a regular UART until it's fixed.
28
+
5
29
  ### AVR/MegaAVR Based Arduino Products (and Clones)
6
- [![AVR Build Status](https://github.com/denko-rb/denko/actions/workflows/build_avr.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_avr.yml)
7
- [![MegaAVR Build Status](https://github.com/denko-rb/denko/actions/workflows/build_megaavr.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_megaavr.yml)
30
+ [![AVR Build Status](https://github.com/denko-rb/denko/actions/workflows/build_atmega_avr.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_atmega_avr.yml)
31
+ [![MegaAVR Build Status](https://github.com/denko-rb/denko/actions/workflows/build_atmega_megaavr.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_atmega_megaavr.yml)
8
32
 
9
33
  | Chip | Status | Products | Notes |
10
34
  | :-------- | :------: | :--------------- |------ |
@@ -18,8 +42,8 @@
18
42
  **Note:** Only USB boards listed. Any board with a supported chip should work, once you can flash it and connect to serial.
19
43
 
20
44
  ### ARM Based Arduino Products (and Clones)
21
- [![SAM3X Build Satus](https://github.com/denko-rb/denko/actions/workflows/build_sam3x.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_sam3x.yml)
22
- [![SAMD Build Satus](https://github.com/denko-rb/denko/actions/workflows/build_samd.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_samd.yml)
45
+ [![SAM3X Build Satus](https://github.com/denko-rb/denko/actions/workflows/build_atsam3x.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_atsam3x.yml)
46
+ [![SAMD Build Satus](https://github.com/denko-rb/denko/actions/workflows/build_atsamd21.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_atsamd21.yml)
23
47
  [![RA4M1 Build Satus](https://github.com/denko-rb/denko/actions/workflows/build_ra4m1.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_ra4m1.yml)
24
48
 
25
49
  | Chip | Status | Products | Notes |
@@ -41,44 +65,18 @@
41
65
 
42
66
  | Chip | Status | Products | Notes |
43
67
  | :-------- | :------: | :--------------- |------ |
44
- | ATmega1284 | :heart: | Used in many 8-bit 3D printer boards. |
45
-
46
- ### Espressif Chips with Built-In Wi-Fi
47
- [![ESP8266 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp8266.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp8266.yml)
48
- [![ESP32 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp32.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp32.yml)
49
-
50
- | Chip | Status | Board Tested | Notes |
51
- | :-------- | :------: | :--------------- |------ |
52
- | ESP8266 | :green_heart: | NodeMCU |
53
- | ESP8285 | :question: | DOIT ESP-Mx DevKit | Should be identical to 8266. Not tested in hardware.
54
- | ESP32 | :green_heart: | DOIT ESP32 DevKit V1 |
55
- | ESP32-S2 | :green_heart: | LOLIN S2 Pico | Native USB
56
- | ESP32-S3 | :green_heart: | LOLIN S3 V1.0.0 | Native USB
57
- | ESP32-C3 | :green_heart: | LOLIN C3 Mini V2.1.0 | Native USB
58
- | ESP32-H2 | :heart: | - | Support in Arduino ESP32 core beta
59
- | ESP32-C6 | :heart: | - | Support in Arduino ESP32 core beta
60
-
61
- **Note:** For ESP32 chips using native USB, make sure `USB CDC On Boot` is `Enabled` in the IDE's `Tools` menu. Flashing from the CLI doesn't automatically enable this, so the IDE is recommended for now.
68
+ | ATmega1284 | :heart: | Used in many 8-bit 3D printer boards. |
62
69
 
63
70
  ### Raspberry Pi Microcontrollers
64
71
  [![RP2040 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_rp2040.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_rp2040.yml)
65
72
 
66
73
  | Chip | Status | Board Tested | Notes |
67
74
  | :-------- | :------: | :--------------- |------ |
68
- | RP2040 | :green_heart: | Raspberry Pi Pico (W) | WiFi only on W version. No WS1812 LED support.
75
+ | RP2040 | :green_heart: | Raspberry Pi Pico (W) |
69
76
 
70
77
  # Single Board Computers
71
78
 
72
- ### Raspberry Pi Single Board Computers
73
- **Note:** See the [denko-piboard](https://github.com/denko-rb/denko-piboard) extension to this gem. It uses the peripheral classes from this gem, but swaps out `Board` for `PiBoard`, which uses the Raspberry Pi's built-in GPIO interface. This is still a work-in-progress.
74
-
75
- | Chip | Status | Products | Notes |
76
- | :-------- | :------: | :--------------- |------ |
77
- | BCM2835 | :yellow_heart: | Pi 1, Pi Zero (W) |
78
- | BCM2836/7 | :question: | Pi 2 |
79
- | BCM2837A0/B0 | :yellow_heart: | Pi 3 |
80
- | BCM2711 | :question: | Pi 4, Pi 400 |
81
- | BCM2710A1 | :question: | Pi Zero 2W |
79
+ See the [Support](https://github.com/denko-rb/denko-piboard?tab=readme-ov-file#support) section of denko-piboard.
82
80
 
83
81
  # Peripherals
84
82
 
@@ -91,22 +89,22 @@
91
89
  | Digital In | :green_heart: | H | `DigitalIO::Input` | 1ms - 128ms (4ms default) listen, poll, or read
92
90
  | Analog In (ADC) | :green_heart: | H | `AnalogIO::Input` | 1ms - 128ms (16ms default) listen, poll, or read
93
91
  | Digital Out | :green_heart: | H | `DigitalIO::Output` |
94
- | Analog Out (DAC) | :green_heart: | H | `AnalogIO::Output` | Only SAM3X, SAMD21, RA4M1, ESP32, ESP32-S2
92
+ | Analog Out (DAC) | :green_heart: | H | `AnalogIO::Output` | **Only** SAM3X, SAMD21, RA4M1, ESP32, ESP32-S2
95
93
  | PWM Out | :green_heart: | H | `PulseIO::PWMOutput` |
96
- | Servo/ESC PWM | :green_heart: | H | See Motor table | Uses PWM
97
- | Tone Out (Square Wave)| :green_heart: | H | `PulseIO::Buzzer` | Except SAM3X. Uses PWM
98
- | I2C | :green_heart: | H | `I2C::Bus` | Predetermined pins from IDE
99
- | I2C Bit Bang | :heart: | S | `I2C::BitBang` | Any pins
100
- | SPI | :green_heart: | H | `SPI::Bus` | Predetermined pins from IDE
101
- | SPI Bit Bang | :green_heart: | S | `SPI::BitBang` | Any pins
102
- | UART | :green_heart: | H | `UART::Hardware` | Except Atmega328, ATmega168
103
- | UART Bit Bang | :green_heart: | S | `UART::BitBang` | Only ATmega328, ATmega168
94
+ | Servo/ESC Motor Drive | :green_heart: | H | See Motor Driver Table | Depends on PWM
95
+ | Tone Out (Sq. Wave) | :green_heart: | H | `PulseIO::Buzzer` | Except SAM3X. Uses PWM
96
+ | I2C | :green_heart: | H | `I2C::Bus` | Predetermined pins per board
97
+ | I2C Bit-Bang | :green_heart: | S | `I2C::BitBang` | Any pins
98
+ | SPI | :green_heart: | H | `SPI::Bus` | Predetermined pins per board
99
+ | SPI Bit-Bang | :green_heart: | S | `SPI::BitBang` | Any pins
100
+ | UART | :green_heart: | H | `UART::Hardware` | **Except** Atmega328, ATmega168
101
+ | UART Bit-Bang | :green_heart: | S | `UART::BitBang` | **Only** ATmega328
104
102
  | Maxim OneWire | :green_heart: | S | `OneWire::Bus` | No overdrive
105
- | Infrared Emitter | :green_heart: | S | `PulseIO::IRTransmitter` | Except SAM3X, RA4M1
106
- | Infrared Receiver | :heart: | S | `PulseIO::IRReceiver` | Doable with existing library
107
- | WS2812 | :green_heart: | S | See LED table | Except RP2040, RA4M1
108
- | ESP32-PCNT | :heart: | H | - | Only ESP32. Pulse counter (for encoders)
109
- | ESP32-MCPWM | :heart: | H | - | Only ESP32. Motor control PWM
103
+ | Infrared Output | :green_heart: | S | `PulseIO::IROutput` | **Except** SAM3X, RA4M1
104
+ | Infrared Input | :heart: | S | `PulseIO::IRInput` | Doable with existing library
105
+ | WS2812 RGB LEDs | :green_heart: | S | `LED::WS2812` | **Except** RA4M1
106
+ | ESP32-PCNT | :heart: | H | - | **Only** ESP32. Pulse and encoder counter
107
+ | ESP32-MCPWM | :heart: | H | - | **Only** ESP32. Motor control PWM
110
108
 
111
109
  **Note:** When listening, the board checks the pin's value every **_2^n_** milliseconds (**_n_** from **_0_** to **_7_**), without further commands.
112
110
  Polling and reading follow a call and response pattern.
@@ -137,7 +135,8 @@ Polling and reading follow a call and response pattern.
137
135
  | Name | Status | Interface | Component Class | Notes |
138
136
  | :--------------- | :------: | :-------- | :--------------- |------ |
139
137
  | HD44780 LCD | :green_heart: | Digital Out, Output Register | `Display::HD44780` |
140
- | SSD1306 OLED | :yellow_heart: | I2C | `Display::SSD1306` | 1 font, some graphics
138
+ | SSD1306 OLED | :yellow_heart: | I2C or SPI | `Display::SSD1306` | 1 font, some graphics
139
+ | SH1106 OLED | :yellow_heart: | I2C or SPI | `Display::SH1106` | Works same as SSD1306
141
140
  | ST7565R (128x64 Mono) | :heart: | SPI | `Display::ST7565R` |
142
141
  | ST7735S (160x128 RGB) | :heart: | SPI | `Display::ST7735S` |
143
142
  | ILI9341 (240x320 RGB) | :heart: | SPI | `Display::ILI9341` |
@@ -172,11 +171,11 @@ Polling and reading follow a call and response pattern.
172
171
  | Input Register | :green_heart: | SPI | `SPI::InputRegister` | Tested on CD4021B
173
172
  | Output Register | :green_heart: | SPI | `SPI::OutputRegister`| Tested on 74HC595
174
173
  | PCF8574 Expander | :heart: | I2C | `DigitalIO::PCF8574` | 8-ch bi-directional digital I/O
175
- | ADS1100 ADC | :heart: | I2C | `AnalogIO::ADS1100` | 1-ch, 16-bit ADC
174
+ | ADS1100 ADC | :green_heart: | I2C | `AnalogIO::ADS1100` | 1-ch, 16-bit ADC. No continuous mode.
176
175
  | ADS1115 ADC | :green_heart: | I2C | `AnalogIO::ADS1115` | 4-ch, 16-bit ADC. Comparator not implemented.
177
176
  | ADS1118 ADC | :green_heart: | SPI | `AnalogIO::ADS1118` | 4-ch, 16-bit ADC + temperature
178
177
  | ADS1232 ADC | :heart: | SPI | `AnalogIO::ADS1232` | 2-ch, 24-bit ADC + temperature
179
- | PCF8591 ADC/DAC | :heart: | I2C | `AnalogIO::PCF8591` | 4-ch, 8-bit ADC + 1-chm 8-bit DAC
178
+ | PCF8591 ADC/DAC | :heart: | I2C | `AnalogIO::PCF8591` | 4-ch, 8-bit ADC + 1-ch 8-bit DAC
180
179
  | MCP4725 DAC | :heart: | I2C | `AnalogIO::MCP4275` | 1-ch, 12-bit DAC
181
180
  | PCA9548 I2C Mux | :heart: | I2C | `I2C::PCA9548` | 8-way I2C multiplexer
182
181
 
@@ -189,7 +188,7 @@ Polling and reading follow a call and response pattern.
189
188
  | DS18B20 | :green_heart: | OneWire | `Sensor::DS18B20` | Temp |
190
189
  | DHT11/21/22 | :green_heart: | Digi In/Out | `Sensor::DHT` | Temp / RH |
191
190
  | SHT30/31/35 | :green_heart: | I2C | `Sensor::SHT3X` | Temp / RH | M5Stack ENV III, one-shot only
192
- | SHT40/41 | :heart: | I2C | `Sensor::SHT4X` | Temp / RH |
191
+ | SHT40/41 | :heart: | I2C | `Sensor::SHT4X` | Temp / RH |
193
192
  | QMP6988 | :green_heart: | I2C | `Sensor::QMP6988` | Temp / Press | M5Stack ENV III
194
193
  | BMP180 | :green_heart: | I2C | `Sensor::BMP180` | Temp / Press |
195
194
  | BMP280 | :green_heart: | I2C | `Sensor::BMP280` | Temp / Press |
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
- # Denko 0.13.4 [![Test Status](https://github.com/denko-rb/denko/actions/workflows/ruby.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/ruby.yml)
2
- ### Ruby Meets Microcontrollers
3
- Denko gives you a high-level Ruby interface to low-level hardware, without writing microcontroller code. Use LEDs, buttons, sensors and more, just as easily as any Ruby object:
1
+ # denko
2
+ [![Test Status](https://github.com/denko-rb/denko/actions/workflows/ruby.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/ruby.yml)
3
+
4
+ Program real-life electronics in pure Ruby. LEDs, buttons, sensors (and more) work just like any Ruby object:
4
5
 
5
6
  ```ruby
6
7
  led.blink 0.5
@@ -14,28 +15,39 @@ button.down do
14
15
  end
15
16
  ```
16
17
 
17
- Denko doesn't run Ruby on the microcontroller (see [mruby-denko](#mruby-denko)). It runs custom Arduino firmware to expose its I/O interfaces over a socket. You run Ruby on your computer and talk to it. The microcontroller, and anything connected to it, map directly to Ruby objects. You get to think about your hardware and appplication logic, not everything in between.
18
+ ## How It Works
18
19
 
19
- High-level abstraction in Ruby makes hardware classes easy to implement, with intuitive interfaces. They multitask a single core microcontroller, with thread-safe state, and callbacks for inputs. If you need more I/O, integration is seamless; connect another board and instantiate it in Ruby.
20
+ There are currently two ways to use denko. Both have the same user-friendly API, but the hardware can be very different. Here's a summary of each:
20
21
 
21
- ### Supported Hardware
22
+ ### Connected Microcontroller
23
+ - Flash a microcontroller with the denko C firmware, so it can be "remote controlled"
24
+ - Run a Ruby program on a "real" computer with the microcontroller connected
25
+ - The microcontroller appears as an instance of `Denko::Board`
26
+ - Calling methods on it will exchange messages that manipulate the real microcontroller
27
+ - The microcontroller can only do the bare minimum to send and receive signals
28
+ - Everything from peripheral drivers up happens in Ruby
22
29
 
23
- Full list of supported mircocontroller platforms, interfaces, and peripherals is located [here](HARDWARE.md).
30
+ ### Single-Board-Computer
31
+ - Ruby a Ruby program on the SBC
32
+ - The SBC's own GPIO header appears as a `Denko::PiBoard` instance
33
+ - Everything runs self-contained on the SBC
24
34
 
25
- ##### denko-piboard
26
- The [denko-piboard](https://github.com/denko-rb/denko-piboard) add-on gem, uses a Raspberry Pi's built in GPIO header instead of an attached microcontroller. Connect things directly to the Pi, and use the peripheral classes from this gem.
35
+ **Notes:**
36
+ - Peripheral classes are only in this gem, but are compatible with both types of board, and both gems.
37
+ - That makes the [examples](examples) folder of this gem (mostly) relevant to both.
38
+ - If using denko-piboard, ignore the hardware and installation sections here.
27
39
 
28
- ##### mruby-denko
29
- A solo Raspberry Pi (or other SBC + microcontroller) is great if you need the compute power anyway, but what if you don't? Why not run Ruby on the microcontroller itself?
40
+ ## Supported Hardware
30
41
 
31
- That's the goal of [mruby-denko](https://github.com/denko-rb/mruby-denko): write mruby on the ESP32, using peripheral classes as close to this gem as possible. Still early in development, so limited features, but already usable.
42
+ [Microcontroller & Peripheral Support List](HARDWARE.md)
32
43
 
33
- ## Getting Started
44
+ ## Installation
34
45
 
35
- **Note:** If using Windows, you can follow the Mac/Linux instructions in WSL, but it is not recommended. Serial (COM port) forwarding isn't working on WSL2, which means you can't communicate with the board. There are workarounds, and it might work on WSL1, but the [RubyInstaller for Windows](https://rubyinstaller.org/) and Arduino IDE are recommended instead. A Linux virtual machine with USB passthrough works too.
46
+ **Note:** On Windows you can follow the Mac/Linux instructions in WSL, but it isn't recommended. Serial (COM port) forwarding isn't working on WSL2, which means you can't communicate with the board. There are workarounds, and it might work on WSL1, but the [RubyInstaller for Windows](https://rubyinstaller.org/) and Arduino IDE are recommended instead. A Linux virtual machine with USB passthrough works too.
36
47
 
37
48
  #### 1. Install the Gem
38
- ```shell
49
+
50
+ ```console
39
51
  gem install denko
40
52
  ```
41
53
 
@@ -44,66 +56,76 @@ gem install denko
44
56
  Get the Arduino IDE [here](http://arduino.cc/en/Main/Software) for a graphical interface (recommended for Windows), or use the command line interface from [here](https://github.com/arduino/arduino-cli/releases), or Homebrew.
45
57
 
46
58
  **CLI Installation with Homebrew on Mac or Linux:**
47
- ```shell
59
+
60
+ ```console
48
61
  brew update
49
62
  brew install arduino-cli
50
63
  ```
51
64
 
52
65
  #### 3. Install Arduino Dependencies
66
+
53
67
  Denko uses Arduino cores, which support different microcontrollers, and a few libraries. Install only the ones for your microcontroller, or install everything. There are no conflcits. Instructions:
54
- * [Install Dependencies in IDE](DEPS_IDE.md)
55
- * [Install Dependencies in CLI](DEPS_CLI.md)
68
+
69
+ - [Install Dependencies in IDE](DEPS_IDE.md)
70
+ - [Install Dependencies in CLI](DEPS_CLI.md)
56
71
 
57
72
  #### 4. Generate the Arduino Sketch
73
+
58
74
  The `denko` command is included with the gem. It will make the Arduino sketch folder for you, and configure it.
59
75
 
60
76
  **Example for ESP32 target on both serial and Wi-Fi:**
61
- ```shell
77
+
78
+ ```console
62
79
  denko sketch serial --target esp32
63
80
  denko sketch wifi --target esp32 --ssid YOUR_SSID --password YOUR_PASSWORD
64
81
 
65
82
  # For more options
66
83
  denko targets
67
84
  ```
85
+
68
86
  **Note:** Boards flashed with a Wi-Fi or Ethernet sketch will [listen for a TCP connection](examples/connection/tcp.rb), but fall back to Serial when there is none active.
69
87
 
70
88
  #### 5a. IDE Flashing
71
89
 
72
- * Connect the board to your computer with a USB cable.
73
- * Open the .ino file inside your sketch folder with the IDE.
74
- * Open the dropdown menu at the top of the IDE window, and select your board.
75
- * Press the Upload :arrow_right: button. This will compile the sketch, and flash it to the board.
90
+ - Connect the board to your computer with a USB cable.
91
+ - Open the .ino file inside your sketch folder with the IDE.
92
+ - Open the dropdown menu at the top of the IDE window, and select your board.
93
+ - Press the Upload :arrow_right: button. This will compile the sketch, and flash it to the board.
76
94
 
77
95
  **Troubleshooting:**
78
- * If your serial port is in the list, but the board is wrong, select the serial port anyway, then you will be asked to manually select a board.
79
- * If your board doesn't show up at all, make sure it is connected properly. Try disconnecting and reconnecting, use a different USB port or cable, or press the reset button after plugging it in.
80
- * Some boards may be in a state where you have to hold their "boot" button while cycling power (reconnect or reset) for them to enter firmware update mode. Eg. Raspberry Pi Pico, ESP32-S2/S3.
96
+
97
+ - If your serial port is in the list, but the board is wrong, select the serial port anyway, then you can manually select a board.
98
+ - If your board doesn't show up at all, make sure it is connected properly. Try disconnecting and reconnecting, use a different USB port or cable, or press the reset button after plugging it in.
99
+ - Some boards can get into a state where you have to hold their "boot" button while cycling power (reconnect or reset) for them to enter firmware update mode. Eg. Raspberry Pi Pico, ESP32-S2/S3.
81
100
 
82
101
  #### 5b. CLI Flashing
83
102
 
84
- * The path output by `denko sketch` earlier is your sketch folder. Keep it handy.
85
- * Connect the board to your computer with a USB cable.
86
- * Check if the CLI recognizes it:
103
+ - The path output by `denko sketch` earlier is your sketch folder. Keep it handy.
104
+ - Connect the board to your computer with a USB cable.
105
+ - Check if the CLI recognizes it:
87
106
 
88
- ```shell
107
+ ```console
89
108
  arduino-cli board list
90
109
  ```
91
-
92
- * Using the Port and FQBN (Fully Qualified Board Name) shown, compile and upload the sketch:
93
- ```shell
110
+
111
+ - Using the Port and FQBN (Fully Qualified Board Name) shown, compile and upload the sketch:
112
+
113
+ ```console
94
114
  arduino-cli compile -b YOUR_FQBN YOUR_SKETCH_FOLDER
95
115
  arduino-cli upload -v -p YOUR_PORT -b YOUR_FQBN YOUR_SKETCH_FOLDER
96
116
  ```
97
117
 
98
118
  **Troubleshooting:**
99
- * Follow the same steps as the IDE method above. List all FQBNs using:
100
- ```shell
119
+
120
+ - Follow the same steps as the IDE method above. List all FQBNs using:
121
+
122
+ ```console
101
123
  arduino-cli board listall
102
124
  ```
103
125
 
104
126
  #### 6. Test It
105
127
 
106
- Most boards have a regular LED on-board. Test it with the [blink](examples/led/builtin_blink.rb) example. If you have an on-board WS2812 LED (Neopixel), use the [WS2812 blink](examples/led/ws2812_builtin_blink.rb) example instead. If it starts blinking, you're ready for Ruby!
128
+ Most boards have a regular LED on-board. Test with the [blink](examples/led/builtin_blink.rb) example. If you have an on-board WS2812 LED (Neopixel), use the [WS2812 blink](examples/led/ws2812_builtin_blink.rb) example instead. If it starts blinking, you're ready for Ruby!
107
129
 
108
130
  ## Examples and Tutorials
109
131
 
@@ -118,24 +140,10 @@ Most boards have a regular LED on-board. Test it with the [blink](examples/led/b
118
140
  - Current limiting resistors for LEDs
119
141
  - Breadboard
120
142
  - Jumper wires
121
-
122
- **Tip:** Kits are a cost-effective way to get started. They will almost certainly include these parts, plus more, getting you well beyond the tutorial.
143
+
144
+ **Tip:** Kits are a good way to get started. They include even more, and get you well beyond the tutorial.
123
145
 
124
146
  #### Included Examples
125
147
 
126
- - The [examples](examples) folder contains at least one example per supported peripheral, demonstrating its interface, and a few that use multiple peripherals together.
148
+ - The [examples](examples) folder contains at least one example per peripheral, demonstrating its interface.
127
149
  - Each example should incldue a wiring diagram alongside its code (still incomplete).
128
-
129
- #### More Examples
130
-
131
- **Note:** This gem was renamed from `dino` to `denko`. Some of these examples use the old name.
132
-
133
- - Try [Getting Started with Arduino and Dino](http://tutorials.jumpstartlab.com/projects/arduino/introducing_arduino.html) from [Jumpstart Lab](http://jumpstartlab.com) (_ignore old install instructions_).
134
- - An example [rails app](https://github.com/austinbv/dino_rails_example) using Dino and Pusher.
135
- - For a Sinatra example, look at the [site](https://github.com/austinbv/dino_cannon) used to shoot the cannon at RubyConf2012.
136
-
137
- ## Explanatory Talks
138
-
139
- - "Arduino the Ruby Way" at RubyConf 2012
140
- - [Video by ConFreaks](https://www.youtube.com/watch?v=oUIor6GK-qA)
141
- - [Slides on SpeakerDeck](https://speakerdeck.com/austinbv/arduino-the-ruby-way)
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env rake
1
+ #!/usr/bin/env ruby
2
2
  require "bundler/gem_tasks"
3
3
  require 'rake/testtask'
4
4
 
@@ -0,0 +1,49 @@
1
+ #
2
+ # Find how much analog listen throughput is available from a Board.
3
+ #
4
+ # To find the limit, add more pins and/or reduce the divider until
5
+ # the rate per input pin can't meet the target.
6
+ # Example: Rate per input pin is < 500 Hz when divider is 2 ms.
7
+ #
8
+ require 'bundler/setup'
9
+ require 'denko'
10
+
11
+ # In seconds
12
+ TEST_TIME = 30
13
+
14
+ # Millisecond interval for analog listeners
15
+ # Valid values: 1, 2, 4, 8, 16, 32, 64, 128
16
+ DIVIDER = 2
17
+
18
+ # Input pins to read
19
+ PINS = [:A0, :A1]
20
+
21
+ connection = Denko::Connection::Serial.new
22
+ board = Denko::Board.new(connection)
23
+ inputs = PINS.map { |pin| Denko::AnalogIO::Input.new(pin: pin, board: board) }
24
+
25
+ # No mutex. Denko::Board callbacks are sequential, regardless of Ruby engine.
26
+ $readings = 0
27
+ inputs.each do |input|
28
+ input.add_callback { $readings += 1 }
29
+ input.listen(DIVIDER)
30
+ end
31
+
32
+ print "Sampling for #{TEST_TIME} seconds... "
33
+
34
+ # Main test
35
+ start = Time.now
36
+ $readings = 0
37
+ sleep TEST_TIME
38
+ finish = Time.now
39
+ # Copy immediately to another variable before stopping inputs.
40
+ readings = $readings
41
+ inputs.each { |input| input.stop }
42
+
43
+ puts "Done."; puts
44
+
45
+ rps = (readings / (finish - start))
46
+ rpspi = rps / inputs.count
47
+ puts "Total analog readings : #{readings}"
48
+ puts "Analog readings /s : #{rps.round(3)}"
49
+ puts "Rate per input pin : #{rpspi.round(3)} Hz"
@@ -0,0 +1,28 @@
1
+ #
2
+ # Benchmark digital write throughput for a Denko::Board instance.
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ # Pins > 63 will not benefit from the single-byte message optimization.
8
+ PIN = 4
9
+ TOTAL_WRITES = 200_000
10
+
11
+ connection = Denko::Connection::Serial.new
12
+ board = Denko::Board.new(connection)
13
+ output = Denko::DigitalIO::Output.new(board: board, pin: PIN)
14
+
15
+ print "Testing #{TOTAL_WRITES} digital writes... "
16
+
17
+ start = Time.now
18
+ (TOTAL_WRITES / 2).times do
19
+ output.high
20
+ output.low
21
+ end
22
+ board.finish_write
23
+ finish = Time.now
24
+
25
+ puts "Done."; puts
26
+
27
+ wps = TOTAL_WRITES / (finish - start)
28
+ puts "Digital writes per second : #{wps.round(3)}"
@@ -35,22 +35,29 @@
35
35
  # ESP32-S3 : 51.8 fps (native USB) - Changed from 64 to 128 serial ACK interval
36
36
  # ESP32-C3 : 51.7 fps (native USB) - Changed from 64 to 128 serial ACK interval
37
37
  #
38
+ # July 27 2024 | i7 8700k CPU | CRuby 3.3.1 | 100 frames | Average of 3 runs
39
+ #
40
+ # ESP32-H2 : 7.3 fps (WCH UART bridge @ 115200, I2C @ 400kHz)
41
+ # ESP32-H2 : 10.9 fps (WCH UART bridge @ 230400, I2C @ 400kHz)
42
+ # ESP32-C6 : 8.0 fps (WCH UART bridge @ 115200, I2C @ 1MHz)
43
+ # ESP32-C6 : 13.2 fps (WCH UART bridge @ 230400, I2C @ 1MHz)
44
+ #
38
45
  require 'bundler/setup'
39
46
  require 'denko'
40
47
 
41
48
  # Settings
42
49
  # Must match speed in the sketch for UART briges. Doesn't matter for native USB.
43
- BAUD_RATE = 115_200
44
- FRAME_COUNT = 100
50
+ BAUD_RATE = 115_200
51
+ FRAME_COUNT = 100
45
52
  # Request 1 Mhz I2C frequency. Wire libraries will fall back to fastest available speed.
46
53
  I2C_FREQUENCY = 1_000_000
47
54
  # Use :SDA0 for RP2040
48
- I2C_PIN = :SDA
55
+ I2C_PIN = :SDA
49
56
 
50
57
  # Setup
51
- board = Denko::Board.new(Denko::Connection::Serial.new(baud: BAUD_RATE))
52
- bus = Denko::I2C::Bus.new(board: board, pin: I2C_PIN)
53
- oled = Denko::Display::SSD1306.new(bus: bus, rotate: true, i2c_frequency: I2C_FREQUENCY)
58
+ board = Denko::Board.new(Denko::Connection::Serial.new(baud: BAUD_RATE))
59
+ bus = Denko::I2C::Bus.new(board: board)
60
+ oled = Denko::Display::SSD1306.new(bus: bus, rotate: true, i2c_frequency: I2C_FREQUENCY)
54
61
  canvas = oled.canvas
55
62
 
56
63
  # Intro
data/build CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!ruby
2
2
  # encoding: UTF-8
3
3
 
4
4
  require "pathname"
data/denko.gemspec CHANGED
@@ -4,8 +4,8 @@ require File.expand_path('../lib/denko/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["vickash, Austinbv"]
6
6
  gem.email = ["mail@vickash.com"]
7
- gem.description = %q{GPIO library for Ruby}
8
- gem.summary = %q{Use GPIO, I2C, SPI, UART and more on a connected microcontroller}
7
+ gem.description = %q{Electronics programming in Ruby}
8
+ gem.summary = %q{Use GPIO, PWM, I2C, SPI, and more, on a connected microcontroller, or single-board-computer}
9
9
  gem.homepage = 'https://github.com/denko-rb/denko'
10
10
  gem.files = `git ls-files`.split($\)
11
11
  gem.licenses = ['MIT']
@@ -38,6 +38,9 @@ Gem::Specification.new do |gem|
38
38
  gem.version = Denko::VERSION
39
39
  gem.executables = ["denko"]
40
40
 
41
+ gem.required_ruby_version = '>=2.7.8'
42
+
43
+ gem.add_dependency 'observer', '~> 0.1.2'
41
44
  gem.add_dependency 'rubyserial', '~> 0.6'
42
45
  gem.add_dependency 'bcd', '~> 1'
43
46