denko 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,48 @@
1
+ #
2
+ # This example polls an HTU21D (temp/humidity sensor) in the background.
3
+ # The main thread refreshes an SSD1306 OLED ~20 times per second,
4
+ # showing the latest temperature and humidity values, and current time.
5
+ # Both devices are conected to the same I2C bus.
6
+ #
7
+ require 'bundler/setup'
8
+ require 'denko'
9
+
10
+ board = Denko::Board.new(Denko::Connection::Serial.new)
11
+ i2c = Denko::I2C::Bus.new(board: board, pin: :SDA)
12
+
13
+ # Get temperature and humidity every second.
14
+ htu21d = Denko::Sensor::HTU21D.new(bus: i2c)
15
+ htu21d.temperature.poll(1)
16
+ htu21d.humidity.poll(1)
17
+
18
+ oled = Denko::Display::SSD1306.new(bus: i2c, rotate: true)
19
+ canvas = oled.canvas
20
+ last_refresh = Time.now
21
+
22
+ loop do
23
+ elapsed = Time.now - last_refresh
24
+
25
+ # Aim for 20 fps.
26
+ if elapsed > 0.049
27
+ canvas.clear
28
+
29
+ canvas.text_cursor = [0,0]
30
+ canvas.print "Time: #{Time.now.strftime("%H:%M:%S.%L")}"
31
+
32
+ if htu21d[:temperature]
33
+ canvas.text_cursor = [0,8]
34
+ canvas.print "Temp: " + ('%.3f' % htu21d[:temperature]).rjust(7, " ") + " C"
35
+ end
36
+
37
+ if htu21d[:humidity]
38
+ canvas.text_cursor = [0,16]
39
+ canvas.print "Humidity: " + ('%.3f' % htu21d[:humidity]).rjust(7, " ") + " %"
40
+ end
41
+
42
+ # Only refresh the area in use.
43
+ oled.draw(0, 127, 0, 24)
44
+ last_refresh = Time.now
45
+ else
46
+ sleep 0.001
47
+ end
48
+ end
@@ -0,0 +1,74 @@
1
+ #
2
+ # Example using an ADS1118 ADC over the SPI bus.
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ board = Denko::Board.new(Denko::Connection::Serial.new)
8
+
9
+ # Connect the ADS1118 pins to the board's default SPI pins.
10
+ bus = Denko::SPI::Bus.new(board: board)
11
+
12
+ # Or use a 2-way bit-bang SPI bus on any pins.
13
+ # SPI_BIT_BANG_PINS = { clock: 13, input: 12, output: 11 }
14
+ # bus = Denko::SPI::BitBang.new(board: board, pins: SPI_BIT_BANG_PINS)
15
+
16
+ # Connect chip select/enable pin of the ADS1118 to pin 9.
17
+ ads1118 = Denko::AnalogIO::ADS1118.new(bus: bus, pin: 9)
18
+
19
+ # Helper method so readings look nice.
20
+ def print_reading(name, raw, voltage)
21
+ print "#{Time.now.strftime '%Y-%m-%d %H:%M:%S'} - "
22
+ print "#{name.rjust(12, " ")} | "
23
+ print "Raw: #{raw.to_s.rjust(6, " ")} | "
24
+ print "Voltage: "
25
+ print ("%.10f" % voltage).rjust(13, " ")
26
+ puts " V"
27
+ end
28
+
29
+ #
30
+ # Read the ADS1118 internal temperature sensor.
31
+ # This always uses the 128 SPS mode, and there is no polling method for it.
32
+ #
33
+ temperature = ads1118.temperature_read
34
+ puts "ADS1118 Temperature: #{temperature} \xC2\xB0C"
35
+ puts
36
+
37
+ #
38
+ # Use the ADS1118 directly by writing values to its config registers.
39
+ # ADS1118#read automatically waits for conversion time and gets the 16-bit reading.
40
+ # See datasheet for register bitmaps.
41
+ #
42
+ # Note: This is the only way to use continuous mode. Subcomponents always use one-shot.
43
+ #
44
+ ads1118.read([0b10000001, 0b10001011]) do |reading|
45
+ voltage = reading * 0.0001875
46
+ print_reading("Direct", reading, voltage)
47
+ end
48
+
49
+ #
50
+ # Or use its BoardProxy interface, adding subcomponents as if it were a Board.
51
+ # The key adc: can substitute for board: when intializing AnalogIO::Input.
52
+ #
53
+ # Gain and sample rate bitmasks can be found in the datasheet.
54
+ #
55
+ # Input on pin 0, with pin 1 as differential negative input, and 6.144 V full range.
56
+ diff_input = Denko::AnalogIO::Input.new(adc: ads1118, pin: 0, negative_pin: 1, gain: 0b000)
57
+
58
+ # Input on pin 2 with no negative input (single ended), and 1.024V full range.
59
+ # Ths one uses a 8 SPS rate, essentially 16x oversampling compared to the default 128.
60
+ single_input = Denko::AnalogIO::Input.new(adc: ads1118, pin: 2, gain: 0b011, sample_rate: 0b000)
61
+
62
+ # Poll the differential input every second.
63
+ diff_input.poll(1) do |reading|
64
+ voltage = reading * diff_input.volts_per_bit
65
+ print_reading("Differential", reading, voltage)
66
+ end
67
+
68
+ # Poll the single ended input every 2 seconds.
69
+ single_input.poll(2) do |reading|
70
+ voltage = reading * single_input.volts_per_bit
71
+ print_reading("Single", reading, voltage)
72
+ end
73
+
74
+ sleep
@@ -0,0 +1,32 @@
1
+ #
2
+ # Example looping the Arduino Zero's DAC back into one of its ADC pins.
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ #
8
+ # For the Arduino Zero: 'DAC0' = 'A0' = GPIO14.
9
+ # For the ESP32 V1: 'DAC0' = GPIO25, 'DAC1' = GPIO26, `ADC1_4` = 32
10
+ #
11
+ # Connect DAC_PIN TO ADC_PIN with a jumper to test.
12
+ #
13
+ DAC_PIN = 'DAC0'
14
+ ADC_PIN = 'A5'
15
+
16
+ board = Denko::Board.new(Denko::Connection::Serial.new)
17
+ dac = Denko::AnalogIO::Output.new(pin: DAC_PIN, board: board)
18
+ adc = Denko::AnalogIO::Input.new(pin: ADC_PIN, board: board)
19
+
20
+ #
21
+ # Read values should be approximately 4x the written values, since Board#new tries to
22
+ # set output resolution at 8-bits and input to 10-bits. Not configurable on all chips.
23
+ # Scale may be off but, readings should still be proportional.
24
+ #
25
+ [0, 32, 64, 128, 192, 255].each do |output_value|
26
+ dac.write output_value
27
+ sleep 1
28
+ loopback_value = adc.read
29
+ puts "ADC reads: #{loopback_value} when DAC writes: #{output_value}"
30
+ end
31
+
32
+ board.finish_write
@@ -0,0 +1,52 @@
1
+ #
2
+ # This is an example of how to use the sensor class
3
+ # You must register data callbacks and have the main thread
4
+ # sleep or in someway keep running or your program
5
+ # will exit before any callbacks can be called
6
+ #
7
+ require 'bundler/setup'
8
+ require 'denko'
9
+
10
+ board = Denko::Board.new(Denko::Connection::Serial.new)
11
+ sensor = Denko::AnalogIO::Sensor.new(pin: 'A0', board: board)
12
+
13
+ # Single read with block as callback. Blocks main thread.
14
+ # Callback fires only once then is removed automatically.
15
+ sensor.read { |value| puts "#{Time.now} Single read: #{value}" }
16
+
17
+ # Poll the sensor every 1 second with block as callback. Does not block main thread.
18
+ # Callback fires every time data is received until #stop is called.
19
+ sensor.poll(1) { |value| puts "#{Time.now} Polling: #{value}" }
20
+ sleep 5
21
+
22
+ # Stop polling. Automatically removes the callback from the #poll block.
23
+ sensor.stop
24
+
25
+ # Continuous listen with block as callback. Fires every time data is received until #stop is called.
26
+ sensor.listen { |value| puts "#{Time.now} Listening: #{value}" }
27
+ sleep 0.5
28
+
29
+ # Stop listening. Automatically removes the callback from the #listen block.
30
+ sensor.stop
31
+
32
+ # Add a persistent callback.
33
+ sensor.on_data { |value| puts "#{Time.now} Persistent callback: #{value}" }
34
+
35
+ # Add a callback with a custom key.
36
+ sensor.on_data(:test) { |value| puts "#{Time.now} Keyed callback: #{value}"}
37
+
38
+ # Single read again. Block given fires only once. Callbacks added with #on_data fire also.
39
+ sensor.read { |value| puts "#{Time.now} Single read again: #{value}" }
40
+
41
+ # Continuous listen. Block fires each time. Callbacks added with #on_data continue to fire.
42
+ sensor.listen { |value| puts "#{Time.now } Listening again: #{value}" }
43
+ sleep 0.5
44
+
45
+ # Stop listening. Automatically removes the callback from the #listen block.
46
+ sensor.stop
47
+
48
+ # Remove callbacks keyed with :test.
49
+ sensor.remove_callbacks(:test)
50
+
51
+ # Remove all callbacks.
52
+ sensor.remove_callbacks
@@ -0,0 +1,34 @@
1
+ require 'bundler/setup'
2
+ require 'denko'
3
+ #
4
+ # This example shows how to use denko when connecting to a board via TCP.
5
+ # This applies to the WiFi and Ethernet sketches, or serial sketch + ser2net.
6
+ # Port number defaults to 3466 (denko), but may be given as a second argument.
7
+ # It must correspond to the listening port set when the board was flashed.
8
+ #
9
+ connection = Denko::Connection::TCP.new("192.168.0.77", 3466)
10
+ # connection = Denko::Connection::TCP.new("127.0.0.1")
11
+ # connection = Denko::Connection::TCP.new("192.168.1.2", 3466)
12
+ #
13
+ board = Denko::Board.new(connection)
14
+ led = Denko::Led.new(pin: 13, board: board)
15
+
16
+ [:on, :off].cycle do |switch|
17
+ led.send(switch)
18
+ sleep 0.5
19
+ end
20
+ #
21
+ # ser2net can be used to simulate a TCP interface from a board running denko serial.
22
+ # It serves the serial interface over a TCP port from the machine running ser2net.
23
+ #
24
+ # Example ser2net command for an Arduino UNO connected to a Mac:
25
+ # ser2net -u -C "3466:raw:0:/dev/cu.usbmodem621:115200"
26
+ #
27
+ # Tell denko to connect to the IP address of the Mac, at port 3466.
28
+ # Note: ser2net should be used in raw TCP mode, not telnet mode (more common).
29
+ #
30
+ # Replace /dev/cu.usbmodem621 with your denko serial device.
31
+ # Arduino UNOs should be something like /dev/ttyACM0 under Linux.
32
+ #
33
+ # http://sourceforge.net/projects/ser2net/ for more info on installing and configuring ser2net.
34
+ #
@@ -0,0 +1,26 @@
1
+ #
2
+ # Example of a smiple rotary encoder polling at ~1ms.
3
+ #
4
+ # WARNING: This method is not precise at all. Please do not use it for anything
5
+ # that requires all steps to be read for precise positioning or high speed.
6
+ #
7
+ require 'bundler/setup'
8
+ require 'denko'
9
+
10
+ board = Denko::Board.new(Denko::Connection::Serial.new)
11
+ encoder = Denko::DigitalIO::RotaryEncoder.new board: board,
12
+ pins: { clock: 4, data: 5 },
13
+ divider: 1, # default, reads each pin every 1ms
14
+ steps_per_revolution: 30 # default
15
+
16
+ # Reverse direction if needed.
17
+ # encoder.reverse
18
+
19
+ # Reset angle and steps to 0.
20
+ encoder.reset
21
+
22
+ encoder.add_callback do |state|
23
+ puts "Encoder moved #{state[:change]} steps | CW step count: #{state[:steps]} | Current angle: #{state[:angle]}\xC2\xB0"
24
+ end
25
+
26
+ sleep
Binary file
@@ -0,0 +1,39 @@
1
+ #
2
+ # This example writes "Hello World!" in the display
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ board = Denko::Board.new(Denko::Connection::Serial.new)
8
+ lcd = Denko::Display::HD44780.new board: board,
9
+ pins: { rs: 8, enable: 9, d4: 4, d5: 5, d6: 6, d7: 7 },
10
+ cols: 16,
11
+ rows: 2
12
+
13
+ # Bitmap for a custom character. 5 bits wide x 8 high.
14
+ # Useful for generating these: https://omerk.github.io/lcdchargen/
15
+ heart = [ 0b00000,
16
+ 0b00000,
17
+ 0b01010,
18
+ 0b11111,
19
+ 0b11111,
20
+ 0b01110,
21
+ 0b00100,
22
+ 0b00000 ]
23
+
24
+ # Define the character in CGRAM address 2. 0-7 are usable.
25
+ lcd.create_char(2, heart)
26
+
27
+ # Need to call home/clear/set_cursor so we go back to writing DDRAM.
28
+ lcd.home
29
+
30
+ # End the first line with the heart by writing its CGRAM address.
31
+ lcd.print "Hello World! "
32
+ lcd.write(2)
33
+
34
+ # Display a clock on second line, updating approximately every second.
35
+ loop do
36
+ lcd.move_to 0,1
37
+ lcd.print(Time.now.strftime("%I:%M:%S"))
38
+ sleep 1
39
+ end
@@ -0,0 +1,40 @@
1
+ #
2
+ # Example using an SSD1306 driven OLED screen over I2C.
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ board = Denko::Board.new(Denko::Connection::Serial.new)
8
+
9
+ #
10
+ # Default pins for the I2C0 (first) interface on most chips:
11
+ #
12
+ # ATmega 328p: SDA = 'A4' SCL = 'A5' - Arduino Uno, Nano
13
+ # ATmega 32u4: SDA = 2 SCL = 3 - Arduino Leonardo, Pro Micro
14
+ # ATmega1280 / 2560: SDA = 20 SCL = 21 - Arduino Mega
15
+ # SAM3X8E: SDA = 20 SCL = 21 - Arduino Due
16
+ # SAMD21G18: SDA = 20 SCL = 21 - Arduino Zero, M0, M0 Pro
17
+ # ESP8266: SDA = 4 SCL = 5
18
+ # ESP32: SDA = 21 SCL = 22
19
+ # RP2040: SDA = 4 SCL = 5 - Raspberry Pi Pico (W)
20
+ #
21
+ # Only give the SDA pin of the I2C bus. SCL (clock) pin must be
22
+ # connected for it to work, but we don't need to control it.
23
+ #
24
+ bus = Denko::I2C::Bus.new(board: board, pin: 'A4')
25
+ oled = Denko::Display::SSD1306.new(bus: bus, rotate: true)
26
+ canvas = oled.canvas
27
+
28
+ # Draw some text on the OLED's canvas (a Ruby memory buffer).
29
+ canvas.text_cursor = [27,60]
30
+ canvas.print("Hello World!")
31
+
32
+ # Add some shapes to the canvas.
33
+ baseline = 40
34
+ canvas.rectangle(10, baseline, 30, -30)
35
+ canvas.circle(66, baseline - 15, 15)
36
+ canvas.triangle(87, baseline, 117, baseline, 102, baseline - 30)
37
+
38
+ # Send the canvas to the OLED's graphics RAM so it shows.
39
+ oled.draw
40
+ board.finish_write
@@ -0,0 +1,29 @@
1
+ #
2
+ # Example using the SSD1306 OLED built into the LOLIN ES32-S2 PICO
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ board = Denko::Board.new(Denko::Connection::Serial.new)
8
+
9
+ # The OLED's reset pin on this board isn't tied high. Do it manually.
10
+ reset = Denko::DigitalIO::Output.new(board: board, pin: 18)
11
+ reset.high
12
+
13
+ bus = Denko::I2C::Bus.new(board: board, pin: :SDA)
14
+ oled = Denko::Display::SSD1306.new(bus: bus, width: 128, height: 32)
15
+ canvas = oled.canvas
16
+
17
+ # Draw some text on the OLED's canvas (a Ruby memory buffer).
18
+ canvas.text_cursor = [27,31]
19
+ canvas.print("Hello World!")
20
+
21
+ # Add some shapes to the canvas.
22
+ baseline = 15
23
+ canvas.rectangle(10, baseline, 15, -15)
24
+ canvas.circle(66, baseline - 7, 8)
25
+ canvas.triangle(102, baseline, 118, baseline, 110, baseline - 15)
26
+
27
+ # Send the canvas to the OLED's graphics RAM so it shows.
28
+ oled.draw
29
+ board.finish_write
@@ -0,0 +1,32 @@
1
+ #
2
+ # Example showing how to load, modify and save the board's EEPROM.
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ board = Denko::Board.new(Denko::Connection::Serial.new)
8
+
9
+ # Initialization automatically gets all EEPROM data from the board.
10
+ # eeprom = Denko::EEPROM::BuiltIn(board: board)
11
+ eeprom = board.eeprom
12
+
13
+ # EEPROM size reported by the board.
14
+ puts "EEPROM Size: #{eeprom.length} bytes"
15
+
16
+ # Write values like an array.
17
+ eeprom[0] = 128
18
+ eeprom[1] = 127
19
+
20
+ # Changes do not save to the board automatically.
21
+ # Call #save to write to the board, and automatically reload from it.
22
+ eeprom.save
23
+
24
+ # Read values like an array.
25
+ puts "Address 0 contains: #{eeprom[0]}"
26
+
27
+ # Enumerate like an array.
28
+ eeprom.each_with_index do |byte, address|
29
+ if address == 1
30
+ puts "Address #{address} contains #{byte}"
31
+ end
32
+ end
@@ -0,0 +1,53 @@
1
+ #
2
+ # Example that shows the default I2C bus pins, and addresses of any
3
+ # devices connected to the bus.
4
+ #
5
+ require 'bundler/setup'
6
+ require 'denko'
7
+
8
+ # Method to let the user set I2C pins.
9
+ def enter_pins
10
+ puts "Please manually specify I2C pins..."
11
+ print "I2C SDA pin: "; sda = gets
12
+ print "I2C SCL pin: "; scl = gets
13
+ puts
14
+ [sda.to_i, scl.to_i]
15
+ end
16
+
17
+ board = Denko::Board.new(Denko::Connection::Serial.new)
18
+
19
+ # If no board map, ask user to set pins manually.
20
+ unless board.map
21
+ puts "Error: Pin map not available for this board"
22
+ sda, scl = enter_pins
23
+
24
+ # Else get defaults from map.
25
+ else
26
+ sda = board.map[:SDA] || board.map[:SDA0]
27
+ scl = board.map[:SCL] || board.map[:SCL0]
28
+
29
+ # If not in map, ask user to set manually.
30
+ unless sda && scl
31
+ puts "Error: I2C pins not found in this board's pin map"
32
+ sda, scl = enter_pins
33
+ end
34
+ end
35
+
36
+ puts "Using I2C interface on pins #{sda} (SDA) and #{scl} (SCL)"
37
+ puts
38
+
39
+ bus = Denko::I2C::Bus.new(board: board, pin: sda)
40
+ bus.search
41
+
42
+ if bus.found_devices.empty?
43
+ puts "No devices found on I2C bus"
44
+ else
45
+ puts "I2C device addresses found:"
46
+ bus.found_devices.each do |address|
47
+ # Print as hexadecimal.
48
+ puts "0x#{address.to_s(16).upcase}"
49
+ end
50
+ end
51
+
52
+ puts
53
+ board.finish_write
@@ -0,0 +1,33 @@
1
+ #
2
+ # Walk a single pixel along the length of an APA102 strip and back,
3
+ # changing color each time it returns to position 0.
4
+ #
5
+ require 'bundler/setup'
6
+ require 'denko'
7
+
8
+ RED = [255, 0, 0]
9
+ GREEN = [0, 255, 0]
10
+ BLUE = [0, 0, 255]
11
+ WHITE = [255, 255, 255]
12
+ COLORS = [RED, GREEN, BLUE, WHITE]
13
+ PIXELS = 8
14
+
15
+ # Move along the strip and back, one pixel at a time.
16
+ positions = (0..PIXELS-1).to_a + (1..PIXELS-2).to_a.reverse
17
+
18
+ board = Denko::Board.new(Denko::Connection::Serial.new)
19
+
20
+ # Use the default hardware SPI bus.
21
+ bus = Denko::SPI::Bus.new(board: board)
22
+ strip = Denko::LED::APA102.new(bus: bus, length: PIXELS)
23
+
24
+ loop do
25
+ COLORS.each do |color|
26
+ positions.each do |index|
27
+ strip.clear
28
+ strip[index] = color
29
+ strip.show
30
+ sleep 0.05
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,45 @@
1
+ #
2
+ # Walk a single pixel along the length of an APA102 strip and back,
3
+ # changing color each time it returns to position 0.
4
+ #
5
+ require 'bundler/setup'
6
+ require 'denko'
7
+
8
+ RED = [255, 0, 0]
9
+ GREEN = [0, 255, 0]
10
+ BLUE = [0, 0, 255]
11
+ WHITE = [255, 255, 255]
12
+ COLORS = [RED, GREEN, BLUE, WHITE]
13
+ PIXELS = 3
14
+
15
+ # Get all the brightness values as an array.
16
+ brightness_steps = (0..31).to_a
17
+
18
+ board = Denko::Board.new(Denko::Connection::Serial.new)
19
+
20
+ # Use the default hardware SPI bus.
21
+ bus = Denko::SPI::Bus.new(board: board)
22
+ strip = Denko::LED::APA102.new(bus: bus, length: PIXELS)
23
+
24
+ # Test global brightness control first.
25
+ strip[0] = RED
26
+ strip[1] = GREEN
27
+ strip[2] = BLUE
28
+
29
+ # Fade up from 0 brightness then back down.
30
+ (brightness_steps + brightness_steps.reverse).each do |value|
31
+ strip.brightness = value
32
+ strip.show
33
+ sleep 0.05
34
+ end
35
+
36
+ # Test per-pixel brightness by fading different pixels different directions.
37
+ loop do
38
+ (brightness_steps + brightness_steps.reverse).each do |value|
39
+ strip[0] = RED + [value]
40
+ strip[1] = GREEN + [31 - value]
41
+ strip[2] = BLUE + [value]
42
+ strip.show
43
+ sleep 0.1
44
+ end
45
+ end
@@ -0,0 +1,12 @@
1
+ #
2
+ # Blink example for standard built-in LEDs named :LED_BUILTIN
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ board = Denko::Board.new(Denko::Connection::Serial.new)
8
+ led = Denko::LED.new(board: board, pin: :LED_BUILTIN)
9
+
10
+ led.blink 0.5
11
+
12
+ sleep
@@ -0,0 +1,15 @@
1
+ #
2
+ # This is an example of how to use the ssd class
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ board = Denko::Board.new(Denko::Connection::Serial.new)
8
+ ssd = Denko::LED::SevenSegment.new board: board,
9
+ pins: { cathode: 10, a: 3, b: 4, c: 5, d: 6, e: 7, f: 8, g: 9 }
10
+
11
+ # Turn off the ssd on exit
12
+ trap("SIGINT") { exit !ssd.off }
13
+
14
+ # Display each new line on the ssd
15
+ loop { ssd.display(gets.chomp) }
@@ -0,0 +1,32 @@
1
+ #
2
+ # Walk a single pixel along the length of a WS2812 strip and back,
3
+ # changing color each time it returns to position 0.
4
+ #
5
+ require 'bundler/setup'
6
+ require 'denko'
7
+
8
+ RED = [255, 0, 0]
9
+ GREEN = [0, 255, 0]
10
+ BLUE = [0, 0, 255]
11
+ WHITE = [255, 255, 255]
12
+ COLORS = [RED, GREEN, BLUE, WHITE]
13
+
14
+ WS2812_PIN = 4
15
+ PIXELS = 8
16
+
17
+ # Move along the strip and back, one pixel at a time.
18
+ positions = (0..PIXELS-1).to_a + (1..PIXELS-2).to_a.reverse
19
+
20
+ board = Denko::Board.new(Denko::Connection::Serial.new)
21
+ strip = Denko::LED::WS2812.new(board: board, pin: WS2812_PIN, length: PIXELS)
22
+
23
+ loop do
24
+ COLORS.each do |color|
25
+ positions.each do |index|
26
+ strip.clear
27
+ strip[index] = color
28
+ strip.show
29
+ sleep 0.05
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ #
2
+ # Blink example for the LOLIN ESP32 S3 or C3, or any board where
3
+ # :LED_BUILTIN is the data pin for a single on-board WS2812.
4
+ #
5
+ require 'bundler/setup'
6
+ require 'denko'
7
+
8
+ WHITE = [255, 255, 255]
9
+ OFF = [0, 0, 0]
10
+
11
+ board = Denko::Board.new(Denko::Connection::Serial.new)
12
+ strip = Denko::LED::WS2812.new(board: board, pin: :LED_BUILTIN, length: 1)
13
+
14
+ loop do
15
+ strip[0] = WHITE
16
+ strip.show
17
+ sleep 0.5
18
+ strip[0] = OFF
19
+ strip.show
20
+ sleep 0.5
21
+ end
@@ -0,0 +1,43 @@
1
+ #
2
+ # Example driving a DC motor with a L298 H-Bridge driver.
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+ board = Denko::Board.new(Denko::Connection::Serial.new)
7
+
8
+ # This is only 1 channel of the driver. Make a new object for each channel.
9
+ motor = Denko::Motor::L298.new board: board, pins: {direction1: 8, direction2: 9, enable: 10}
10
+
11
+ # Off without braking (initial state).
12
+ # motor.off
13
+ # motor.idle
14
+
15
+ # Go forward at half speed for a while.
16
+ motor.forward board.pwm_high / 2
17
+ sleep 2
18
+
19
+ # Change direction.
20
+ motor.reverse board.pwm_high / 2
21
+ sleep 2
22
+
23
+ # Speed up without changing direction.
24
+ motor.speed = board.pwm_high
25
+ sleep 2
26
+
27
+ # Brake to stop quickly.
28
+ motor.brake
29
+ sleep 1
30
+
31
+ # Change from brake to forward, but 0 speed.
32
+ motor.forward 0
33
+ sleep 1
34
+
35
+ # Gradually speed up.
36
+ (1..20).each do |step|
37
+ sleep 0.5
38
+ motor.speed = (board.pwm_high * (step / 20.0)).round
39
+ end
40
+
41
+ # Turn it off.
42
+ motor.off
43
+ board.finish_write