denko 0.13.2 → 0.13.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (443) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_megaavr.yml +1 -1
  3. data/CHANGELOG.md +79 -0
  4. data/DEPS_CLI.md +5 -0
  5. data/DEPS_IDE.md +5 -0
  6. data/HARDWARE.md +70 -35
  7. data/README.md +3 -3
  8. data/benchmarks/i2c_ssd1306_refresh.rb +7 -2
  9. data/examples/advanced/m5_env.rb +48 -0
  10. data/examples/digital_io/button.rb +13 -0
  11. data/examples/pulse_io/buzzer.rb +0 -40
  12. data/examples/sensor/aht10.rb +7 -3
  13. data/examples/sensor/aht20.rb +7 -3
  14. data/examples/sensor/bme280.rb +6 -43
  15. data/examples/sensor/bmp180.rb +22 -0
  16. data/examples/sensor/generic_pir.rb +25 -0
  17. data/examples/sensor/htu21d.rb +1 -1
  18. data/examples/sensor/htu31d.rb +15 -11
  19. data/examples/sensor/neat_tph_readings.rb +26 -0
  20. data/examples/sensor/qmp6988.rb +53 -0
  21. data/examples/sensor/rcwl9620.rb +15 -0
  22. data/examples/sensor/sht3x.rb +34 -0
  23. data/lib/denko/board/led_array.rb +3 -6
  24. data/lib/denko/message.rb +1 -1
  25. data/lib/denko/sensor/bme280.rb +1 -1
  26. data/lib/denko/sensor/bmp180.rb +223 -0
  27. data/lib/denko/sensor/generic_pir.rb +8 -0
  28. data/lib/denko/sensor/htu21d.rb +6 -2
  29. data/lib/denko/sensor/qmp6988.rb +308 -0
  30. data/lib/denko/sensor/rcwl9620.rb +34 -0
  31. data/lib/denko/sensor/sht3x.rb +128 -0
  32. data/lib/denko/sensor.rb +6 -0
  33. data/lib/denko/version.rb +1 -1
  34. data/src/denko_wifi.ino +38 -3
  35. data/src/lib/Denko.cpp +0 -9
  36. data/src/lib/Denko.h +1 -2
  37. data/src/lib/DenkoDefines.h +14 -6
  38. data/src/lib/DenkoLEDArray.cpp +4 -10
  39. data/target.yml +1 -35
  40. data/test/analog_io/input_test.rb +3 -3
  41. data/test/analog_io/output_test.rb +1 -1
  42. data/test/analog_io/potentiometer_test.rb +2 -2
  43. data/test/behaviors/bus_peripheral_addressed.rb +1 -1
  44. data/test/behaviors/bus_peripheral_test.rb +1 -1
  45. data/test/behaviors/callbacks_test.rb +4 -4
  46. data/test/behaviors/component_test.rb +2 -2
  47. data/test/behaviors/listener_test.rb +3 -3
  48. data/test/behaviors/poller_test.rb +3 -3
  49. data/test/behaviors/reader_test.rb +4 -4
  50. data/test/behaviors/subcomponents_test.rb +1 -1
  51. data/test/behaviors/threaded_test.rb +7 -7
  52. data/test/board/board_test.rb +8 -8
  53. data/test/board/core_test.rb +12 -12
  54. data/test/board/eeprom_test.rb +2 -2
  55. data/test/board/i2c_test.rb +5 -5
  56. data/test/board/infrared_test.rb +1 -1
  57. data/test/board/message_test.rb +1 -1
  58. data/test/board/one_wire_test.rb +4 -4
  59. data/test/board/pulse_test.rb +2 -2
  60. data/test/board/servo_test.rb +3 -3
  61. data/test/board/spi_test.rb +3 -3
  62. data/test/board/tone_test.rb +2 -2
  63. data/test/connection/serial_test.rb +13 -13
  64. data/test/digital_io/input_test.rb +7 -7
  65. data/test/digital_io/output_test.rb +5 -5
  66. data/test/digital_io/rotary_encoder_test.rb +4 -4
  67. data/test/display/hd44780_test.rb +1 -1
  68. data/test/eeprom/built_in_test.rb +1 -1
  69. data/test/i2c/bus_test.rb +5 -5
  70. data/test/i2c/peripheral_test.rb +4 -4
  71. data/test/led/base_test.rb +2 -2
  72. data/test/led/rgb_test.rb +6 -6
  73. data/test/led/seven_segment_test.rb +8 -8
  74. data/test/motor/servo_test.rb +6 -6
  75. data/test/motor/stepper_test.rb +5 -5
  76. data/test/one_wire/bus_test.rb +9 -9
  77. data/test/one_wire/peripheral_test.rb +17 -17
  78. data/test/pulse_io/buzzer_test.rb +4 -4
  79. data/test/pulse_io/ir_transmitter_test.rb +2 -2
  80. data/test/pulse_io/pwm_output_test.rb +4 -4
  81. data/test/rtc/ds3231_test.rb +4 -4
  82. data/test/sensor/dht_test.rb +3 -3
  83. data/test/sensor/ds18b20_test.rb +9 -9
  84. data/test/spi/bus_test.rb +4 -4
  85. data/test/spi/input_register_test.rb +8 -8
  86. data/test/spi/output_register_test.rb +4 -4
  87. data/test/uart/bitbang_test.rb +3 -3
  88. metadata +15 -357
  89. data/vendor/board-maps/.gitignore +0 -56
  90. data/vendor/board-maps/.gitmodules +0 -24
  91. data/vendor/board-maps/BoardMap.h +0 -1392
  92. data/vendor/board-maps/README.md +0 -52
  93. data/vendor/board-maps/lib/boards_parser.rb +0 -66
  94. data/vendor/board-maps/lib/header_parser.rb +0 -189
  95. data/vendor/board-maps/run.rb +0 -57
  96. data/vendor/board-maps/yaml/0XCB_HELIOS.yml +0 -48
  97. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2.yml +0 -25
  98. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_REVTFT.yml +0 -25
  99. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_TFT.yml +0 -27
  100. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3.yml +0 -34
  101. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_NOPSRAM.yml +0 -34
  102. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_REVTFT.yml +0 -25
  103. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_TFT.yml +0 -27
  104. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32_V2.yml +0 -34
  105. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040.yml +0 -48
  106. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_CAN.yml +0 -48
  107. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_DVI.yml +0 -48
  108. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_PROP_MAKER.yml +0 -48
  109. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_RFM.yml +0 -48
  110. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_SCORPIO.yml +0 -48
  111. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_THINKINK.yml +0 -48
  112. data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_USB_HOST.yml +0 -48
  113. data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_ESP32.yml +0 -24
  114. data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_RP2040.yml +0 -48
  115. data/vendor/board-maps/yaml/ADAFRUIT_KB2040_RP2040.yml +0 -48
  116. data/vendor/board-maps/yaml/ADAFRUIT_MACROPAD_RP2040.yml +0 -48
  117. data/vendor/board-maps/yaml/ADAFRUIT_MATRIXPORTAL_ESP32S3.yml +0 -16
  118. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32C3.yml +0 -12
  119. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S2.yml +0 -22
  120. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_N4R2.yml +0 -20
  121. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_NOPSRAM.yml +0 -20
  122. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32_PICO.yml +0 -28
  123. data/vendor/board-maps/yaml/ADAFRUIT_QTPY_RP2040.yml +0 -48
  124. data/vendor/board-maps/yaml/ADAFRUIT_STEMMAFRIEND_RP2040.yml +0 -48
  125. data/vendor/board-maps/yaml/ADAFRUIT_TRINKEYQT_RP2040.yml +0 -48
  126. data/vendor/board-maps/yaml/ALKS.yml +0 -34
  127. data/vendor/board-maps/yaml/AMPERKA_WIFI_SLOT.yml +0 -16
  128. data/vendor/board-maps/yaml/ARTRONSHOP_RP2_NANO.yml +0 -32
  129. data/vendor/board-maps/yaml/AVR_ADK.yml +0 -24
  130. data/vendor/board-maps/yaml/AVR_BT.yml +0 -16
  131. data/vendor/board-maps/yaml/AVR_CIRCUITPLAY.yml +0 -14
  132. data/vendor/board-maps/yaml/AVR_DUEMILANOVE.yml +0 -16
  133. data/vendor/board-maps/yaml/AVR_ESPLORA.yml +0 -20
  134. data/vendor/board-maps/yaml/AVR_ETHERNET.yml +0 -16
  135. data/vendor/board-maps/yaml/AVR_FIO.yml +0 -16
  136. data/vendor/board-maps/yaml/AVR_GEMMA.yml +0 -6
  137. data/vendor/board-maps/yaml/AVR_INDUSTRIAL101.yml +0 -20
  138. data/vendor/board-maps/yaml/AVR_LEONARDO.yml +0 -20
  139. data/vendor/board-maps/yaml/AVR_LEONARDO_ETH.yml +0 -20
  140. data/vendor/board-maps/yaml/AVR_LILYPAD.yml +0 -16
  141. data/vendor/board-maps/yaml/AVR_LILYPAD_USB.yml +0 -20
  142. data/vendor/board-maps/yaml/AVR_LININO_ONE.yml +0 -20
  143. data/vendor/board-maps/yaml/AVR_MEGA.yml +0 -24
  144. data/vendor/board-maps/yaml/AVR_MEGA2560.yml +0 -24
  145. data/vendor/board-maps/yaml/AVR_MICRO.yml +0 -20
  146. data/vendor/board-maps/yaml/AVR_MINI.yml +0 -16
  147. data/vendor/board-maps/yaml/AVR_NANO.yml +0 -16
  148. data/vendor/board-maps/yaml/AVR_NANO_EVERY.yml +0 -22
  149. data/vendor/board-maps/yaml/AVR_NG.yml +0 -16
  150. data/vendor/board-maps/yaml/AVR_PRO.yml +0 -16
  151. data/vendor/board-maps/yaml/AVR_ROBOT_CONTROL.yml +0 -22
  152. data/vendor/board-maps/yaml/AVR_ROBOT_MOTOR.yml +0 -19
  153. data/vendor/board-maps/yaml/AVR_UNO.yml +0 -16
  154. data/vendor/board-maps/yaml/AVR_UNO_WIFI_DEV_ED.yml +0 -16
  155. data/vendor/board-maps/yaml/AVR_UNO_WIFI_REV2.yml +0 -22
  156. data/vendor/board-maps/yaml/AVR_YUN.yml +0 -20
  157. data/vendor/board-maps/yaml/AVR_YUNMINI.yml +0 -20
  158. data/vendor/board-maps/yaml/AirM2M_CORE_ESP32C3.yml +0 -14
  159. data/vendor/board-maps/yaml/BEE_DATA_LOGGER.yml +0 -39
  160. data/vendor/board-maps/yaml/BPI_BIT.yml +0 -9
  161. data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +0 -41
  162. data/vendor/board-maps/yaml/BRIDGETEK_IDM2040-7A.yml +0 -48
  163. data/vendor/board-maps/yaml/BeeMotionS3.yml +0 -45
  164. data/vendor/board-maps/yaml/Bee_Motion.yml +0 -30
  165. data/vendor/board-maps/yaml/Bee_Motion_Mini.yml +0 -1
  166. data/vendor/board-maps/yaml/Bee_S3.yml +0 -38
  167. data/vendor/board-maps/yaml/CHALLENGER_2040_LORA_RP2040.yml +0 -39
  168. data/vendor/board-maps/yaml/CHALLENGER_2040_LTE_RP2040.yml +0 -38
  169. data/vendor/board-maps/yaml/CHALLENGER_2040_NFC_RP2040.yml +0 -32
  170. data/vendor/board-maps/yaml/CHALLENGER_2040_SDRTC_RP2040.yml +0 -36
  171. data/vendor/board-maps/yaml/CHALLENGER_2040_SUBGHZ_RP2040.yml +0 -39
  172. data/vendor/board-maps/yaml/CHALLENGER_2040_UWB_RP2040.yml +0 -39
  173. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI6_BLE_RP2040.yml +0 -42
  174. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_BLE_RP2040.yml +0 -42
  175. data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_RP2040.yml +0 -38
  176. data/vendor/board-maps/yaml/CHALLENGER_NB_2040_WIFI_RP2040.yml +0 -38
  177. data/vendor/board-maps/yaml/CRABIK_SLOT_ESP32_S3.yml +0 -19
  178. data/vendor/board-maps/yaml/CYTRON_MAKER_FEATHER_AIOT_S3.yml +0 -29
  179. data/vendor/board-maps/yaml/CYTRON_MAKER_NANO_RP2040.yml +0 -48
  180. data/vendor/board-maps/yaml/CYTRON_MAKER_PI_RP2040.yml +0 -48
  181. data/vendor/board-maps/yaml/CoreESP32.yml +0 -53
  182. data/vendor/board-maps/yaml/D1_MINI32.yml +0 -45
  183. data/vendor/board-maps/yaml/D1_UNO32.yml +0 -28
  184. data/vendor/board-maps/yaml/DATANOISETV_PICOADK.yml +0 -48
  185. data/vendor/board-maps/yaml/DENKY.yml +0 -35
  186. data/vendor/board-maps/yaml/DENKY_PICOV3.yml +0 -35
  187. data/vendor/board-maps/yaml/DENKY_WROOM32.yml +0 -35
  188. data/vendor/board-maps/yaml/DEPARTMENT_OF_ALCHEMY_MINIMAIN_ESP32S2.yml +0 -26
  189. data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32_C3.yml +0 -14
  190. data/vendor/board-maps/yaml/DFROBOT_BEETLE_RP2040.yml +0 -48
  191. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32E.yml +0 -49
  192. data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32S3.yml +0 -38
  193. data/vendor/board-maps/yaml/DFROBOT_ROMEO_ESP32S3.yml +0 -7
  194. data/vendor/board-maps/yaml/DPU_ESP32.yml +0 -35
  195. data/vendor/board-maps/yaml/DYDK.yml +0 -38
  196. data/vendor/board-maps/yaml/DYDK1A.yml +0 -37
  197. data/vendor/board-maps/yaml/DYDK1Av2.yml +0 -45
  198. data/vendor/board-maps/yaml/DYG.yml +0 -20
  199. data/vendor/board-maps/yaml/DYM.yml +0 -40
  200. data/vendor/board-maps/yaml/DYMv2.yml +0 -39
  201. data/vendor/board-maps/yaml/D_Duino_32.yml +0 -37
  202. data/vendor/board-maps/yaml/ELECTRONICCATS_HUNTERCAT_NFC.yml +0 -44
  203. data/vendor/board-maps/yaml/ESP320.yml +0 -8
  204. data/vendor/board-maps/yaml/ESP32C3_DEV.yml +0 -14
  205. data/vendor/board-maps/yaml/ESP32C3_M1_I_KIT.yml +0 -13
  206. data/vendor/board-maps/yaml/ESP32S2_DEV.yml +0 -43
  207. data/vendor/board-maps/yaml/ESP32S2_THING_PLUS.yml +0 -44
  208. data/vendor/board-maps/yaml/ESP32S2_USB.yml +0 -43
  209. data/vendor/board-maps/yaml/ESP32S3_CAM_LCD.yml +0 -7
  210. data/vendor/board-maps/yaml/ESP32S3_DEV.yml +0 -38
  211. data/vendor/board-maps/yaml/ESP32_DEV.yml +0 -35
  212. data/vendor/board-maps/yaml/ESP32_DEVKIT_LIPO.yml +0 -35
  213. data/vendor/board-maps/yaml/ESP32_EVB.yml +0 -7
  214. data/vendor/board-maps/yaml/ESP32_GATEWAY.yml +0 -13
  215. data/vendor/board-maps/yaml/ESP32_GATEWAY_C.yml +0 -13
  216. data/vendor/board-maps/yaml/ESP32_GATEWAY_E.yml +0 -13
  217. data/vendor/board-maps/yaml/ESP32_GATEWAY_F.yml +0 -13
  218. data/vendor/board-maps/yaml/ESP32_IOT_REDBOARD.yml +0 -36
  219. data/vendor/board-maps/yaml/ESP32_MICROMOD.yml +0 -24
  220. data/vendor/board-maps/yaml/ESP32_PICO.yml +0 -35
  221. data/vendor/board-maps/yaml/ESP32_POE.yml +0 -7
  222. data/vendor/board-maps/yaml/ESP32_POE_ISO.yml +0 -7
  223. data/vendor/board-maps/yaml/ESP32_S3_BOX.yml +0 -19
  224. data/vendor/board-maps/yaml/ESP32_S3_USB_OTG.yml +0 -11
  225. data/vendor/board-maps/yaml/ESP32_THING.yml +0 -36
  226. data/vendor/board-maps/yaml/ESP32_THING_PLUS.yml +0 -33
  227. data/vendor/board-maps/yaml/ESP32_THING_PLUS_C.yml +0 -33
  228. data/vendor/board-maps/yaml/ESP32_WROOM_DA.yml +0 -35
  229. data/vendor/board-maps/yaml/ESP32_WROVER_KIT.yml +0 -35
  230. data/vendor/board-maps/yaml/ESP8266_ADAFRUIT_HUZZAH.yml +0 -9
  231. data/vendor/board-maps/yaml/ESP8266_AGRUMINO_LEMON_V4.yml +0 -8
  232. data/vendor/board-maps/yaml/ESP8266_ARDUINO_PRIMO.yml +0 -7
  233. data/vendor/board-maps/yaml/ESP8266_ARDUINO_STAR_OTTO.yml +0 -7
  234. data/vendor/board-maps/yaml/ESP8266_ARDUINO_UNOWIFI.yml +0 -9
  235. data/vendor/board-maps/yaml/ESP8266_ESP01.yml +0 -9
  236. data/vendor/board-maps/yaml/ESP8266_ESP07.yml +0 -20
  237. data/vendor/board-maps/yaml/ESP8266_ESP12.yml +0 -20
  238. data/vendor/board-maps/yaml/ESP8266_ESP13.yml +0 -17
  239. data/vendor/board-maps/yaml/ESP8266_ESP210.yml +0 -9
  240. data/vendor/board-maps/yaml/ESP8266_ESPECTRO_CORE.yml +0 -9
  241. data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP12.yml +0 -9
  242. data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP13.yml +0 -9
  243. data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V1.yml +0 -9
  244. data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V2.yml +0 -9
  245. data/vendor/board-maps/yaml/ESP8266_GENERIC.yml +0 -9
  246. data/vendor/board-maps/yaml/ESP8266_INVENT_ONE.yml +0 -22
  247. data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12.yml +0 -20
  248. data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12E.yml +0 -20
  249. data/vendor/board-maps/yaml/ESP8266_OAK.yml +0 -9
  250. data/vendor/board-maps/yaml/ESP8266_PHOENIX_V1.yml +0 -9
  251. data/vendor/board-maps/yaml/ESP8266_PHOENIX_V2.yml +0 -9
  252. data/vendor/board-maps/yaml/ESP8266_SCHIRMILABS_EDUINO_WIFI.yml +0 -25
  253. data/vendor/board-maps/yaml/ESP8266_SONOFF_BASIC.yml +0 -9
  254. data/vendor/board-maps/yaml/ESP8266_SONOFF_S20.yml +0 -9
  255. data/vendor/board-maps/yaml/ESP8266_SONOFF_SV.yml +0 -9
  256. data/vendor/board-maps/yaml/ESP8266_SONOFF_TH.yml +0 -9
  257. data/vendor/board-maps/yaml/ESP8266_THING.yml +0 -9
  258. data/vendor/board-maps/yaml/ESP8266_THING_DEV.yml +0 -9
  259. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINI.yml +0 -18
  260. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINILITE.yml +0 -18
  261. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINIPRO.yml +0 -18
  262. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1R1.yml +0 -25
  263. data/vendor/board-maps/yaml/ESP8266_WEMOS_D1WROOM02.yml +0 -18
  264. data/vendor/board-maps/yaml/ESP8266_WIO_LINK.yml +0 -9
  265. data/vendor/board-maps/yaml/ESP8266_XINABOX_CW01.yml +0 -9
  266. data/vendor/board-maps/yaml/ESPECTRO32.yml +0 -36
  267. data/vendor/board-maps/yaml/ESPea32.yml +0 -36
  268. data/vendor/board-maps/yaml/ESPino32.yml +0 -36
  269. data/vendor/board-maps/yaml/ET-Board.yml +0 -26
  270. data/vendor/board-maps/yaml/EXTREMEELEXTRONICS_RC2040.yml +0 -46
  271. data/vendor/board-maps/yaml/Edgebox-ESP-100.yml +0 -7
  272. data/vendor/board-maps/yaml/FEATHERS2.yml +0 -43
  273. data/vendor/board-maps/yaml/FEATHERS2NEO.yml +0 -31
  274. data/vendor/board-maps/yaml/FEATHERS3.yml +0 -32
  275. data/vendor/board-maps/yaml/FEATHER_ESP32.yml +0 -32
  276. data/vendor/board-maps/yaml/FLYBOARD2040_CORE.yml +0 -48
  277. data/vendor/board-maps/yaml/FRANZININHO_WIFI.yml +0 -43
  278. data/vendor/board-maps/yaml/FRANZININHO_WIFI_MSC.yml +0 -43
  279. data/vendor/board-maps/yaml/FROG_ESP32.yml +0 -35
  280. data/vendor/board-maps/yaml/FUNHOUSE_ESP32S2.yml +0 -22
  281. data/vendor/board-maps/yaml/GEN4_IOD.yml +0 -9
  282. data/vendor/board-maps/yaml/GENERIC_RP2040.yml +0 -48
  283. data/vendor/board-maps/yaml/HEALTHYPI_4.yml +0 -36
  284. data/vendor/board-maps/yaml/HONEYLEMON.yml +0 -36
  285. data/vendor/board-maps/yaml/HORNBILL_ESP32_DEV.yml +0 -36
  286. data/vendor/board-maps/yaml/HORNBILL_ESP32_MINIMA.yml +0 -19
  287. data/vendor/board-maps/yaml/ILABS_2040_RPICO32_RP2040.yml +0 -47
  288. data/vendor/board-maps/yaml/IMBRIOS_LOGSENS_V1P1.yml +0 -23
  289. data/vendor/board-maps/yaml/INTOROBOT_ESP32_DEV.yml +0 -34
  290. data/vendor/board-maps/yaml/LILYGO_T_DISPLAY_S3.yml +0 -32
  291. data/vendor/board-maps/yaml/LOLIN32.yml +0 -36
  292. data/vendor/board-maps/yaml/LOLIN32_LITE.yml +0 -36
  293. data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +0 -14
  294. data/vendor/board-maps/yaml/LOLIN_D32.yml +0 -36
  295. data/vendor/board-maps/yaml/LOLIN_D32_PRO.yml +0 -36
  296. data/vendor/board-maps/yaml/LOLIN_S2_MINI.yml +0 -44
  297. data/vendor/board-maps/yaml/LOLIN_S2_PICO.yml +0 -44
  298. data/vendor/board-maps/yaml/LOLIN_S3.yml +0 -40
  299. data/vendor/board-maps/yaml/LOLIN_S3_MINI.yml +0 -40
  300. data/vendor/board-maps/yaml/LOLIN_S3_PRO.yml +0 -40
  301. data/vendor/board-maps/yaml/Lion_Bit_Dev_Board.yml +0 -18
  302. data/vendor/board-maps/yaml/LoPy.yml +0 -37
  303. data/vendor/board-maps/yaml/LoPy4.yml +0 -37
  304. data/vendor/board-maps/yaml/M5STACK_CORES3.yml +0 -8
  305. data/vendor/board-maps/yaml/M5STACK_Core2.yml +0 -9
  306. data/vendor/board-maps/yaml/M5STACK_FIRE.yml +0 -10
  307. data/vendor/board-maps/yaml/M5Stack-Timer-CAM.yml +0 -10
  308. data/vendor/board-maps/yaml/M5Stack_ATOM.yml +0 -10
  309. data/vendor/board-maps/yaml/M5Stack_ATOMS3.yml +0 -7
  310. data/vendor/board-maps/yaml/M5Stack_CoreInk.yml +0 -9
  311. data/vendor/board-maps/yaml/M5Stack_Core_ESP32.yml +0 -10
  312. data/vendor/board-maps/yaml/M5Stack_Station.yml +0 -10
  313. data/vendor/board-maps/yaml/M5Stick_C.yml +0 -10
  314. data/vendor/board-maps/yaml/MAGTAG29_ESP32S2.yml +0 -31
  315. data/vendor/board-maps/yaml/MELOPERO_COOKIE_RP2040.yml +0 -48
  316. data/vendor/board-maps/yaml/MELOPERO_SHAKE_RP2040.yml +0 -48
  317. data/vendor/board-maps/yaml/METRO_ESP32S2.yml +0 -44
  318. data/vendor/board-maps/yaml/MGBOT_IOTIK32A.yml +0 -36
  319. data/vendor/board-maps/yaml/MGBOT_IOTIK32B.yml +0 -36
  320. data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32DEVKIT.yml +0 -36
  321. data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32MINIKIT.yml +0 -36
  322. data/vendor/board-maps/yaml/MICROS2.yml +0 -44
  323. data/vendor/board-maps/yaml/MINIMA.yml +0 -15
  324. data/vendor/board-maps/yaml/MOD_WIFI_ESP8266.yml +0 -9
  325. data/vendor/board-maps/yaml/Metro.yml +0 -8
  326. data/vendor/board-maps/yaml/NANO32.yml +0 -36
  327. data/vendor/board-maps/yaml/NANO_RP2040_CONNECT.yml +0 -35
  328. data/vendor/board-maps/yaml/NEBULAS3.yml +0 -33
  329. data/vendor/board-maps/yaml/NEKOSYSTEMS_BL2040_MINI.yml +0 -48
  330. data/vendor/board-maps/yaml/NULLBITS_BIT_C_PRO.yml +0 -48
  331. data/vendor/board-maps/yaml/Node32s.yml +0 -36
  332. data/vendor/board-maps/yaml/NodeMCU_32S.yml +0 -36
  333. data/vendor/board-maps/yaml/ODROID_ESP32.yml +0 -10
  334. data/vendor/board-maps/yaml/ONEHORSE_ESP32_DEV.yml +0 -34
  335. data/vendor/board-maps/yaml/OROCA_EDUBOT.yml +0 -33
  336. data/vendor/board-maps/yaml/PIMORONI_PGA2040.yml +0 -48
  337. data/vendor/board-maps/yaml/PIMORONI_PLASMA2040.yml +0 -29
  338. data/vendor/board-maps/yaml/PORTENTA_C33.yml +0 -28
  339. data/vendor/board-maps/yaml/PROS3.yml +0 -33
  340. data/vendor/board-maps/yaml/PYCOM_GPY.yml +0 -37
  341. data/vendor/board-maps/yaml/Piranha.yml +0 -22
  342. data/vendor/board-maps/yaml/Pocket32.yml +0 -36
  343. data/vendor/board-maps/yaml/QUANTUM.yml +0 -35
  344. data/vendor/board-maps/yaml/RASPBERRY_PI_PICO.yml +0 -48
  345. data/vendor/board-maps/yaml/RASPBERRY_PI_PICO_W.yml +0 -48
  346. data/vendor/board-maps/yaml/REDPILL_ESP32S3.yml +0 -42
  347. data/vendor/board-maps/yaml/RMP.yml +0 -43
  348. data/vendor/board-maps/yaml/SAMD_CIRCUITPLAYGROUND_EXPRESS.yml +0 -11
  349. data/vendor/board-maps/yaml/SAMD_MKR1000.yml +0 -20
  350. data/vendor/board-maps/yaml/SAMD_MKRFox1200.yml +0 -19
  351. data/vendor/board-maps/yaml/SAMD_MKRGSM1400.yml +0 -15
  352. data/vendor/board-maps/yaml/SAMD_MKRNB1500.yml +0 -15
  353. data/vendor/board-maps/yaml/SAMD_MKRVIDOR4000.yml +0 -19
  354. data/vendor/board-maps/yaml/SAMD_MKRWAN1300.yml +0 -18
  355. data/vendor/board-maps/yaml/SAMD_MKRWAN1310.yml +0 -18
  356. data/vendor/board-maps/yaml/SAMD_MKRWIFI1010.yml +0 -19
  357. data/vendor/board-maps/yaml/SAMD_MKRZERO.yml +0 -19
  358. data/vendor/board-maps/yaml/SAMD_NANO_33_IOT.yml +0 -13
  359. data/vendor/board-maps/yaml/SAMD_TIAN.yml +0 -15
  360. data/vendor/board-maps/yaml/SAMD_ZERO.yml +0 -14
  361. data/vendor/board-maps/yaml/SAM_DUE.yml +0 -28
  362. data/vendor/board-maps/yaml/SAM_ZERO.yml +0 -15
  363. data/vendor/board-maps/yaml/SEEED_INDICATOR_RP2040.yml +0 -47
  364. data/vendor/board-maps/yaml/SEEED_XIAO_RP2040.yml +0 -29
  365. data/vendor/board-maps/yaml/SOLDERPARTY_RP2040_STAMP.yml +0 -48
  366. data/vendor/board-maps/yaml/SONOFF_DUALR3.yml +0 -35
  367. data/vendor/board-maps/yaml/SPARKFUN_PROMICRO_RP2040.yml +0 -48
  368. data/vendor/board-maps/yaml/SPARKFUN_THINGPLUS_RP2040.yml +0 -48
  369. data/vendor/board-maps/yaml/STAMP_S3.yml +0 -4
  370. data/vendor/board-maps/yaml/TAMC_TERMOD_S3.yml +0 -41
  371. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1262.yml +0 -28
  372. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1268.yml +0 -28
  373. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1276.yml +0 -28
  374. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1278.yml +0 -28
  375. data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1280.yml +0 -28
  376. data/vendor/board-maps/yaml/TBeam.yml +0 -28
  377. data/vendor/board-maps/yaml/TINYPICO.yml +0 -35
  378. data/vendor/board-maps/yaml/TINYS2.yml +0 -43
  379. data/vendor/board-maps/yaml/TINYS3.yml +0 -25
  380. data/vendor/board-maps/yaml/TTGO-T-OI-PLUS_DEV.yml +0 -11
  381. data/vendor/board-maps/yaml/TTGO_LoRa32_V1.yml +0 -38
  382. data/vendor/board-maps/yaml/TTGO_LoRa32_V2.yml +0 -38
  383. data/vendor/board-maps/yaml/TTGO_LoRa32_v21new.yml +0 -38
  384. data/vendor/board-maps/yaml/TTGO_T1.yml +0 -36
  385. data/vendor/board-maps/yaml/TTGO_T7_V13_Mini32.yml +0 -36
  386. data/vendor/board-maps/yaml/TTGO_T7_V14_Mini32.yml +0 -36
  387. data/vendor/board-maps/yaml/TWATCH_2020_V1.yml +0 -9
  388. data/vendor/board-maps/yaml/TWATCH_2020_V2.yml +0 -9
  389. data/vendor/board-maps/yaml/TWATCH_2020_V3.yml +0 -9
  390. data/vendor/board-maps/yaml/TWATCH_BASE.yml +0 -9
  391. data/vendor/board-maps/yaml/TWatch.yml +0 -9
  392. data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver.yml +0 -18
  393. data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver_MK_II.yml +0 -18
  394. data/vendor/board-maps/yaml/UBLOX_NINA_W10.yml +0 -57
  395. data/vendor/board-maps/yaml/UBLOX_NORA_W10.yml +0 -43
  396. data/vendor/board-maps/yaml/UNOWIFIR4.yml +0 -17
  397. data/vendor/board-maps/yaml/UPESY_RP2040_DEVKIT.yml +0 -48
  398. data/vendor/board-maps/yaml/VALTRACK_V4_MFW_ESP32_C3.yml +0 -23
  399. data/vendor/board-maps/yaml/VALTRACK_V4_VTS_ESP32_C3.yml +0 -23
  400. data/vendor/board-maps/yaml/VIYALAB_MIZU_RP2040.yml +0 -48
  401. data/vendor/board-maps/yaml/WATCHY.yml +0 -7
  402. data/vendor/board-maps/yaml/WATCHY_V10.yml +0 -7
  403. data/vendor/board-maps/yaml/WATCHY_V15.yml +0 -7
  404. data/vendor/board-maps/yaml/WATCHY_V20.yml +0 -7
  405. data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_0_96.yml +0 -47
  406. data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_1_28.yml +0 -47
  407. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ONE.yml +0 -47
  408. data/vendor/board-maps/yaml/WAVESHARE_RP2040_PLUS.yml +0 -48
  409. data/vendor/board-maps/yaml/WAVESHARE_RP2040_ZERO.yml +0 -47
  410. data/vendor/board-maps/yaml/WESP32.yml +0 -17
  411. data/vendor/board-maps/yaml/WIDORA_AIR.yml +0 -34
  412. data/vendor/board-maps/yaml/WIFIDUINO_ESP8266.yml +0 -23
  413. data/vendor/board-maps/yaml/WIFINFO.yml +0 -20
  414. data/vendor/board-maps/yaml/WIPY3.yml +0 -37
  415. data/vendor/board-maps/yaml/WIZNET_5100S_EVB_PICO.yml +0 -48
  416. data/vendor/board-maps/yaml/WIZNET_5500_EVB_PICO.yml +0 -48
  417. data/vendor/board-maps/yaml/WIZNET_WIZFI360_EVB_PICO.yml +0 -48
  418. data/vendor/board-maps/yaml/WT32_ETH01.yml +0 -8
  419. data/vendor/board-maps/yaml/WiFiduino32S3.yml +0 -27
  420. data/vendor/board-maps/yaml/WiFiduinoV2.yml +0 -27
  421. data/vendor/board-maps/yaml/Wifiduino32.yml +0 -40
  422. data/vendor/board-maps/yaml/XIAO_ESP32C3.yml +0 -22
  423. data/vendor/board-maps/yaml/XIAO_ESP32S3.yml +0 -37
  424. data/vendor/board-maps/yaml/YD_RP2040.yml +0 -48
  425. data/vendor/board-maps/yaml/atmegazero_esp32s2.yml +0 -30
  426. data/vendor/board-maps/yaml/connaxio_espoir.yml +0 -24
  427. data/vendor/board-maps/yaml/esp32vn_iot_uno.yml +0 -31
  428. data/vendor/board-maps/yaml/fm_devkit.yml +0 -15
  429. data/vendor/board-maps/yaml/heltec_wifi_32_lora_V3.yml +0 -41
  430. data/vendor/board-maps/yaml/heltec_wifi_kit_32.yml +0 -38
  431. data/vendor/board-maps/yaml/heltec_wifi_kit_32_V3.yml +0 -42
  432. data/vendor/board-maps/yaml/heltec_wifi_lora_32.yml +0 -36
  433. data/vendor/board-maps/yaml/heltec_wifi_lora_32_V2.yml +0 -36
  434. data/vendor/board-maps/yaml/heltec_wireless_stick.yml +0 -36
  435. data/vendor/board-maps/yaml/heltec_wireless_stick_LITE.yml +0 -36
  436. data/vendor/board-maps/yaml/openkb.yml +0 -37
  437. data/vendor/board-maps/yaml/roboheart_hercules.yml +0 -26
  438. data/vendor/board-maps/yaml/sensesiot_weizen.yml +0 -35
  439. data/vendor/board-maps/yaml/uPesy_WROOM.yml +0 -36
  440. data/vendor/board-maps/yaml/uPesy_WROVER.yml +0 -36
  441. data/vendor/board-maps/yaml/unphone8.yml +0 -42
  442. data/vendor/board-maps/yaml/unphone9.yml +0 -42
  443. data/vendor/board-maps/yaml/wifi_kit_8.yml +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1cefcc0106edf784dea04c7217bf8475887402da89aacf0c9b578185ee4c152
4
- data.tar.gz: '08b1bcaac7973a3eb5b2fbbae7b7227cfbdec9250dffe9d41a95a1fe0a90565b'
3
+ metadata.gz: e165f677a5af1dc4d7a924e7b2387bafaca1c84c754b72eac8960fcea42117a7
4
+ data.tar.gz: f1c795bff6917284d3b31fbff4d1ea44de78f2871492b466f45d9f36abc340af
5
5
  SHA512:
6
- metadata.gz: a0344465f58fe0e23fb579d7e903a93ecaf49a923270991c471caf674a34bf5fece80e56598878a2e690966461d2f08db15b49eccd58c09de7d2140803f2f77e
7
- data.tar.gz: 7395727636ea674940fd84a7fdf55b61a32dde2329cf2f561aea7e73ea177098e8346ea7fd2a5ea0b4d6f035a0b88d2e4386ba33a3356966b9afe4322a53912c
6
+ metadata.gz: c897cca6c4a59ce2fbd73e517c380ba272ad0c6a621a9ba7034dffe1f83e151c21cad0671df872443eff8376ff646933a0a68cda07e25860869a06a9306fcfac
7
+ data.tar.gz: 6f90da47a6bb960400d9986668b2f9320248616f0a4f0a12a930e9ffda4dad0d75e1c08ecf8aae223f8882b72bd56e73dfe113a79c3973ff91c326c4ed31f941
@@ -36,7 +36,7 @@ jobs:
36
36
  - name: IRremote
37
37
  version: 4.1.2
38
38
  - name: Ethernet
39
- - name: WiFi
39
+ - name: WiFiNINA
40
40
  - name: Adafruit NeoPixel
41
41
 
42
42
  steps:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,84 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.13.4
4
+
5
+ ### New Components
6
+
7
+ - Generic PIR sensors:
8
+ - Class: `Denko::Sensor::GenericPIR`
9
+ - Based on `Denko::DigitalIO::Input` class.
10
+ - Tested with AS312 and HC-SR501 sensors. Should work with AM312 and others.
11
+
12
+ - Bosch BMP 180 Temperature + Pressure Sensor:
13
+ - Class: `Denko::Sensor::BMP180`
14
+ - Connects via I2C bus. Ruby driver.
15
+ - Similar to BMP280, but fewer features (older version).
16
+ - Should work for BMP085 sensor as well.
17
+
18
+ - SHT30/31/35 Temperature + Humidity Sensor:
19
+ - Class: `Denko::Sensor::SHTX`
20
+ - Connects via I2C bus. Ruby driver.
21
+ - One-shot reading mode only.
22
+
23
+ - RCWL-9620 Ultrasonic Distance Sensor:
24
+ - Class: `Denko::Sensor::RCWL9620`
25
+ - Connects via I2C bus. Ruby driver.
26
+ - Very simple interface. `#read` returns a distance in mm.
27
+
28
+ ### Component Changes
29
+
30
+ - HTU21D:
31
+ - Humidity values outside the 0-100% range will be clipped to those values automatically.
32
+
33
+ ### Example Changes
34
+
35
+ - Added a simple button example, separate from tutorial.
36
+ - Standardize temp/pressure/humidity sensor examples (except DHT, DS18B20, HTU21D) so readings display the same.
37
+
38
+ ### Bug Fixes
39
+
40
+ - Fixed bug where `BMP280`` sensor class would not autoload.
41
+
42
+ ## 0.13.3
43
+
44
+ ### Board Updates / Fixes
45
+
46
+ - Arduino UNO R4 Minima & Wi-Fi (`--target ra4m1`):
47
+ - RA4M1 fully tested
48
+ - Only IR-remote and WS2812 libraries not working. Disabled temporarily.
49
+
50
+ - Arduino Nano Every
51
+ - ATmega4809 fully tested and issues fixed
52
+ - Works similarly to the regular AVR chips
53
+
54
+ - SAMD21
55
+ - Changed serial acknowledgement threshold to 128 instead of 64. More stable, but might be slightly slower performing.
56
+
57
+ ### Network Chip Updates / Fixes
58
+
59
+ - WINC1500
60
+ - Added support for WiFi101 library
61
+ - Tested on Arduino MKR 1000
62
+
63
+ - NINA-W102
64
+ - Added conditions to select the WiFiNINA library on appropriate hardware.
65
+ - Untested in hardware
66
+
67
+ ### API Changes
68
+
69
+ - Default aux message size is now 784 bytes (768 + 16) instead of (512 + 16)
70
+
71
+ ### Component Changes
72
+
73
+ - WS2812
74
+ - Larger aux message size now allows up to 256 pixels (3 bytes per pixel) on a strip
75
+
76
+ ### Bug Fixes
77
+
78
+ - 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.
79
+ - The `val` variable in Arduino is now 16-bit instead of 8-bit.
80
+ - Fixed instances where `Minitest` was referred to as `MiniTest`, causing tests to fail.
81
+
3
82
  ## 0.13.2
4
83
 
5
84
  ### New Boards
data/DEPS_CLI.md CHANGED
@@ -21,6 +21,8 @@ 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
+ arduino-cli lib install WiFi101
25
+ arduino-cli lib install WiFiNINA
24
26
  arduino-cli lib install IRremote@4.1.2
25
27
  arduino-cli lib install IRremoteESP8266@2.8.4
26
28
  arduino-cli lib install ESP32Servo
@@ -34,6 +36,7 @@ arduino-cli core install arduino:megaavr
34
36
  arduino-cli lib install Servo
35
37
  arduino-cli lib install Ethernet
36
38
  arduino-cli lib install WiFi
39
+ arduino-cli lib install WiFiNINA
37
40
  arduino-cli lib install IRremote@4.1.2
38
41
  arduino-cli lib install "Adafruit NeoPixel"
39
42
  ````
@@ -47,6 +50,8 @@ arduino-cli core install arduino:renesas_uno
47
50
  arduino-cli lib install Servo
48
51
  arduino-cli lib install Ethernet
49
52
  arduino-cli lib install WiFi
53
+ arduino-cli lib install WiFi101
54
+ arduino-cli lib install WiFiNINA
50
55
  arduino-cli lib install IRremote@4.1.2
51
56
  arduino-cli lib install "Adafruit NeoPixel"
52
57
  ````
data/DEPS_IDE.md CHANGED
@@ -40,6 +40,8 @@ All platforms will require libraries to be installed. To install a library do th
40
40
  Servo by Michael Margolis, Arduino
41
41
  Ethernet by Various
42
42
  WiFi by Arduino
43
+ WiFi101 by Arduino
44
+ WiFiNINA by Arduino
43
45
  IRremote @ v4.1.2 by shirriff, z3to, ArminJo
44
46
  IRremoteESP82666 @ v2.8.5 by David Conran, Sebastien Warin
45
47
  ESP32Servo by Kevin Harrington, John K. Bennett
@@ -56,6 +58,7 @@ All platforms will require libraries to be installed. To install a library do th
56
58
  Servo by Michael Margolis, Arduino
57
59
  Ethernet by Various
58
60
  WiFi by Arduino
61
+ WiFiNINA by Arduino
59
62
  IRremote @ v4.1.2 by shirriff, z3to, ArminJo
60
63
  Adafruit NeoPixel by Adafruit
61
64
  ````
@@ -72,6 +75,8 @@ All platforms will require libraries to be installed. To install a library do th
72
75
  Servo by Michael Margolis, Arduino
73
76
  Ethernet by Various
74
77
  WiFi by Arduino
78
+ WiFi101 by Arduino
79
+ WiFiNINA by Arduino
75
80
  IRremote @ v4.1.2 by shirriff, z3to, ArminJo
76
81
  Adafruit NeoPixel by Adafruit
77
82
  ````
data/HARDWARE.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  :green_heart: Full support :yellow_heart: Partial support :heart: Planned. No support yet :question: Works in theory. Untested in real hardware.
4
4
 
5
- ### AVR/MegaAVR Based in Arduino Products (and Clones)
5
+ ### AVR/MegaAVR Based Arduino Products (and Clones)
6
6
  [![AVR Build Status](https://github.com/denko-rb/denko/actions/workflows/build_avr.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_avr.yml)
7
7
  [![MegaAVR Build Status](https://github.com/denko-rb/denko/actions/workflows/build_megaavr.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_megaavr.yml)
8
8
 
@@ -13,7 +13,7 @@
13
13
  | ATmega32u4 | :green_heart: | Leonardo, Micro, Leonardo ETH, Esplora, LilyPad USB |
14
14
  | ATmega1280 | :green_heart: | Mega |
15
15
  | ATmega2560 | :green_heart: | Mega2560, Arduino Mega ADK |
16
- | ATmega4809 | :question: | Nano Every, Uno WiFi Rev2 | No hardware to test, but should work
16
+ | ATmega4809 | :green_heart: | Nano Every, Uno WiFi Rev2 |
17
17
 
18
18
  **Note:** Only USB boards listed. Any board with a supported chip should work, once you can flash it and connect to serial.
19
19
 
@@ -25,16 +25,23 @@
25
25
  | Chip | Status | Products | Notes |
26
26
  | :-------- | :------: | :--------------- |------ |
27
27
  | ATSAM3X8E | :yellow_heart: | Due | Native USB port. Tone, and IR Out don't work.
28
- | ATSAMD21 | :green_heart: | Zero, M0, M0 Pro | Native USB port
29
- | RA4M1 | :yellow_heart: | Uno R4 Minima, Uno R4 WiFi | IR Out and WS2812 unsupported. UART & Wi-Fi untested
28
+ | ATSAMD21 | :green_heart: | Zero, M0 Series, Nano 33 IOT, MKR WiFi 1010 | Native USB
29
+ | RA4M1 | :yellow_heart: | Uno R4 Minima, Uno R4 WiFi | IR and WS2812 libraries don't support this yet
30
30
 
31
- ### Arduino Accessories
31
+ ### Arduino Networking
32
32
 
33
- | Chip | Status | Product | Notes |
33
+ | Chip | Status | Products | Notes |
34
34
  | :-------- | :------: | :--------------- |------ |
35
35
  | Wiznet W5100/5500 | :green_heart: | Ethernet Shield | Wired Ethernet for Uno/Mega pin-compatibles
36
- | HDG204 + AT32UC3 | :question: | WiFi Shield | WiFi for Uno. No hardware to test, but compiles
37
- | ATWINC1500 | :question: | WiFi Shield 101 | Same as above, high memory use, Mega only
36
+ | HDG204 + AT32UC3 | :question: | WiFi Shield | Compiles, but no hardware
37
+ | ATWINC1500 | :green_heart: | MKR1000, WiFi Shield 101 | #define WIFI_101 for shield. Automatic for MKR1000
38
+ | u-blox NINA-W102 | :question: | Uno WiFi Rev 2, MKR WiFi 1010, Nano 33 IOT | Should work. No hardware
39
+
40
+ ### AVR Chips from [MightyCore](https://github.com/MCUdude/MightyCore)
41
+
42
+ | Chip | Status | Products | Notes |
43
+ | :-------- | :------: | :--------------- |------ |
44
+ | ATmega1284 | :heart: | Used in many 8-bit 3D printer boards. |
38
45
 
39
46
  ### Espressif Chips with Built-In Wi-Fi
40
47
  [![ESP8266 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp8266.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp8266.yml)
@@ -90,12 +97,12 @@
90
97
  | I2C Bit Bang | :heart: | S | `I2C::BitBang` | Any pins
91
98
  | SPI | :green_heart: | H | `SPI::Bus` | Predetermined pins from IDE
92
99
  | SPI Bit Bang | :green_heart: | S | `SPI::BitBang` | Any pins
93
- | UART | :green_heart: | H | `UART::Hardware` | Except Atmega328, ATmega168, RA4M1
100
+ | UART | :green_heart: | H | `UART::Hardware` | Except Atmega328, ATmega168
94
101
  | UART Bit Bang | :green_heart: | S | `UART::BitBang` | Only ATmega328, ATmega168
95
102
  | Maxim OneWire | :green_heart: | S | `OneWire::Bus` | No overdrive
96
- | Infrared Emitter | :green_heart: | S | `PulseIO::IRTransmitter` | Except RA4M1
103
+ | Infrared Emitter | :green_heart: | S | `PulseIO::IRTransmitter` | Except SAM3X, RA4M1
97
104
  | Infrared Receiver | :heart: | S | `PulseIO::IRReceiver` | Doable with existing library
98
- | WS2812 | :green_heart: | S | See LED table | Except RP2040
105
+ | WS2812 | :green_heart: | S | See LED table | Except RP2040, RA4M1
99
106
  | ESP32-PCNT | :heart: | H | - | Only ESP32. Pulse counter (for encoders)
100
107
  | ESP32-MCPWM | :heart: | H | - | Only ESP32. Motor control PWM
101
108
 
@@ -118,6 +125,7 @@ Polling and reading follow a call and response pattern.
118
125
  | LED | :green_heart: | Digi/Ana Out | `LED::Base` |
119
126
  | RGB LED | :green_heart: | Digi/Ana Out | `LED::RGB` |
120
127
  | 7 Segment Display | :yellow_heart: | Digital Out | `LED::SevenSegment` | No decimal point
128
+ | 8x8 LED (MAX7219) | :heart: | SPI | `LED::MAX7219` |
121
129
  | TM1637 | :heart: | BitBang SPI | `LED::TM1637` | 4x 7 Segment + Colon
122
130
  | Neopixel / WS2812B | :yellow_heart: | Adafruit Library | `LED::WS2812` | Not working on RP2040
123
131
  | Dotstar / APA102 | :green_heart: | SPI | `LED::APA102` |
@@ -128,6 +136,12 @@ Polling and reading follow a call and response pattern.
128
136
  | :--------------- | :------: | :-------- | :--------------- |------ |
129
137
  | HD44780 LCD | :green_heart: | Digital Out, Output Register | `Display::HD44780` |
130
138
  | SSD1306 OLED | :yellow_heart: | I2C | `Display::SSD1306` | 1 font, some graphics
139
+ | ST7565R (128x64 Mono) | :heart: | SPI | `Display::ST7565R` |
140
+ | ST7735S (160x128 RGB) | :heart: | SPI | `Display::ST7735S` |
141
+ | ILI9341 (240x320 RGB) | :heart: | SPI | `Display::ILI9341` |
142
+ | GC9107 (128x128 RGB) | :heart: | SPI | `Display::GC9107` |
143
+ | GC9A01 (240x240 Round) | :heart: | SPI | `Display::GCA9A01` |
144
+ | IL0373 (212x104 E-Paper) | :heart: | SPI | `Display::IL0373` |
131
145
 
132
146
  ### Sound
133
147
 
@@ -141,9 +155,12 @@ Polling and reading follow a call and response pattern.
141
155
  | :--------------- | :------: | :-------- | :--------------- |------ |
142
156
  | Generic Hobby Servo | :green_heart: | Servo/ESC PWM | `Motor::Servo` | Max depends on PWM channel count
143
157
  | Generic ESC | :yellow_heart: | Servo/ESC PWM | `Motor::Servo` | Works. Needs its own class.
158
+ | PCA9685 | :heart: | I2C | `PulseIO::PCA9685` | 16ch 12-bit PWM for servo or LED
144
159
  | L298N | :green_heart: | Digi + PWM Out | `Motor::L298` | H-Bridge DC motor driver
160
+ | DRV8833 | :heart: | Digi + PWM Out | `Motor::DRV8833` | H-Bridge DC motor driver
145
161
  | A3967 | :green_heart: | Digital Out | `Motor::Stepper` | 1ch microstepper (EasyDriver)
146
- | PCA9685 | :heart: | I2C | `PulseIO::PCA9685` | 16ch 12-bit PWM for servo or LED
162
+ | A4988 | :yellow_heart: | DigitalOut | `Motor::Stepper` | 1-ch microstepper
163
+ | TMC2209 | :heart: | - | - | 1ch silent stepper driver
147
164
 
148
165
  ### I/O Expansion
149
166
 
@@ -160,55 +177,73 @@ Polling and reading follow a call and response pattern.
160
177
 
161
178
  ### Environmental Sensors
162
179
 
163
- | Name | Status | Interface | Component Class | Notes |
164
- | :--------------- | :------: | :-------- | :--------------- |------ |
165
- | DS18B20 | :green_heart: | OneWire | `Sensor::DS18B20` | Temp
166
- | DHT 11/21/22 | :green_heart: | Digi In/Out | `Sensor::DHT` | Temp/RH
167
- | SHT30 | :heart: | I2C | `Sensor::SHT30` | Temp/RH
168
- | QMP6988 | :heart: | I2C | `Sensor::QMP6988` | Pressure
169
- | BME280 | :green_heart: | I2C | `Sensor::BME280` | Temp/RH/Press
170
- | BMP280 | :green_heart: | I2C | `Sensor::BMP280` | Temp/Press
171
- | HTU21D | :green_heart: | I2C | `Sensor::HTU21D` | Temp/RH. User register read not implemented.
172
- | HTU31D | :green_heart: | I2C | `Sensor::HTU31D` | Temp/RH. Diagnostic read not implemented.
173
- | AHT10/15 | :green_heart: | I2C | `Sensor::AHT10` | Temp/RH. Always uses calibrated mode.
174
- | AHT20/21/25 | :green_heart: | I2C | `Sensor::AHT20` | Temp/RH. Always uses calibrated mode + CRC.
175
- | ENS160 | :heart: | I2C | `Sensor::ENS160` | CO2e/TVOC/AQI
176
- | AGS02MA | :heart: | I2C | `Sensor::AGS02MA` | TVOC
177
- | MAX31850 | :heart: | OneWire | `Sensor::MAX31850` | Thermocouple Amplifier
180
+ | Name | Status | Interface | Component Class | Type | Notes |
181
+ | :--------------- | :------: | :-------- | :--------------- |--------------- | ---------------------- |
182
+ | MAX31850 | :heart: | OneWire | `Sensor::MAX31850` | Thermocouple |
183
+ | MAX6675 | :heart: | SPI | `Sensor::MAX6675` | Thermocouple |
184
+ | DS18B20 | :green_heart: | OneWire | `Sensor::DS18B20` | Temp |
185
+ | DHT11/21/22 | :green_heart: | Digi In/Out | `Sensor::DHT` | Temp / RH |
186
+ | SHT30/31/35 | :green_heart: | I2C | `Sensor::SHT3X` | Temp / RH | M5Stack ENV III, one-shot only
187
+ | QMP6988 | :green_heart: | I2C | `Sensor::QMP6988` | Temp / Press | M5Stack ENV III
188
+ | BMP180 | :green_heart: | I2C | `Sensor::BMP180` | Temp / Press |
189
+ | BMP280 | :green_heart: | I2C | `Sensor::BMP280` | Temp / Press |
190
+ | BME280 | :green_heart: | I2C | `Sensor::BME280` | Temp / Press / RH |
191
+ | HTU21D | :green_heart: | I2C | `Sensor::HTU21D` | Temp / RH | No user register read
192
+ | HTU31D | :green_heart: | I2C | `Sensor::HTU31D` | Temp / RH | No diagnostic read
193
+ | AHT10/15 | :green_heart: | I2C | `Sensor::AHT10` | Temp / RH |
194
+ | AHT20/21/25 | :green_heart: | I2C | `Sensor::AHT20` | Temp / RH |
195
+ | ENS160 | :heart: | I2C | `Sensor::ENS160` | CO2e / TVOC / AQI |
196
+ | AGS02MA | :heart: | I2C | `Sensor::AGS02MA` | TVOC |
197
+ | SCD40 | :heart: | I2C | `Sensor::SDC40` | Temp / Press / CO2 |
178
198
 
179
199
  ### Light Sensors
180
200
 
181
201
  | Name | Status | Interface | Component Class | Notes |
182
202
  | :--------------- | :------: | :-------- | :--------------- |------ |
183
203
  | BH1750 | :heart: | Digital In | `Sensor::BH1750` | Ambient Light
184
- | HC-SR501 | :yellow_heart: | Digital In | `DigitalIO::Input` | PIR. Needs class: `Sensor::HC-SR501`
185
- | AS312 | :heart: | I2C | `Sensor::AS312` | PIR
204
+ | TCS34725 | :heart: | I2C | `Sensor::TCS34725` | RGB
186
205
  | APDS9960 | :heart: | I2C | `Sensor::APDS9960` | Proximity, RGB, Gesture
187
206
 
207
+ ### PIR Motion Sensors
208
+ | Name | Status | Interface | Component Class | Notes |
209
+ | :--------------- | :------: | :-------- | :--------------- |------ |
210
+ | HC-SR501 | :green_heart: | Digital In | `Sensor::GenericPIR` |
211
+ | AS312 | :green_heart: | Digital In | `Sensor::GenericPIR` |
212
+
188
213
  ### Distance Sensors
189
214
 
190
215
  | Name | Status | Interface | Component Class | Notes |
191
216
  | :--------------- | :------: | :-------- | :--------------- |------ |
192
217
  | HC-SR04 | :heart: | Digi In/Out | `Sensor::HCSR04` | Ultrasonic, 20-4000mm
193
- | RCWL-9620 | :heart: | I2C | `Sensor::RCWL9260` | Ultrasonic, 20-4500mm
218
+ | RCWL-9620 | :green_heart: | I2C | `Sensor::RCWL9260` | Ultrasonic, 20-4500mm
194
219
  | VL53L0X | :heart: | I2C | `Sensor::VL53L0X` | Laser, 30 - 1000mm
195
220
  | GP2Y0E03 | :heart: | I2C | `Sensor::GP2Y0E03` | Infrared, 40 - 500mm
196
221
 
197
- ### Motion Sensors
222
+ ### Inertial Measurement Units
198
223
 
199
224
  | Name | Status | Interface | Component Class | Notes |
200
225
  | :--------------- | :------: | :-------- | :--------------- |------ |
201
- | ADXL345 | :heart: | I2C | `Sensor::ADXL345` | 3-axis Accelerometer
202
- | IT3205 | :heart: | I2C | `Sensor::IT3205` | 3-axis Gyroscope
203
- | HMC5883L | :heart: | I2C | `Sensor::HMC5883L` | 3-axis Compass
204
- | MPU6886 | :heart: | I2C | `Sensor::MPU6886` | 3-axis Gyro + Accel
226
+ | ADXL345 | :heart: | I2C | `Sensor::ADXL345` | Accelerometer
227
+ | IT3205 | :heart: | I2C | `Sensor::IT3205` | Gyroscope
228
+ | HMC5883L | :heart: | I2C | `Sensor::HMC5883L` | Compass
229
+ | MPU6886 | :heart: | I2C | `Sensor::MPU6886` | Gyro + Accelerometer
230
+ | BMI160 | :heart: | I2C | `Sensor::BMI160` | Gyro + Accelerometer
231
+ | LSM6DS3 | :heart: | I2C | `Sensor:LSM6DS3` | Gyro + Accelerometer
205
232
 
206
233
  ### Real Time Clocks
207
234
 
208
235
  | Name | Status | Interface | Component Class | Notes |
209
236
  | :--------------- | :------: | :-------- | :--------------- |------ |
210
237
  | DS1302 | :heart: | I2C | `RTC::DS1302` |
238
+ | DS1307 | :heart: | I2C | `RTC::DS1307` |
211
239
  | DS3231 | :green_heart: | I2C | `RTC::DS3231` | Alarms not implemented
240
+ | PCF8563 | :heart: | I2C | `RTC::PCF8563` |
241
+
242
+ ### GPS
243
+
244
+ | Name | Status | Interface | Component Class | Notes |
245
+ | :--------------- | :------: | :-------- | :--------------- |------ |
246
+ | GT-U7 | :heart: | UART | - |
212
247
 
213
248
  ### Miscellaneous
214
249
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Denko 0.13.1 [![Test Status](https://github.com/denko-rb/denko/actions/workflows/ruby.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/ruby.yml)
1
+ # Denko 0.13.4 [![Test Status](https://github.com/denko-rb/denko/actions/workflows/ruby.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/ruby.yml)
2
2
  ### Ruby Meets Microcontrollers
3
3
  Denko gives you a high-level Ruby interface to low-level hardware, without writing microcontroller code. Use LEDs, buttons, sensors and more, just as easily as any Ruby object:
4
4
 
@@ -23,10 +23,10 @@ High-level abstraction in Ruby makes hardware classes easy to implement, with in
23
23
  Full list of supported mircocontroller platforms, interfaces, and peripherals is located [here](HARDWARE.md).
24
24
 
25
25
  ##### denko-piboard
26
- There's an add-on in development, [denko-piboard](https://github.com/denko-rb/denko-piboard), which supports the Raspberry Pi's built in GPIO pins, as `Denko::PiBoard`, class-compatible with `Denko::Board`. Connect peripherals directly to the Pi, with no microcontroller between, then use the peripheral classes from this gem.
26
+ The add-on gem, [denko-piboard](https://github.com/denko-rb/denko-piboard), allows you to use a Raspberry Pi's built in GPIO pins in place of an attached microcontroller. Connect things directly to the Pi, and use the same peripheral classes from this gem.
27
27
 
28
28
  ##### mruby-denko
29
- A solo Raspberry Pi (or other small SBC + microcontroller) is a great standalone setup if your project needs the compute power anyway, but what if you don't? Why not run Ruby on the microcontroller itself?
29
+ A solo Raspberry Pi (or other small SBC + microcontroller) is a great standalone setup if your project needs the compute power anyway, but what if you don't? Why not run Ruby on the microcontroller itself?
30
30
 
31
31
  That's the goal of [mruby-denko](https://github.com/denko-rb/mruby-denko): write mruby on the ESP32, using peripheral classes as close to this gem as possible. Still early in development, so limited features, but already usable.
32
32
 
@@ -22,8 +22,13 @@
22
22
  #
23
23
  # July 15 2023 | i7 8700k CPU | CRuby 3.2.1 | 100 frames | 1 Mhz I2C frequency | Average of 3 runs
24
24
  #
25
- # Arduino Uno R4 : 7.5 fps (native USB @ 115200, 32-byte I2C limit, no I2C level shifter)
26
- # Arduino Uno R4 : 7.8 fps (native USB @ 230400, 32-byte I2C limit, no I2C level shifter)
25
+ # Arduino Uno R4 WiFi : 7.5 fps (USB through ESP32-S3 @ 115200, 32-byte I2C limit, no I2C level shifter)
26
+ # Arduino Uno R4 WiFi : 7.8 fps (USB through ESP32-S3 @ 230400, 32-byte I2C limit, no I2C level shifter)
27
+ #
28
+ # August 13 2023 | i7 8700k CPU | CRuby 3.2.1 | 100 frames | 1 Mhz I2C frequency | Average of 3 runs
29
+ #
30
+ # Arduino Nano Every : 9.2 fps (USB through ATSAMD11 @ 115200, 128-byte I2C limit, no I2C level shifter)
31
+ # Arduino Nano Every : 13.0 fps (USB through ATSAMD11 @ 230400, 128-byte I2C limit, no I2C level shifter)
27
32
  #
28
33
  require 'bundler/setup'
29
34
  require 'denko'
@@ -0,0 +1,48 @@
1
+ #
2
+ # This example combines the SHTX and QMP6988 examples. The M5Stack ENV III unit
3
+ # contains both sensors, accessible over a single I2C connection.
4
+ #
5
+ require 'bundler/setup'
6
+ require 'denko'
7
+
8
+ board = Denko::Board.new(Denko::Connection::Serial.new)
9
+ bus = Denko::I2C::Bus.new(board: board, pin: :SDA)
10
+ sht = Denko::Sensor::SHT3X.new(bus: bus) # address: 0x44 default
11
+ qmp = Denko::Sensor::QMP6988.new(bus: bus) # address: 0x70 default
12
+
13
+ # Configure for higher accuracy.
14
+ sht.repeatability = :high
15
+ qmp.temperature_samples = 2
16
+ qmp.pressure_samples = 16
17
+ qmp.iir_coefficient = 2
18
+
19
+ # Buggy on ESP32-S3 in forced mode. Data registers return zeroes on all but first read.
20
+ # Can't recreate on ESP32 V1, AVR or SAMD21. Put it in contiuous mode just in case.
21
+ qmp.continuous_mode
22
+
23
+ # Get the shared #print_tph_reading method to print readings neatly.
24
+ require_relative '../sensor/neat_tph_readings'
25
+
26
+ # How many degrees C the two temperature values can differ by before a warning.
27
+ TOLERANCE = 0.50
28
+
29
+ loop do
30
+ # Read both sensors.
31
+ qmp_reading = qmp.read
32
+ sht_reading = sht.read
33
+
34
+ # Retry immediately if either failed.
35
+ next unless (sht_reading && qmp_reading)
36
+
37
+ # Warn if large gap between temperature readings.
38
+ difference = (qmp_reading[:temperature] - sht_reading[:temperature]).abs
39
+ if (difference > TOLERANCE)
40
+ puts "WARNING: temperature values differed by more than #{TOLERANCE}\xC2\xB0C (#{difference.round(4)} \xC2\xB0C actual)"
41
+ end
42
+
43
+ # Combine values from both sensors, averaging their temperatures.
44
+ average_temperature = (qmp_reading[:temperature] + sht_reading[:temperature]) / 2.0
45
+ print_tph_reading(temperature: average_temperature, humidity: sht_reading[:humidity], pressure: qmp_reading[:pressure])
46
+
47
+ sleep 5
48
+ end
@@ -0,0 +1,13 @@
1
+ #
2
+ # Simple button example.
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ board = Denko::Board.new(Denko::Connection::Serial.new)
8
+ button = Denko::DigitalIO::Button.new(board: board, pin: 5, pullup: true)
9
+
10
+ button.up { puts "Button released!" }
11
+ button.down { puts "Button pressed!" }
12
+
13
+ sleep
@@ -7,7 +7,6 @@ require 'denko'
7
7
  board = Denko::Board.new(Denko::Connection::Serial.new)
8
8
  buzzer = Denko::PulseIO::Buzzer.new(board: board, pin: 9)
9
9
 
10
- =begin
11
10
  C4 = 262
12
11
  D4 = 294
13
12
  E4 = 330
@@ -29,42 +28,3 @@ end
29
28
 
30
29
  buzzer.stop
31
30
  board.finish_write
32
- =end
33
-
34
-
35
-
36
- AS3 = 233
37
- BN3 = 257
38
- DS4 = 311
39
- FN4 = 349
40
- FS4 = 370
41
- GS4 = 415
42
-
43
- notes = [
44
- [AS3, 1], [AS3, 1], [AS3, 1], [AS3, 1],
45
- [AS3, 0.75], [BN3, 0.75], [DS4, 0.5], [AS3, 1], [AS3, 0.5], [nil, 0.5],
46
- [AS3, 0.75], [BN3, 0.75], [DS4, 0.5], [AS3, 1], [AS3, 0.5], [nil, 0.5],
47
- [AS3, 0.75], [BN3, 0.75], [DS4, 0.5], [FN4, 1], [FN4, 0.5], [nil, 0.5],
48
- [GS4, 0.75], [FS4, 0.75], [FN4, 0.5], [DS4, 1], [DS4, 0.5], [nil, 0.5],
49
- [GS4, 0.75], [FS4, 0.75], [FN4, 0.5], [DS4, 1], [DS4, 0.5], [nil, 0.5],
50
- [AS3, 0.75], [BN3, 0.75], [DS4, 0.5], [AS3, 1], [AS3, 0.5], [nil, 0.5],
51
- [AS3, 0.75], [BN3, 0.75], [DS4, 0.5], [AS3, 1], [AS3, 0.5], [nil, 0.5],
52
- ]
53
-
54
- bpm = 135
55
- beat_time = 60.to_f / bpm
56
-
57
- notes.each do |note|
58
- if note[0]
59
- buzzer.tone(note[0])
60
- sleep(note[1] * beat_time)
61
- else
62
- buzzer.stop
63
- sleep((note[1] * beat_time))
64
- end
65
- buzzer.stop
66
- buzzer.micro_delay(5)
67
- end
68
-
69
- buzzer.stop
70
- board.finish_write
@@ -6,10 +6,14 @@ require 'denko'
6
6
 
7
7
  board = Denko::Board.new(Denko::Connection::Serial.new)
8
8
  bus = Denko::I2C::Bus.new(board: board, pin: :SDA)
9
- aht10 = Denko::Sensor::AHT10.new(bus: bus)
9
+ sensor = Denko::Sensor::AHT10.new(bus: bus) # address: 0x38 default
10
10
 
11
- aht10.poll(2) do |reading|
12
- puts "Polled Reading: #{reading[:temperature].round(3)} \xC2\xB0C | #{reading[:humidity].round(3)} % RH"
11
+ # Get the shared #print_tph_reading method to print readings neatly.
12
+ require_relative 'neat_tph_readings'
13
+
14
+ # Poll it and print readings.
15
+ sensor.poll(5) do |reading|
16
+ print_tph_reading(reading)
13
17
  end
14
18
 
15
19
  sleep
@@ -6,10 +6,14 @@ require 'denko'
6
6
 
7
7
  board = Denko::Board.new(Denko::Connection::Serial.new)
8
8
  bus = Denko::I2C::Bus.new(board: board, pin: :SDA)
9
- aht20 = Denko::Sensor::AHT20.new(bus: bus)
9
+ sensor = Denko::Sensor::AHT20.new(bus: bus) # address: 0x38 default
10
10
 
11
- aht20.poll(2) do |reading|
12
- puts "Polled Reading: #{reading[:temperature].round(3)} \xC2\xB0C | #{reading[:humidity].round(3)} % RH"
11
+ # Get the shared #print_tph_reading method to print readings neatly.
12
+ require_relative 'neat_tph_readings'
13
+
14
+ # Poll it and print readings.
15
+ sensor.poll(5) do |reading|
16
+ print_tph_reading(reading)
13
17
  end
14
18
 
15
19
  sleep
@@ -5,28 +5,11 @@ require 'bundler/setup'
5
5
  require 'denko'
6
6
 
7
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
8
  bus = Denko::I2C::Bus.new(board: board, pin: :SDA)
25
9
 
26
- sensor = Denko::Sensor::BME280.new(bus: bus, address: 0x76)
27
-
10
+ sensor = Denko::Sensor::BME280.new(bus: bus) # address: 0x76 default
28
11
  # Use A BMP280 with no humidity instead.
29
- # sensor = Denko::Sensor::BMP280.new(bus: bus, address: 0x76)
12
+ # sensor = Denko::Sensor::BMP280.new(bus: bus) # address: 0x76
30
13
 
31
14
  # Default reading mode is oneshot ("forced" in datasheet).
32
15
  # sensor.oneshot_mode
@@ -44,32 +27,12 @@ sensor = Denko::Sensor::BME280.new(bus: bus, address: 0x76)
44
27
  # Print raw config register bits.
45
28
  # print sensor.config_register_bits
46
29
 
47
- def display_reading(reading)
48
- # Time
49
- print "#{Time.now.strftime '%Y-%m-%d %H:%M:%S'} - "
50
-
51
- # Temperature
52
- formatted_temp = reading[:temperature].round(2).to_s.ljust(5, '0')
53
- print "Temperature: #{formatted_temp} \xC2\xB0C"
54
-
55
- # Pressure
56
- if reading[:pressure]
57
- formatted_pressure = (reading[:pressure] / 101325).round(5).to_s.ljust(7, '0')
58
- print " | Pressure #{formatted_pressure} atm"
59
- end
60
-
61
- # Humidity
62
- if reading[:humidity]
63
- formatted_humidity = reading[:humidity].round(2).to_s.ljust(5, '0')
64
- print " | Humidity #{formatted_humidity} %"
65
- end
66
-
67
- puts
68
- end
30
+ # Get the shared #print_tph_reading method to print readings neatly.
31
+ require_relative 'neat_tph_readings'
69
32
 
70
- # Poll the sensor and print readings.
33
+ # Poll it and print readings.
71
34
  sensor.poll(5) do |reading|
72
- display_reading(reading)
35
+ print_tph_reading(reading)
73
36
  end
74
37
 
75
38
  sleep
@@ -0,0 +1,22 @@
1
+ #
2
+ # Example using a BMP180 sensor over I2C, for temperature and pressure.
3
+ #
4
+ require 'bundler/setup'
5
+ require 'denko'
6
+
7
+ board = Denko::Board.new(Denko::Connection::Serial.new)
8
+ bus = Denko::I2C::Bus.new(board: board, pin: :SDA)
9
+ sensor = Denko::Sensor::BMP180.new(bus: bus) # address: 0x77 default
10
+
11
+ # Enable oversampling for the pressure sensor only (1,2,4, 8).
12
+ # sensor.pressure_samples = 8
13
+
14
+ # Get the shared #print_tph_reading method to print readings neatly.
15
+ require_relative 'neat_tph_readings'
16
+
17
+ # Poll it and print readings.
18
+ sensor.poll(5) do |reading|
19
+ print_tph_reading(reading)
20
+ end
21
+
22
+ sleep