denko 0.13.6 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (376) 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 -18
  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 +57 -102
  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/BoardMap.h +416 -56
  242. data/vendor/board-maps/lib/header_parser.rb +12 -2
  243. data/vendor/board-maps/yaml/ADAFRUIT_CAMERA_ESP32S3.yml +2 -2
  244. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32C6.yml +15 -0
  245. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32_V2.yml +1 -1
  246. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_ADALOGGER.yml +44 -0
  247. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32C3.yml +1 -0
  248. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S2.yml +1 -0
  249. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_N4R2.yml +1 -0
  250. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_NOPSRAM.yml +1 -0
  251. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32_PICO.yml +1 -0
  252. data/vendor/board-maps/yaml/AMKEN_BB.yml +48 -0
  253. data/vendor/board-maps/yaml/AMKEN_ES.yml +48 -0
  254. data/vendor/board-maps/yaml/AMKEN_REVELOP.yml +48 -0
  255. data/vendor/board-maps/yaml/AMKEN_REVELOP_PLUS.yml +48 -0
  256. data/vendor/board-maps/yaml/ASL_CAN_X2.yml +41 -0
  257. data/vendor/board-maps/yaml/BLING.yml +25 -0
  258. data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +1 -0
  259. data/vendor/board-maps/yaml/BRIDGETEK_IDM2040_7A.yml +48 -0
  260. data/vendor/board-maps/yaml/Bee_Motion_Mini.yml +13 -1
  261. data/vendor/board-maps/yaml/Breadstick_Raspberry.yml +31 -0
  262. data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32C6.yml +8 -0
  263. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32C6.yml +20 -0
  264. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_ESP32.yml +46 -0
  265. data/vendor/board-maps/yaml/DPTECHNICS_WALTER.yml +39 -0
  266. data/vendor/board-maps/yaml/ELECROW_CROWPANEL_7.yml +8 -0
  267. data/vendor/board-maps/yaml/ESP32C2_DEV.yml +12 -0
  268. data/vendor/board-maps/yaml/ESP32C3_DEVKIT_LIPO.yml +14 -0
  269. data/vendor/board-maps/yaml/ESP32C6_DEV.yml +15 -0
  270. data/vendor/board-maps/yaml/ESP32C6_EVB.yml +15 -0
  271. data/vendor/board-maps/yaml/ESP32C6_QWIIC_POCKET.yml +15 -0
  272. data/vendor/board-maps/yaml/ESP32C6_THING_PLUS.yml +15 -0
  273. data/vendor/board-maps/yaml/ESP32H2_DEV.yml +13 -0
  274. data/vendor/board-maps/yaml/ESP32H2_DEVKIT_LIPO.yml +13 -0
  275. data/vendor/board-maps/yaml/ESP32S2_DEV.yml +1 -0
  276. data/vendor/board-maps/yaml/{RMP.yml → ESP32S2_DEVKIT_LIPO.yml} +2 -1
  277. data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO_USB.yml +44 -0
  278. data/vendor/board-maps/yaml/ESP32S3_DEVKIT_LIPO.yml +42 -0
  279. data/vendor/board-maps/yaml/ESP32S3_POWERFEATHER.yml +22 -0
  280. data/vendor/board-maps/yaml/ESP32_SBC_FABGL.yml +35 -0
  281. data/vendor/board-maps/yaml/EVN_ALPHA.yml +48 -0
  282. data/vendor/board-maps/yaml/FEATHERS3NEO.yml +32 -0
  283. data/vendor/board-maps/yaml/GEEKBLE_ESP32C3.yml +14 -0
  284. data/vendor/board-maps/yaml/HELTEC_CAPSULE_SENSOR_V3.yml +43 -0
  285. data/vendor/board-maps/yaml/HELTEC_WIFI_LORA_32_V3.yml +42 -0
  286. data/vendor/board-maps/yaml/HELTEC_WIRELESS_BRIDGE.yml +8 -0
  287. data/vendor/board-maps/yaml/HELTEC_WIRELESS_MINI_SHELL.yml +13 -0
  288. data/vendor/board-maps/yaml/HELTEC_WIRELESS_PAPER.yml +42 -0
  289. data/vendor/board-maps/yaml/HELTEC_WIRELESS_SHELL_V3.yml +42 -0
  290. data/vendor/board-maps/yaml/HELTEC_WIRELESS_STICK_LITE_V3.yml +30 -0
  291. data/vendor/board-maps/yaml/HELTEC_WIRELESS_TRACKER.yml +41 -0
  292. data/vendor/board-maps/yaml/HT_DE01.yml +42 -0
  293. data/vendor/board-maps/yaml/IMBRIOS_LOGSENS_V1P1.yml +1 -1
  294. data/vendor/board-maps/yaml/LILYGO_T3S3_LR1121.yml +9 -0
  295. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1262.yml +9 -0
  296. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1276.yml +9 -0
  297. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1278.yml +9 -0
  298. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1280.yml +9 -0
  299. data/vendor/board-maps/yaml/LILYGO_T3S3_SX1280PA.yml +8 -0
  300. data/vendor/board-maps/yaml/LILYGO_T_ETH_LITE.yml +21 -0
  301. data/vendor/board-maps/yaml/LOLIN_C3_PICO.yml +14 -0
  302. data/vendor/board-maps/yaml/LOLIN_S3.yml +1 -0
  303. data/vendor/board-maps/yaml/LOLIN_S3_MINI_PRO.yml +40 -0
  304. data/vendor/board-maps/yaml/Lion_Bit_Dev_Board.yml +0 -2
  305. data/vendor/board-maps/yaml/LoPy.yml +1 -0
  306. data/vendor/board-maps/yaml/LoPy4.yml +1 -0
  307. data/vendor/board-maps/yaml/M5STACK_CAPSULE.yml +8 -0
  308. data/vendor/board-maps/yaml/M5STACK_CARDPUTER.yml +8 -0
  309. data/vendor/board-maps/yaml/M5STACK_DIAL.yml +8 -0
  310. data/vendor/board-maps/yaml/M5STACK_FIRE.yml +0 -1
  311. data/vendor/board-maps/yaml/M5STACK_NANOC6.yml +17 -0
  312. data/vendor/board-maps/yaml/M5STACK_PAPER.yml +9 -0
  313. data/vendor/board-maps/yaml/M5STACK_POE_CAM.yml +5 -0
  314. data/vendor/board-maps/yaml/M5STACK_STAMP_C3.yml +13 -0
  315. data/vendor/board-maps/yaml/M5STACK_STAMP_S3.yml +4 -0
  316. data/vendor/board-maps/yaml/{M5Stick_C.yml → M5STACK_STICKC.yml} +0 -1
  317. data/vendor/board-maps/yaml/M5STACK_STICKC_PLUS.yml +9 -0
  318. data/vendor/board-maps/yaml/M5STACK_STICKC_PLUS2.yml +9 -0
  319. data/vendor/board-maps/yaml/M5STACK_TOUGH.yml +9 -0
  320. data/vendor/board-maps/yaml/M5STACK_UNIT_CAM.yml +10 -0
  321. data/vendor/board-maps/yaml/M5STACK_UNIT_CAMS3.yml +4 -0
  322. data/vendor/board-maps/yaml/M5Stack_ATOM.yml +0 -1
  323. data/vendor/board-maps/yaml/MAKERGO_C3_SUPERMINI.yml +14 -0
  324. data/vendor/board-maps/yaml/MARBLE_PICO.yml +48 -0
  325. data/vendor/board-maps/yaml/METEHOCA_AKANA_R1.yml +46 -0
  326. data/vendor/board-maps/yaml/NAMINO_BIANCO.yml +13 -0
  327. data/vendor/board-maps/yaml/NEBULAS3.yml +0 -1
  328. data/vendor/board-maps/yaml/NEWSAN_ARCHI.yml +48 -0
  329. data/vendor/board-maps/yaml/NOLOGO_ESP32C3_SUPER_MINI.yml +14 -0
  330. data/vendor/board-maps/yaml/NOLOGO_ESP32S3_PICO.yml +12 -0
  331. data/vendor/board-maps/yaml/OLIMEX_RP2040_PICO30_16MB.yml +48 -0
  332. data/vendor/board-maps/yaml/OLIMEX_RP2040_PICO30_2MB.yml +48 -0
  333. data/vendor/board-maps/yaml/OPTA_ANALOG.yml +7 -0
  334. data/vendor/board-maps/yaml/OPTA_DIGITAL.yml +5 -0
  335. data/vendor/board-maps/yaml/PINTRONIX_PINMAX.yml +42 -0
  336. data/vendor/board-maps/yaml/PYCOM_GPY.yml +1 -0
  337. data/vendor/board-maps/yaml/REDPILL_ESP32S3.yml +0 -1
  338. data/vendor/board-maps/yaml/SENSEBOX_MCU_ESP32S2.yml +12 -0
  339. data/vendor/board-maps/yaml/SPARKFUN_MICROMOD_RP2040.yml +48 -0
  340. data/vendor/board-maps/yaml/SPARKFUN_PRO_MICRO_ESP32C3.yml +24 -0
  341. data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER.yml +31 -0
  342. data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER_C6.yml +15 -0
  343. data/vendor/board-maps/yaml/TINYC6.yml +25 -0
  344. data/vendor/board-maps/yaml/UPESY_EDU_ESP32.yml +28 -0
  345. data/vendor/board-maps/yaml/UPESY_ESP32C3_BASIC.yml +13 -0
  346. data/vendor/board-maps/yaml/UPESY_ESP32C3_MINI.yml +12 -0
  347. data/vendor/board-maps/yaml/UPESY_ESP32S3_BASIC.yml +42 -0
  348. data/vendor/board-maps/yaml/VIRALINK_GATE32_01.yml +6 -0
  349. data/vendor/board-maps/yaml/VIRALINK_GATE32_11.yml +7 -0
  350. data/vendor/board-maps/yaml/WAVESHARE_ESP32S3_TOUCH_LCD_128.yml +8 -0
  351. data/vendor/board-maps/yaml/WAVESHARE_RP2040_MATRIX.yml +48 -0
  352. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ONE.yml +1 -0
  353. data/vendor/board-maps/yaml/WAVESHARE_RP2040_PIZERO.yml +47 -0
  354. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ZERO.yml +1 -0
  355. data/vendor/board-maps/yaml/WEACT_STUDIO_ESP32C3.yml +14 -0
  356. data/vendor/board-maps/yaml/WIPY3.yml +1 -0
  357. data/vendor/board-maps/yaml/WT32_SC01_PLUS.yml +7 -0
  358. data/vendor/board-maps/yaml/WiFiduinoV2.yml +1 -0
  359. data/vendor/board-maps/yaml/XIAO_ESP32C3.yml +0 -1
  360. data/vendor/board-maps/yaml/XIAO_ESP32C6.yml +22 -0
  361. data/vendor/board-maps/yaml/unphone9.yml +8 -0
  362. metadata +169 -30
  363. data/examples/led/apa102_breathe.rb +0 -45
  364. data/examples/pulse_io/ir_transmitter.rb +0 -55
  365. data/examples/spi/ssd_through_register.rb +0 -40
  366. data/examples/uart/bit_bang_read.rb +0 -16
  367. data/examples/uart/bit_bang_write.rb +0 -16
  368. data/lib/denko/analog_io/sensor.rb +0 -6
  369. data/lib/denko/sensor/virtual.rb +0 -42
  370. data/src/lib/DenkoIROutESP.cpp +0 -26
  371. data/vendor/board-maps/yaml/STAMP_S3.yml +0 -8
  372. /data/vendor/board-maps/yaml/{BRIDGETEK_IDM2040-7A.yml → BRIDGETEK_IDM2040_43A.yml} +0 -0
  373. /data/vendor/board-maps/yaml/{heltec_wifi_32_lora_V3.yml → HELTEC_WIRELESS_STICK_V3.yml} +0 -0
  374. /data/vendor/board-maps/yaml/{M5Stack_Core_ESP32.yml → M5STACK_CORE.yml} +0 -0
  375. /data/vendor/board-maps/yaml/{M5Stamp_Pico.yml → M5STACK_STAMP_PICO.yml} +0 -0
  376. /data/vendor/board-maps/yaml/{M5Stack-Timer-CAM.yml → M5STACK_TIMER_CAM.yml} +0 -0
@@ -1,30 +1,30 @@
1
- name: Build / ESP8266
1
+ name: ESP8266
2
2
 
3
3
  on:
4
4
  workflow_dispatch:
5
-
5
+
6
6
  pull_request:
7
7
  paths:
8
- - 'src/**'
9
- - '.github/workflows/build_esp8266.yml'
8
+ - "src/**"
9
+ - ".github/workflows/build_esp8266.yml"
10
10
 
11
11
  push:
12
12
  paths:
13
- - 'src/**'
14
- - '.github/workflows/build_esp8266.yml'
15
-
13
+ - "src/**"
14
+ - ".github/workflows/build_esp8266.yml"
15
+
16
16
  jobs:
17
17
  esp8266-nodemcuv2:
18
18
  name: esp8266 ${{ matrix.sketches.name }}
19
-
19
+
20
20
  runs-on: ubuntu-latest
21
-
21
+
22
22
  strategy:
23
23
  matrix:
24
24
  sketches:
25
25
  - name: serial
26
26
  - name: wifi
27
-
27
+
28
28
  board:
29
29
  - fqbn: esp8266:esp8266:nodemcuv2
30
30
  denko-target: esp8266
@@ -32,22 +32,22 @@ jobs:
32
32
  - name: esp8266:esp8266
33
33
  source-url: https://arduino.esp8266.com/stable/package_esp8266com_index.json
34
34
  libraries: |
35
- - name: IRremoteESP8266
36
- version: 2.8.5
35
+ - name: IRremote
36
+ version: 4.4.1
37
37
  - name: Adafruit NeoPixel
38
38
 
39
39
  steps:
40
40
  - name: Checkout
41
- uses: actions/checkout@v3
41
+ uses: actions/checkout@v4
42
42
  with:
43
43
  submodules: true
44
-
44
+
45
45
  - name: Generate
46
46
  id: generate
47
47
  run: echo "path=$(./bin/denko sketch ${{ matrix.sketches.name }} --target ${{ matrix.board.denko-target }})" >> $GITHUB_OUTPUT
48
48
 
49
49
  - name: Compile Arduino Sketches
50
- uses: arduino/compile-sketches@v1.1.0
50
+ uses: arduino/compile-sketches@v1.1.1
51
51
  with:
52
52
  platforms: ${{ matrix.board.platforms }}
53
53
  fqbn: ${{ matrix.board.fqbn }}
@@ -1,31 +1,31 @@
1
- name: Build / RA4M1
1
+ name: RA4M1
2
2
 
3
3
  on:
4
4
  workflow_dispatch:
5
-
5
+
6
6
  pull_request:
7
7
  paths:
8
- - 'src/**'
9
- - '.github/workflows/build_ra4m1.yml'
8
+ - "src/**"
9
+ - ".github/workflows/build_ra4m1.yml"
10
10
 
11
11
  push:
12
12
  paths:
13
- - 'src/**'
14
- - '.github/workflows/build_ra4m1.yml'
15
-
13
+ - "src/**"
14
+ - ".github/workflows/build_ra4m1.yml"
15
+
16
16
  jobs:
17
- samd-zero:
18
- name: samd ${{ matrix.sketches.name }}
19
-
17
+ renesas_uno_minima:
18
+ name: ra4m1 ${{ matrix.sketches.name }}
19
+
20
20
  runs-on: ubuntu-latest
21
-
21
+
22
22
  strategy:
23
23
  matrix:
24
24
  sketches:
25
25
  - name: serial
26
26
  - name: ethernet
27
27
  - name: wifi
28
-
28
+
29
29
  board:
30
30
  - fqbn: arduino:renesas_uno:minima
31
31
  denko-target: ra4m1
@@ -36,19 +36,19 @@ jobs:
36
36
  - name: Ethernet
37
37
  - name: WiFi
38
38
  - name: Adafruit NeoPixel
39
-
39
+
40
40
  steps:
41
41
  - name: Checkout
42
- uses: actions/checkout@v3
42
+ uses: actions/checkout@v4
43
43
  with:
44
44
  submodules: true
45
-
45
+
46
46
  - name: Generate
47
47
  id: generate
48
48
  run: echo "path=$(./bin/denko sketch ${{ matrix.sketches.name }} --target ${{ matrix.board.denko-target }})" >> $GITHUB_OUTPUT
49
49
 
50
50
  - name: Compile Arduino Sketches
51
- uses: arduino/compile-sketches@v1.1.0
51
+ uses: arduino/compile-sketches@v1.1.1
52
52
  with:
53
53
  platforms: ${{ matrix.board.platforms }}
54
54
  fqbn: ${{ matrix.board.fqbn }}
@@ -1,31 +1,31 @@
1
- name: Build / RP2040
1
+ name: RP2040
2
2
 
3
3
  on:
4
4
  workflow_dispatch:
5
-
5
+
6
6
  pull_request:
7
7
  paths:
8
- - 'src/**'
9
- - '.github/workflows/build_rp2040.yml'
8
+ - "src/**"
9
+ - ".github/workflows/build_rp2040.yml"
10
10
 
11
11
  push:
12
12
  paths:
13
- - 'src/**'
14
- - '.github/workflows/build_rp2040.yml'
15
-
13
+ - "src/**"
14
+ - ".github/workflows/build_rp2040.yml"
15
+
16
16
  jobs:
17
- rpipico:
17
+ rpipicow:
18
18
  name: rp2040 ${{ matrix.sketches.name }}
19
-
19
+
20
20
  runs-on: ubuntu-latest
21
-
21
+
22
22
  strategy:
23
23
  matrix:
24
24
  sketches:
25
25
  - name: serial
26
26
  - name: ethernet
27
27
  - name: wifi
28
-
28
+
29
29
  board:
30
30
  - fqbn: rp2040:rp2040:rpipicow
31
31
  denko-target: rp2040
@@ -35,22 +35,23 @@ jobs:
35
35
  libraries: |
36
36
  - name: Servo
37
37
  - name: IRremote
38
- version: 4.1.2
38
+ version: 4.4.1
39
+ - name: Adafruit NeoPixel
39
40
  - name: Ethernet
40
41
  - name: WiFi
41
-
42
+
42
43
  steps:
43
44
  - name: Checkout
44
- uses: actions/checkout@v3
45
+ uses: actions/checkout@v4
45
46
  with:
46
47
  submodules: true
47
-
48
+
48
49
  - name: Generate
49
50
  id: generate
50
51
  run: echo "path=$(./bin/denko sketch ${{ matrix.sketches.name }} --target ${{ matrix.board.denko-target }})" >> $GITHUB_OUTPUT
51
52
 
52
53
  - name: Compile Arduino Sketches
53
- uses: arduino/compile-sketches@v1.1.0
54
+ uses: arduino/compile-sketches@v1.1.1
54
55
  with:
55
56
  platforms: ${{ matrix.board.platforms }}
56
57
  fqbn: ${{ matrix.board.fqbn }}
@@ -9,39 +9,39 @@ name: Ruby MiniTest
9
9
 
10
10
  on:
11
11
  workflow_dispatch:
12
-
12
+
13
13
  push:
14
- branches: [ "master" ]
14
+ branches: ["master"]
15
15
  paths-ignore:
16
- - 'src/**'
16
+ - "src/**"
17
17
 
18
18
  pull_request:
19
- branches: [ "master" ]
19
+ branches: ["master"]
20
20
  paths-ignore:
21
- - 'src/**'
21
+ - "src/**"
22
22
 
23
23
  permissions:
24
24
  contents: read
25
25
 
26
26
  jobs:
27
27
  test:
28
-
29
28
  runs-on: ubuntu-latest
30
29
  strategy:
31
30
  matrix:
32
- ruby-version: ['2.7', '3.2', 'jruby-9.4.2.0', 'truffleruby-22.3.1']
31
+ ruby-version:
32
+ ["2.7", "3.3", "head", "jruby-9.4.8.0", "truffleruby-24.1.0"]
33
33
 
34
34
  steps:
35
- - name: Checkout
36
- uses: actions/checkout@v3
37
- with:
38
- submodules: true
39
-
40
- - name: Setup Ruby, JRuby and TruffleRuby
41
- uses: ruby/setup-ruby@v1
42
- with:
43
- ruby-version: ${{ matrix.ruby-version }}
44
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
45
-
46
- - name: Run tests
47
- run: bundle exec rake
35
+ - name: Checkout
36
+ uses: actions/checkout@v4
37
+ with:
38
+ submodules: true
39
+
40
+ - name: Setup Ruby, JRuby and TruffleRuby
41
+ uses: ruby/setup-ruby@v1
42
+ with:
43
+ ruby-version: ${{ matrix.ruby-version }}
44
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
45
+
46
+ - name: Run tests
47
+ run: bundle exec rake
data/CHANGELOG.md CHANGED
@@ -1,5 +1,189 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.0
4
+
5
+ ### Known Issues
6
+
7
+ - ESP32 Boards
8
+ - **USB-CDC (aka native USB) appears to be broken** in the 3.0 core. Will eventually hang if sending a lot of data both directions at the same time. Use one of the standard UART interfaces until this is fixed.
9
+
10
+ ### New Boards
11
+
12
+ - ESP32-H2 and ESP32-C6 variants (`--target esp32`):
13
+ - Depends on ESP32 Arduino Core 3.0+
14
+ - No WiFi on H2
15
+
16
+ ### Board Changes
17
+
18
+ - ESP32 Boards
19
+ - 3.0+ version of the ESP32 Arduino Core now required.
20
+
21
+ - Raspberry Pi Pico (RP2040)
22
+ - WS2812 LED strips work now.
23
+
24
+ ### New Peripherals
25
+
26
+ - Bit-Bang I2C:
27
+ - Class: `Denko::I2C::BitBang`
28
+ - Start a software bit-banged I2C bus on any 2 pins.
29
+ - Interchangeable with hardware bus (`Denko::I2C::Bus`), as far as I2C peripherals are concerned.
30
+
31
+ - ADS1100 Analog-to-Digital Converter:
32
+ - Class: `Denko::AnalogIO::ADS1100`
33
+ - Connects via I2C bus. Driver written in Ruby.
34
+ - Modeled after `AnalogIO::Input` since it's a single channel ADC.
35
+ - Can be read directly with `#read` or polled with `#poll`.
36
+ - Full scale voltage must be given in the initailize hash, `full_scale_ voltage:`.
37
+ - Gain and sample rate configurable. See example for more.
38
+
39
+ - SSD1306 1-Color OLED
40
+ - Added SPI version.
41
+ - Both use `Denko::Display::SSD1306`. Instances mutate to I2C or SPI behavior, based on bus given.
42
+
43
+ - SH1106 1-Color OLED
44
+ - Class: `Denko::Display::SH1106`
45
+ - Almost the same as SSD1306. Most driver code is shared between them.
46
+ - I2C and SPI versions both supported, as SSD1306 above.
47
+
48
+ ### Peripheral Changes
49
+
50
+ - All Peripherals:
51
+ - On CRuby, `@state_mutex` and `@callback_mutex` are now instances of `Denko::MutexStub`, which just runs the given block when called with `#synchronize`.
52
+ - The options hash (now called params), given to `#initialize` is always available through the `#params` method.
53
+ - `#initialize` no longer accepts `pullup: true` or `pulldown: true`. Set mode explicitly, like `mode: :input_pullup`.
54
+
55
+ - Temperature / Pressure / Humidity Sensors:
56
+ - `DS18B20`, `DHT` and `HTU21D` readings now match all the others (Hash with same keys).
57
+ - Readings standardized to be in ºC, %RH and Pascals. Callbacks always receive hash with these.
58
+ - `[]` access for `@state` removed removed. Use `#temperature`, `#pressure`, `#humidity` instead.
59
+ - Added `#temperature_f` `#temperature_k` `#pressure_atm` `#pressure_bar` helper conversion methods.
60
+ - `#read` methods standardized to always read ALL sub-sensors. Affects `HTU21D` and `BMP180`.
61
+
62
+ - `AnalogIO::Input`:
63
+ - Added `#smoothing=` and `#smoothing_size=` accessors to `AnalogIO::Input` for configuration.
64
+ - `AnalogIO::Sensor` removed. Use `Input` instead.
65
+
66
+ - `Behavior::InputPin`
67
+ - Added `#debounce=(time)` which just calls `Board#set_pin_debounce` for the pin. Only on `PiBoard`.
68
+
69
+ - `DigitalIO::CBitBang`:
70
+ - New helper class. Forces initialize validation for bit-bang pins. Essential for `PiBoard`.
71
+ - As a side-effect, makes sure 2 low-level bit-bang Components (eg. buses) can't use the same pin.
72
+ - Always starts pins in `:input` mode. The bit-bang routine is expected to change them.
73
+
74
+ - `DigitalIO::RotaryEncoder`:
75
+ - Pin names standardized to `a:` and `b:`, but still accept `:clock`, `:data`, `:clk`, `:dt`.
76
+ - `steps_per_revolution` changed to `counts_per_revolution`
77
+ - Every level change is counted now (full-quadrature). Was half-quadrature before.
78
+ - `counts_per_revolution` now defaults to 60 instead of 30 (generic 30-detent encoders).
79
+ - `state` and callback hash store `:count` instead of `:steps`.
80
+
81
+ - `I2C::Bus`:
82
+ - No longer requires SDA pin to initialize.
83
+ - Accepts `index:` param (default 0) on initialize, specifying which I2C interface to use.
84
+ - Only works for PiBoard on Linux right now.
85
+ - `#update` accepts String of comma delimited ASCII numbers (Board), or Array of bytes (PiBoard).
86
+
87
+ - `I2C::Peripheral`:
88
+ - `#i2c_read` arg order changed from `(register, num_bytes)` to `(num_bytes, register: nil)`
89
+
90
+ - `LED`:
91
+ - `Base`, `RGB` and `SevenSegment` all inherit from `PulseIO::PWMOutput`, so see that below.
92
+ - `#write` MUST always be given a PWM value if used, not `0` or `1`.
93
+ - Prefer using `duty=` if possible, which is percentage based.
94
+ - Alternatively, call `#digital_write` only to stay in faster digital mode.
95
+
96
+ - `LED::RGB`:
97
+ - `#write` takes 3 regular args now. Use `*array` instead to pass an array.
98
+ - `#color` only takes a symbol for one of the predefined colors (or `:off`) now.
99
+
100
+ - `Motor::Stepper`:
101
+ - `#step_cc` renamed to `#step_ccw`.
102
+
103
+ - `OneWire::Bus`:
104
+ - `#update` accepts String of comma delimited ASCII numbers (Board), or Array of bytes (PiBoard).
105
+
106
+ - `PulseIO::IRTransmitter`:
107
+ - Renamed to `PulseIO::IROutput` to be more consistent with other classes.
108
+ - `#emit` renamed to `#write` for consistency.
109
+
110
+ - `PulseIO::PWMOutput`:
111
+ - `#write` will never try to call `#digital_write`, always `#pwm_write`.
112
+ - Initial mode is `:output` instead of `:output_pwm`, saving MCU PWM channels until needed.
113
+ - Mode change is lazy. Happens with first call to `#pwm_write`.
114
+ - Call only `#digital_write` to stay in digital `:output` mode (faster).
115
+ - Added `#duty=`. Set duty cycle in percentage regardless of PWM resolution.
116
+ - Set resolution and frequency per `PWMOutput` instance (pin), instead of per `Board` instance:
117
+ - `#initialize` hash accepts `frequency:` and `resolution:` keys.
118
+ - Call `#pwm_enable` with `frequency:` and `resolution:` kwargs
119
+ - Or use `#resolution=` and `#frequency=` methods.
120
+ - Defaults are 1 kHz frequency and 8-bit resolution.
121
+ - **ONLY** works on ESP32 and `PiBoard` right now. Others still control at the Board level.
122
+ - Limited to 13-bit resolution on `Denko::Board` for now.
123
+
124
+ - `SPI::Bus`:
125
+ - Accepts `index:` param (default 0) on initialize, specifying which SPI interface to use.
126
+ - Only works for PiBoard on Linux right now.
127
+
128
+ - `SPI::Peripheral`:
129
+ - Split into `SPI:Peripheral::SinglePin` and `Spi::Peripheral::MultiPin` to allow modeling more complex peripherals.
130
+ - `#update` accepts String of comma delimited ASCII numbers (Board), or Array of bytes (PiBoard).
131
+
132
+ - `SPI::OutputRegister`:
133
+ - Removed automatic buffering of writes.
134
+ - Call `#set_bit(value)` instead to modify state in memory, without writing to the physical register.
135
+ - Call `#write` to send state to the register after modifying.
136
+
137
+ ### Fiwmare Changes
138
+
139
+ - General:
140
+ - Boards now report their serial buffer as 8 bytes less than the actual buffer size.
141
+ - Removed local callback hooks (meant for customization in C) from the Arduino sketches.
142
+ - Improved serial interface selection for ATSAMD21 boards. Some boards have the native interface as `Serial`, some as `SerialUSB`. The native interface is always selected now, regardless of its name.
143
+ - More accurate pin counts when initializing digital listener storage for different boards.
144
+
145
+ - Core I/O:
146
+ - Removed `INPUT_OUTPUT` mode. Only ESP32 used it and it's the same as `OUTPUT`.
147
+ - Added an optimized single-byte binary message type for `#digital_write`. Improves write throughput 6-7x. Only works for pins 0..63. Fallback automatic for higher pins.
148
+
149
+ - Hardware I2C:
150
+ - Message format changed so "value" isn't used. Will be used for differentiating multiple I2C interfaces in future.
151
+ - Responses now prefixed with `I2C{index}:` (index = I2C device integer, always 0 for now), instead of SDA pin number.
152
+
153
+ - Hardware SPI:
154
+ - Transfers don't need a chip select pin now. This is for LED strips like APA102.
155
+
156
+ - Bit-Bang I2C:
157
+ - Newly added. Works similar to Bit-Bang SPI.
158
+
159
+ ### Board Interface Changes
160
+
161
+ - `Board#set_pin_mode` now takes a third hash argument, `options={}`. Only used keys are `resolution:` and `frequency:` for setting PWM resolution. Only works on ESP32 boards and `PiBoard` on Linux.
162
+
163
+ - Added `Board#set_pin_debounce`
164
+ - Implemented for Linux GPIO alerts in `Denko::PiBoard` (denko-piboard gem).
165
+ - Sets a time (in microseconds) that level changes on a pin must be stable for, before an update happens.
166
+ - Does nothing for `Denko::Board`.
167
+
168
+ - Added `OUTPUT_OPEN_DRAIN` and `OUTPUT_OPEN_SOURCE` pin modes to support `PiBoard`.
169
+
170
+ ### CLI Changes
171
+
172
+ - All Atmel targets now prefixed with "at". Eg. `atsamd21` now, instead of `samd21` before.
173
+
174
+ ### Bugs Fixed
175
+
176
+ - ADS111X sensors were incorrectly validating sample rate when set.
177
+ - Handshake could fail if board was left in a state where it kept transmitting data.
178
+ - An ESP32 with no DACs might not release a LEDC channel after use.
179
+ - `Denko::Connection` could have negative bytes in transit, making it overflow the board's rx buffer.
180
+ - `Servo`, `Buzzer` and `IRTransmitter` didn't start in `:output_pwm` mode.
181
+ - `SSD1306#on` and `#off` would raise errors, trying to write Integer instead of Array to `I2C::Bus`.
182
+ - `SPI::BitBang` did not correctly set initial clock state for modes 2 and 3.
183
+ - `IRTransmitter.emit` didn't work at all ESP8266. Pulse data wasn't aligned properly in memory.
184
+ - `Board#ws2812_write` was validating max length to 256 instead of 255.
185
+ - WS2812 write on ESP32 would crash it, only with *some* low 8-bit pixel values. Still unsure why, but four extra 0 bytes (preceding the pixel data in auxMsg) seems to work around this.
186
+
3
187
  ## 0.13.5
4
188
 
5
189
  ### New Components
@@ -88,7 +272,7 @@
88
272
 
89
273
  - WS2812
90
274
  - Larger aux message size now allows up to 256 pixels (3 bytes per pixel) on a strip
91
-
275
+
92
276
  ### Bug Fixes
93
277
 
94
278
  - Fixed a bug with WS2812 strips where it would try to memcpy 3x the number of necessary bytes. Fixed this by just sending the total number of bytes to write to the strip, rather than number of pixels * bytes per pxiel.
@@ -221,7 +405,7 @@ Fixes critical 1-Wire bugs introduced when namespace was reorganized for 0.13.0.
221
405
  - Connects via I2C bus. Driver written in Ruby.
222
406
  - All features in the datasheet are implemented, except status checking.
223
407
  - Both are mostly identical, except for BMP280 lacking humidity.
224
-
408
+
225
409
  - HTU21D Temperature + Humidity Sensor:
226
410
  - Class: `Denko::Sensor::HTU21D`
227
411
  - Connects via I2C bus. Driver written in Ruby.
@@ -314,7 +498,7 @@ See new examples in the [examples](examples) folder to learn more.
314
498
  - This solves compatibility with boards that the library didn't work on.
315
499
  - `HD44780#create_char` allows 8 custom characters to be defined in memory addresses 0-7.
316
500
  - `HD44780#write` draws the custom (or standard) character from a given memory address.
317
-
501
+
318
502
  - `Denko::PulseIO::PWMOutput` (previously `Denko::Components::Basic::AnalogOutput`):
319
503
  - Changed `#analog_write` to `#pwm_write`.
320
504
  - Added `#pwm_enable` and `#pwm_disable` methods.
@@ -340,7 +524,7 @@ See new examples in the [examples](examples) folder to learn more.
340
524
  - All calls to `delayMicroseconds()` should be replaced with this.
341
525
  - Exposed in Ruby via `CMD=99`. It takes one argument, uint_16 for delay length in microsceonds.
342
526
  - `Board#micro_delay` and `Component::#micro_delay` are defined.
343
-
527
+
344
528
  - `dacWrite` function added to board library. `aWrite` function renamed to `pwmWrite`. Need this to avoid conflict between DAC, PWM and regular output on some chips.
345
529
 
346
530
  - CMD numbers for some board functions changed to accomodate dacWrite:
@@ -353,7 +537,7 @@ See new examples in the [examples](examples) folder to learn more.
353
537
  pulseread 11 -> 9
354
538
  servoToggle 8 -> 10
355
539
  servoWrite 9 -> 11
356
- ````
540
+ ````
357
541
 
358
542
  - `Board#analog_write` replaced by `Board#pwm_write` and `Board#dac_write`, matching the two C functions.
359
543
 
@@ -431,7 +615,7 @@ See new examples in the [examples](examples) folder to learn more.
431
615
  - WiFi version supports OTA (over-the-air) update in the Arduino IDE. Initial flash must still be done via serial.
432
616
  - Dev boards can map GPIOs to physical pins differently. Always look up the GPIO numbers and use those for pin numbers.
433
617
  - **Note:** SoftwareSerial and LiquidCrystal (LCD) both do not work on the ESP8266, and are excluded from the sketch.
434
-
618
+
435
619
  - ESP32 (`--target esp32`):
436
620
  - Works with either built in WiFi or Serial.
437
621
  - WiFi version does NOT support OTA (over-the-air) updates yet.
@@ -440,7 +624,7 @@ See new examples in the [examples](examples) folder to learn more.
440
624
  - **Note:** Servos and analog outputs share the `LEDC` channels on the board. Maximum of 16 combined.
441
625
  - **Note:** SoftwareSerial and LiquidCrystal (LCD) both do not work on the ESP32, and are excluded from the sketch.
442
626
  - **Note:** SPI bug exists where input modes don't match other platforms. Eg. For a register using mode 0 on AVR, mode 2 needs to be set on ESP32 for it to work. Using mode 0 misses a bit.
443
-
627
+
444
628
  - Arduino Due (`--target sam3x`) :
445
629
  - Up to 12-bit analog in/out. Pass a `bits:` option to `Board#new` to set resolution for both.
446
630
  - DAC support. Refer to DAC pins as `'DAC0'`, `'DAC1'`, just as labeled on the board. Call `#analog_write` or just `#write` on an `sensor` component that uses the pin.
@@ -463,7 +647,7 @@ See new examples in the [examples](examples) folder to learn more.
463
647
 
464
648
  - Infrared Emitter support. _Uses [Arduino-IRremote](https://github.com/z3t0/Arduino-IRremote), and the [ESP8266 fork](https://github.com/markszabo/IRremoteESP8266) where applicable._
465
649
 
466
- - Tone (piezo) support. _Uses Arduino `tone`,`noTone` functions._
650
+ - Tone (piezo) support. _Uses Arduino `tone`,`noTone` functions._
467
651
 
468
652
  - SoftwareSerial **(write only)**. _Uses Arduino `SoftSerial` library. Only tested on ATmega chips._
469
653
 
@@ -511,7 +695,7 @@ See new examples in the [examples](examples) folder to learn more.
511
695
 
512
696
  - `BoardProxy` abstraction for shift/SPI registers:
513
697
  - The `Register` classes implement enough of the `Board` interface to satisfy components based on `DigitalInput` and `DigitalOutput`, such as `Led` or `Button`.
514
- - This lets you call methods on components directly, rather than manipulating the register data to control components indirectly.
698
+ - This lets you call methods on components directly, rather than manipulating the register data to control components indirectly.
515
699
  - Initialize the appropriate `Register` object for the type of register. To initialize a component connected to the register, use the register as the `board:`, and give the parallel I/O pin on the register that the component is connected to. Pin 0 maps to the lowest bit.
516
700
  - This also works for `MultiPin` components built out of only `DigitalInput` or `DigitalOutput`, eg. `SSD` - seven segment display or `RGBLed`. See `examples/register` for more.
517
701
 
@@ -523,7 +707,7 @@ See new examples in the [examples](examples) folder to learn more.
523
707
  - Callback functionality for components has been extracted into a mixin module, `Mixins::Callbacks`.
524
708
  - Like before, callbacks for all components on a board run sequentially, in a single "update" thread, separate from the main thread. This is the same thread reading from TxRx.
525
709
  - `#add_callback` and `#remove_callback` methods are available, and take an optional `key` as argument.
526
- - Blocks given to `#add_callback` are stored in `@callbacks[key]`, to be called later, when the "update" thread receives data for the component. The default key is `:persistent`.
710
+ - Blocks given to `#add_callback` are stored in `@callbacks[key]`, to be called later, when the "update" thread receives data for the component. The default key is `:persistent`.
527
711
  - Each key represents an array of callbacks, so multiple callbacks can share the same key.
528
712
  - Calling `#remove_callbacks` with a key empties that array. Calling with no key removes **all** callbacks for the component.
529
713
  - `#pre_callback_filter` is defined in the `Callbacks` module. The return value of this method is what is given to the component's callbacks and to update its `@state`. By default, it returns whatever was given from the board.
@@ -563,7 +747,7 @@ See new examples in the [examples](examples) folder to learn more.
563
747
  * Flashing the updated sketch to the board is required.
564
748
 
565
749
  ## 0.11.1
566
-
750
+
567
751
  ### New Features
568
752
 
569
753
  * Support for the Arduino Ethernet shield and compatibles (Wiznet W5100 chipset).
data/DEPS_CLI.md CHANGED
@@ -16,15 +16,14 @@ arduino-cli core install arduino:sam
16
16
  arduino-cli core install arduino:samd
17
17
  arduino-cli core install arduino:renesas_uno
18
18
  arduino-cli core install esp8266:esp8266
19
- arduino-cli core install esp32:esp32@2.0.17
19
+ arduino-cli core install esp32:esp32@3.0.5
20
20
  arduino-cli core install rp2040:rp2040
21
21
  arduino-cli lib install Servo
22
22
  arduino-cli lib install Ethernet
23
23
  arduino-cli lib install WiFi
24
24
  arduino-cli lib install WiFi101
25
25
  arduino-cli lib install WiFiNINA
26
- arduino-cli lib install IRremote@4.1.2
27
- arduino-cli lib install IRremoteESP8266@2.8.4
26
+ arduino-cli lib install IRremote@4.4.1
28
27
  arduino-cli lib install ESP32Servo
29
28
  arduino-cli lib install "Adafruit NeoPixel"
30
29
  ````
@@ -37,7 +36,7 @@ arduino-cli lib install Servo
37
36
  arduino-cli lib install Ethernet
38
37
  arduino-cli lib install WiFi
39
38
  arduino-cli lib install WiFiNINA
40
- arduino-cli lib install IRremote@4.1.2
39
+ arduino-cli lib install IRremote@4.4.1
41
40
  arduino-cli lib install "Adafruit NeoPixel"
42
41
  ````
43
42
 
@@ -52,7 +51,7 @@ arduino-cli lib install Ethernet
52
51
  arduino-cli lib install WiFi
53
52
  arduino-cli lib install WiFi101
54
53
  arduino-cli lib install WiFiNINA
55
- arduino-cli lib install IRremote@4.1.2
54
+ arduino-cli lib install IRremote@4.4.1
56
55
  arduino-cli lib install "Adafruit NeoPixel"
57
56
  ````
58
57
 
@@ -62,7 +61,7 @@ arduino-cli config init
62
61
  arduino-cli config add board_manager.additional_urls https://arduino.esp8266.com/stable/package_esp8266com_index.json
63
62
  arduino-cli core update-index
64
63
  arduino-cli core install esp8266:esp8266
65
- arduino-cli lib install IRremoteESP8266@2.8.5
64
+ arduino-cli lib install IRremote@4.4.1
66
65
  arduino-cli lib install "Adafruit NeoPixel"
67
66
  ````
68
67
 
@@ -71,9 +70,9 @@ arduino-cli lib install "Adafruit NeoPixel"
71
70
  arduino-cli config init
72
71
  arduino-cli config add board_manager.additional_urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
73
72
  arduino-cli core update-index
74
- arduino-cli core install esp32:esp32@2.0.17
73
+ arduino-cli core install esp32:esp32@3.0.5
75
74
  arduino-cli lib install ESP32Servo
76
- arduino-cli lib install IRremoteESP8266@2.8.5
75
+ arduino-cli lib install IRremote@4.4.1
77
76
  arduino-cli lib install "Adafruit NeoPixel"
78
77
  ````
79
78
 
@@ -83,5 +82,6 @@ arduino-cli config init
83
82
  arduino-cli config add board_manager.additional_urls https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
84
83
  arduino-cli core update-index
85
84
  arduino-cli core install rp2040:rp2040
86
- arduino-cli lib install IRremote@4.1.2
85
+ arduino-cli lib install IRremote@4.4.1
86
+ arduino-cli lib install "Adafruit NeoPixel"
87
87
  ````