denko 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_atmega_avr.yml +2 -1
  3. data/.github/workflows/build_atmega_megaavr.yml +2 -1
  4. data/.github/workflows/build_atsam3x.yml +1 -0
  5. data/.github/workflows/build_atsamd21.yml +2 -1
  6. data/.github/workflows/build_esp32.yml +4 -2
  7. data/.github/workflows/build_esp32c3.yml +4 -3
  8. data/.github/workflows/build_esp32c6.yml +4 -2
  9. data/.github/workflows/build_esp32h2.yml +4 -2
  10. data/.github/workflows/build_esp32s2.yml +4 -2
  11. data/.github/workflows/build_esp32s3.yml +4 -2
  12. data/.github/workflows/build_esp8266.yml +2 -1
  13. data/.github/workflows/build_ra4m1.yml +1 -0
  14. data/.github/workflows/build_rp2040.yml +4 -3
  15. data/.github/workflows/ruby.yml +1 -1
  16. data/CHANGELOG.md +203 -0
  17. data/DEPS_CLI.md +16 -16
  18. data/DEPS_IDE.md +31 -30
  19. data/MICROCONTROLLERS.md +103 -0
  20. data/PERIPHERALS.md +178 -0
  21. data/README.md +28 -21
  22. data/denko.gemspec +6 -1
  23. data/lib/denko/analog_io/ads1118.rb +5 -5
  24. data/lib/denko/analog_io/ads111x.rb +23 -19
  25. data/lib/denko/analog_io/joystick.rb +87 -0
  26. data/lib/denko/analog_io/potentiometer.rb +1 -5
  27. data/lib/denko/analog_io.rb +22 -8
  28. data/lib/denko/behaviors/bus_controller.rb +2 -1
  29. data/lib/denko/behaviors/bus_peripheral.rb +1 -1
  30. data/lib/denko/behaviors/callbacks.rb +18 -16
  31. data/lib/denko/behaviors/component.rb +0 -4
  32. data/lib/denko/behaviors/lifecycle.rb +1 -1
  33. data/lib/denko/behaviors/listener.rb +9 -3
  34. data/lib/denko/behaviors/multi_pin.rb +4 -6
  35. data/lib/denko/behaviors/poller.rb +11 -2
  36. data/lib/denko/behaviors/reader.rb +109 -21
  37. data/lib/denko/behaviors/single_pin.rb +2 -4
  38. data/lib/denko/behaviors/state.rb +18 -13
  39. data/lib/denko/behaviors/threaded.rb +19 -8
  40. data/lib/denko/behaviors.rb +36 -23
  41. data/lib/denko/board/eeprom.rb +1 -1
  42. data/lib/denko/board/i2c.rb +1 -1
  43. data/lib/denko/board/i2c_bit_bang.rb +9 -5
  44. data/lib/denko/board/map.rb +6 -2
  45. data/lib/denko/board/one_wire.rb +3 -3
  46. data/lib/denko/board/spi.rb +30 -30
  47. data/lib/denko/board/spi_bit_bang.rb +8 -11
  48. data/lib/denko/board.rb +6 -3
  49. data/lib/denko/connection/flow_control.rb +1 -1
  50. data/lib/denko/connection/serial.rb +5 -5
  51. data/lib/denko/digital_io/output.rb +12 -4
  52. data/lib/denko/digital_io/pcf8574.rb +114 -0
  53. data/lib/denko/digital_io/rotary_encoder.rb +10 -6
  54. data/lib/denko/digital_io.rb +24 -6
  55. data/lib/denko/display/canvas.rb +350 -157
  56. data/lib/denko/display/font/bmp_5x7.rb +142 -0
  57. data/lib/denko/display/font/bmp_6x8.rb +142 -0
  58. data/lib/denko/display/font/bmp_8x16.rb +141 -0
  59. data/lib/denko/display/font.rb +22 -0
  60. data/lib/denko/display/hd44780.rb +24 -20
  61. data/lib/denko/display/il0373.rb +186 -0
  62. data/lib/denko/display/mono_oled.rb +193 -0
  63. data/lib/denko/display/pcd8544.rb +154 -0
  64. data/lib/denko/display/pixel_common.rb +83 -0
  65. data/lib/denko/display/sh1106.rb +17 -21
  66. data/lib/denko/display/sh1107.rb +10 -0
  67. data/lib/denko/display/spi_common.rb +35 -0
  68. data/lib/denko/display/spi_epaper_common.rb +30 -0
  69. data/lib/denko/display/ssd1306.rb +6 -228
  70. data/lib/denko/display/ssd1680.rb +14 -0
  71. data/lib/denko/display/ssd1681.rb +8 -0
  72. data/lib/denko/display/ssd168x.rb +227 -0
  73. data/lib/denko/display/st7302.rb +207 -0
  74. data/lib/denko/display/st7565.rb +166 -0
  75. data/lib/denko/display.rb +40 -4
  76. data/lib/denko/eeprom/at24c.rb +67 -0
  77. data/lib/denko/eeprom/board.rb +69 -0
  78. data/lib/denko/eeprom.rb +15 -1
  79. data/lib/denko/helpers/engine_check.rb +13 -0
  80. data/lib/denko/{mutex_stub.rb → helpers/mutex_stub.rb} +6 -0
  81. data/lib/denko/helpers.rb +6 -0
  82. data/lib/denko/i2c/bit_bang.rb +1 -0
  83. data/lib/denko/i2c/bus_common.rb +9 -4
  84. data/lib/denko/i2c/peripheral.rb +5 -1
  85. data/lib/denko/i2c.rb +17 -4
  86. data/lib/denko/led/apa102.rb +1 -3
  87. data/lib/denko/led/base.rb +5 -0
  88. data/lib/denko/led/rgb.rb +16 -10
  89. data/lib/denko/led/seven_segment.rb +1 -1
  90. data/lib/denko/led.rb +17 -8
  91. data/lib/denko/motor/{stepper.rb → a3967.rb} +1 -1
  92. data/lib/denko/motor/servo.rb +16 -6
  93. data/lib/denko/motor.rb +16 -3
  94. data/lib/denko/one_wire/bus.rb +20 -16
  95. data/lib/denko/one_wire/bus_enumerator.rb +25 -14
  96. data/lib/denko/one_wire/helper.rb +4 -2
  97. data/lib/denko/one_wire.rb +18 -5
  98. data/lib/denko/pulse_io/buzzer.rb +2 -6
  99. data/lib/denko/pulse_io/ir_output.rb +1 -5
  100. data/lib/denko/pulse_io/pwm_output.rb +56 -31
  101. data/lib/denko/pulse_io.rb +17 -3
  102. data/lib/denko/rtc/ds3231.rb +4 -3
  103. data/lib/denko/rtc.rb +14 -1
  104. data/lib/denko/sensor/aht.rb +16 -20
  105. data/lib/denko/sensor/bme280.rb +23 -36
  106. data/lib/denko/sensor/bmp180.rb +8 -13
  107. data/lib/denko/sensor/dht.rb +17 -7
  108. data/lib/denko/sensor/ds18b20.rb +5 -4
  109. data/lib/denko/sensor/hdc1080.rb +174 -0
  110. data/lib/denko/sensor/htu21d.rb +17 -6
  111. data/lib/denko/sensor/htu31d.rb +6 -5
  112. data/lib/denko/sensor/jsnsr04t.rb +49 -0
  113. data/lib/denko/sensor/qmp6988.rb +14 -30
  114. data/lib/denko/sensor/rcwl9620.rb +1 -0
  115. data/lib/denko/sensor/sht3x.rb +6 -5
  116. data/lib/denko/sensor/sht4x.rb +125 -0
  117. data/lib/denko/sensor/vl53l0x.rb +58 -0
  118. data/lib/denko/sensor.rb +33 -15
  119. data/lib/denko/spi/base_register.rb +11 -7
  120. data/lib/denko/spi/bus_common.rb +12 -15
  121. data/lib/denko/spi/input_register.rb +6 -6
  122. data/lib/denko/spi/output_register.rb +13 -4
  123. data/lib/denko/spi/peripheral.rb +82 -84
  124. data/lib/denko/spi.rb +20 -10
  125. data/lib/denko/uart/bit_bang.rb +2 -27
  126. data/lib/denko/uart/common.rb +33 -0
  127. data/lib/denko/uart/hardware.rb +1 -26
  128. data/lib/denko/uart.rb +16 -2
  129. data/lib/denko/version.rb +1 -1
  130. data/lib/denko.rb +22 -25
  131. data/lib/denko_cli/targets.rb +7 -7
  132. data/lib/denko_cli/targets.txt +19 -20
  133. data/src/lib/Denko.cpp +26 -13
  134. data/src/lib/Denko.h +4 -4
  135. data/src/lib/DenkoDefines.h +7 -26
  136. data/src/lib/DenkoLEDArray.cpp +1 -8
  137. data/src/lib/DenkoSPI.cpp +31 -29
  138. data/src/lib/DenkoSPIBB.cpp +12 -14
  139. data/test/analog_io/input_test.rb +1 -1
  140. data/test/analog_io/potentiometer_test.rb +2 -2
  141. data/test/behaviors/bus_peripheral_test.rb +4 -4
  142. data/test/behaviors/callbacks_test.rb +20 -10
  143. data/test/behaviors/component_test.rb +18 -8
  144. data/test/board/board_test.rb +9 -9
  145. data/test/board/one_wire_test.rb +25 -14
  146. data/test/board/spi_test.rb +31 -15
  147. data/test/digital_io/input_test.rb +2 -2
  148. data/test/display/canvas_test.rb +306 -0
  149. data/test/display/hd44780_test.rb +34 -7
  150. data/test/eeprom/board_test.rb +45 -0
  151. data/test/helpers/mruby_minitest.rb +95 -0
  152. data/test/helpers/mruby_runner.rb +13 -0
  153. data/test/i2c/bus_test.rb +93 -30
  154. data/test/i2c/peripheral_test.rb +2 -2
  155. data/test/led/apa102_test.rb +24 -0
  156. data/test/led/rgb_test.rb +4 -4
  157. data/test/motor/{stepper_test.rb → a3967_test.rb} +2 -2
  158. data/test/one_wire/bus_enumerator_test.rb +1 -1
  159. data/test/one_wire/bus_test.rb +42 -35
  160. data/test/one_wire/peripheral_test.rb +5 -17
  161. data/test/pulse_io/ir_output_test.rb +5 -0
  162. data/test/pulse_io/pwm_output_test.rb +10 -10
  163. data/test/rtc/ds3231_test.rb +3 -2
  164. data/test/sensor/dht_test.rb +11 -11
  165. data/test/spi/bitbang_test.rb +27 -0
  166. data/test/spi/bus_test.rb +19 -29
  167. data/test/spi/input_register_test.rb +2 -2
  168. data/test/spi/{peripheral_multi_pin_test.rb → peripheral_test.rb} +25 -5
  169. data/test/test_helper.rb +44 -124
  170. data/vendor/board-maps/BoardMap.h +264 -0
  171. data/vendor/board-maps/yaml/ALFREDO_NOU3.yml +2 -0
  172. data/vendor/board-maps/yaml/ATD143_S3.yml +1 -0
  173. data/vendor/board-maps/yaml/BHARATPI_A7672S_4G.yml +14 -0
  174. data/vendor/board-maps/yaml/BHARATPI_LORA.yml +14 -0
  175. data/vendor/board-maps/yaml/BHARATPI_NODE_WIFI.yml +14 -0
  176. data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +0 -1
  177. data/vendor/board-maps/yaml/CEZERIO_DEV_ESP32C6.yml +14 -0
  178. data/vendor/board-maps/yaml/CEZERIO_MINI_DEV_ESP32C6.yml +12 -0
  179. data/vendor/board-maps/yaml/CIRCUITART_ZERO_S3.yml +71 -0
  180. data/vendor/board-maps/yaml/CODECELLC3.yml +13 -0
  181. data/vendor/board-maps/yaml/CYOBOT_V2_ESP32S3.yml +7 -0
  182. data/vendor/board-maps/yaml/EDGES3D.yml +25 -0
  183. data/vendor/board-maps/yaml/ESP32C6_DEV.yml +3 -4
  184. data/vendor/board-maps/yaml/ESP32C6_THING_PLUS.yml +0 -1
  185. data/vendor/board-maps/yaml/ESP32H2_DEV.yml +0 -1
  186. data/vendor/board-maps/yaml/ESP32H2_DEVKIT_LIPO.yml +0 -1
  187. data/vendor/board-maps/yaml/ESP32P4_DEV.yml +35 -0
  188. data/vendor/board-maps/yaml/ESP32S2_DEV.yml +0 -1
  189. data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO.yml +0 -1
  190. data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO_USB.yml +0 -1
  191. data/vendor/board-maps/yaml/ESP32_2432S028R.yml +14 -0
  192. data/vendor/board-maps/yaml/FEATHERS3.yml +1 -1
  193. data/vendor/board-maps/yaml/FRI3D_2024_ESP32S3.yml +43 -0
  194. data/vendor/board-maps/yaml/GEEKBLE_ESP32C3.yml +0 -1
  195. data/vendor/board-maps/yaml/GEEKBLE_NANO_ESP32S3.yml +25 -0
  196. data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_E290.yml +41 -0
  197. data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_E_213.yml +41 -0
  198. data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_T190.yml +41 -0
  199. data/vendor/board-maps/yaml/HUIDU_HD_WF2.yml +5 -0
  200. data/vendor/board-maps/yaml/HUIDU_HD_WF4.yml +1 -0
  201. data/vendor/board-maps/yaml/LILYGO_LORA_CC1101.yml +6 -0
  202. data/vendor/board-maps/yaml/LILYGO_LORA_LR1121.yml +6 -0
  203. data/vendor/board-maps/yaml/LILYGO_LORA_SI4432.yml +6 -0
  204. data/vendor/board-maps/yaml/LILYGO_LORA_SX1262.yml +6 -0
  205. data/vendor/board-maps/yaml/LILYGO_LORA_SX1280.yml +6 -0
  206. data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +0 -1
  207. data/vendor/board-maps/yaml/LOLIN_C3_PICO.yml +1 -2
  208. data/vendor/board-maps/yaml/LoPy.yml +0 -1
  209. data/vendor/board-maps/yaml/LoPy4.yml +0 -1
  210. data/vendor/board-maps/yaml/M5STACK_DINMETER.yml +8 -0
  211. data/vendor/board-maps/yaml/M5STACK_FIRE.yml +1 -1
  212. data/vendor/board-maps/yaml/OMGS3.yml +25 -0
  213. data/vendor/board-maps/yaml/PCBCUPID_GLYPHC3.yml +23 -0
  214. data/vendor/board-maps/yaml/PCBCUPID_GLYPHC6.yml +32 -0
  215. data/vendor/board-maps/yaml/PCBCUPID_GLYPHH2.yml +24 -0
  216. data/vendor/board-maps/yaml/PYCOM_GPY.yml +0 -1
  217. data/vendor/board-maps/yaml/SENSEBOX_MCU_ESP32S2.yml +1 -1
  218. data/vendor/board-maps/yaml/SPARKFUN_ESP32S3_THING_PLUS.yml +13 -0
  219. data/vendor/board-maps/yaml/SPARKLEMOTIONMINI_ESP32.yml +12 -0
  220. data/vendor/board-maps/yaml/SPARKLEMOTIONSTICK_ESP32.yml +11 -0
  221. data/vendor/board-maps/yaml/SPARKLEMOTION_ESP32.yml +12 -0
  222. data/vendor/board-maps/yaml/SQUIXL.yml +7 -0
  223. data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER_C6.yml +0 -1
  224. data/vendor/board-maps/yaml/T_LORA_PAGER.yml +6 -0
  225. data/vendor/board-maps/yaml/T_WATCH_S3.yml +7 -0
  226. data/vendor/board-maps/yaml/T_WATCH_S3_ULTRA.yml +6 -0
  227. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_146.yml +41 -0
  228. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_147.yml +41 -0
  229. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_169.yml +38 -0
  230. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_185.yml +41 -0
  231. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_RELAY_6CH.yml +41 -0
  232. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_143.yml +7 -0
  233. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_164.yml +7 -0
  234. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_18.yml +38 -0
  235. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_191.yml +7 -0
  236. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_241.yml +7 -0
  237. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_146.yml +41 -0
  238. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_169.yml +38 -0
  239. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_185.yml +41 -0
  240. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_185_BOX.yml +41 -0
  241. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_21.yml +41 -0
  242. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_28.yml +41 -0
  243. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_4.yml +36 -0
  244. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_43.yml +38 -0
  245. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_43B.yml +38 -0
  246. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_5.yml +38 -0
  247. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_5B.yml +38 -0
  248. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_7.yml +38 -0
  249. data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_ZERO.yml +36 -0
  250. data/vendor/board-maps/yaml/WIPY3.yml +0 -1
  251. data/vendor/board-maps/yaml/WS_ESP32_S3_MATRIX.yml +38 -0
  252. data/vendor/board-maps/yaml/XIAO_ESP32S3_PLUS.yml +46 -0
  253. data/vendor/board-maps/yaml/YB_ESP32S3_AMP_V2.yml +28 -0
  254. data/vendor/board-maps/yaml/YB_ESP32S3_AMP_V3.yml +28 -0
  255. data/vendor/board-maps/yaml/YB_ESP32S3_ETH.yml +40 -0
  256. data/vendor/board-maps/yaml/mercury.yml +20 -0
  257. metadata +116 -101
  258. data/.vscode/settings.json +0 -5
  259. data/.vscode/tasks.json +0 -20
  260. data/HARDWARE.md +0 -263
  261. data/benchmarks/analog_listen.rb +0 -49
  262. data/benchmarks/digital_write.rb +0 -28
  263. data/benchmarks/i2c_ssd1306_refresh.rb +0 -91
  264. data/examples/advanced/m5_env3.rb +0 -46
  265. data/examples/advanced/rotary_encoder_mac_volume.rb +0 -53
  266. data/examples/advanced/ssd1306_time_temp_rh.rb +0 -43
  267. data/examples/analog_io/ads1100.rb +0 -48
  268. data/examples/analog_io/ads1115.rb +0 -57
  269. data/examples/analog_io/ads1118.rb +0 -65
  270. data/examples/analog_io/dac_loopback.rb +0 -34
  271. data/examples/analog_io/input.rb +0 -56
  272. data/examples/analog_io/input_smoothing.rb +0 -27
  273. data/examples/analog_io/potentiometer.rb +0 -31
  274. data/examples/connection/binary_echo.rb +0 -34
  275. data/examples/connection/tcp.rb +0 -19
  276. data/examples/digital_io/button.rb +0 -17
  277. data/examples/digital_io/relay.rb +0 -17
  278. data/examples/digital_io/rotary_encoder.rb +0 -36
  279. data/examples/display/hd44780.png +0 -0
  280. data/examples/display/hd44780.rb +0 -47
  281. data/examples/display/ssd1306.rb +0 -43
  282. data/examples/display/ssd1306_s2_pico.rb +0 -29
  283. data/examples/eeprom/built_in.rb +0 -32
  284. data/examples/i2c/search.rb +0 -39
  285. data/examples/led/apa102_bounce.rb +0 -32
  286. data/examples/led/apa102_fade.rb +0 -44
  287. data/examples/led/builtin_blink.rb +0 -14
  288. data/examples/led/builtin_fade.rb +0 -19
  289. data/examples/led/rgb_led.rb +0 -31
  290. data/examples/led/seven_segment_char_echo.rb +0 -17
  291. data/examples/led/ws2812_bounce.rb +0 -30
  292. data/examples/led/ws2812_builtin_blink.rb +0 -22
  293. data/examples/led/ws2812_fade.rb +0 -43
  294. data/examples/motor/l298.rb +0 -45
  295. data/examples/motor/servo.rb +0 -17
  296. data/examples/motor/stepper.png +0 -0
  297. data/examples/motor/stepper.rb +0 -43
  298. data/examples/one_wire/search.rb +0 -32
  299. data/examples/pulse_io/buzzer.rb +0 -35
  300. data/examples/pulse_io/ir_output.rb +0 -51
  301. data/examples/pulse_io/pwm_output.rb +0 -30
  302. data/examples/rtc/ds3231.rb +0 -31
  303. data/examples/sensor/aht10.rb +0 -17
  304. data/examples/sensor/aht20.rb +0 -17
  305. data/examples/sensor/bme280.rb +0 -38
  306. data/examples/sensor/bmp180.rb +0 -26
  307. data/examples/sensor/dht.rb +0 -29
  308. data/examples/sensor/ds18b20.rb +0 -57
  309. data/examples/sensor/generic_pir.rb +0 -27
  310. data/examples/sensor/hcsr04.rb +0 -17
  311. data/examples/sensor/htu21d.rb +0 -43
  312. data/examples/sensor/htu31d.rb +0 -33
  313. data/examples/sensor/neat_tph_readings.rb +0 -32
  314. data/examples/sensor/qmp6988.rb +0 -51
  315. data/examples/sensor/rcwl9620.rb +0 -15
  316. data/examples/sensor/sht3x.rb +0 -32
  317. data/examples/spi/bitbang_loopback.rb +0 -46
  318. data/examples/spi/input_register.rb +0 -40
  319. data/examples/spi/output_register.rb +0 -41
  320. data/examples/spi/ssd_through_registers.rb +0 -28
  321. data/examples/spi/two_registers.rb +0 -40
  322. data/examples/uart/bit_bang_demo.rb +0 -25
  323. data/examples/uart/board_passthrough.rb +0 -40
  324. data/examples/uart/hardware_loopback.rb +0 -16
  325. data/lib/denko/eeprom/built_in.rb +0 -72
  326. data/lib/denko/fonts.rb +0 -106
  327. data/test/eeprom/built_in_test.rb +0 -61
  328. data/test/spi/peripheral_single_pin_test.rb +0 -48
  329. data/tutorial/01-led/led.fzz +0 -0
  330. data/tutorial/01-led/led.pdf +0 -0
  331. data/tutorial/01-led/led.rb +0 -73
  332. data/tutorial/02-button/button.fzz +0 -0
  333. data/tutorial/02-button/button.pdf +0 -0
  334. data/tutorial/02-button/button.rb +0 -65
  335. data/tutorial/03-potentiometer/potentiometer.fzz +0 -0
  336. data/tutorial/03-potentiometer/potentiometer.pdf +0 -0
  337. data/tutorial/03-potentiometer/potentiometer.rb +0 -66
  338. data/tutorial/04-pwm_led/pwm_led.fzz +0 -0
  339. data/tutorial/04-pwm_led/pwm_led.pdf +0 -0
  340. data/tutorial/04-pwm_led/pwm_led.rb +0 -64
  341. data/tutorial/05-rgb_led/rgb_led.fzz +0 -0
  342. data/tutorial/05-rgb_led/rgb_led.pdf +0 -0
  343. data/tutorial/05-rgb_led/rgb_led.rb +0 -58
  344. data/tutorial/05-rgb_led/rgb_mapping.rb +0 -76
@@ -0,0 +1,142 @@
1
+ # MIT License
2
+ #
3
+ # Copyright (c) 2018-2019, Alexey Dynda
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+ #
23
+ # ssd1306xled_font6x8 is by Neven Boyanov
24
+ # ssd1306xled_font8x16 is by Neven Boyanov
25
+ #
26
+ # @created: 2014-08-12
27
+ # @author: Neven Boyanov
28
+ #
29
+ # Copyright (c) 2015 Neven Boyanov, Tinusaur Team. All Rights Reserved.
30
+ # Distributed as open source software under MIT License, see LICENSE.txt file.
31
+ # Please, as a favour, retain the link http://tinusaur.org to The Tinusaur Project.
32
+ #
33
+ # Source code available at: https://bitbucket.org/tinusaur/ssd1306xled
34
+ #
35
+ module Denko
36
+ module Display
37
+ module Font
38
+ BMP_5X7 = {
39
+ width: 5,
40
+ height: 7,
41
+ characters: [
42
+ [0x00, 0x00, 0x00, 0x00, 0x00], # sp
43
+ [0x00, 0x00, 0x5F, 0x00, 0x00], # !
44
+ [0x00, 0x03, 0x00, 0x03, 0x00], # "
45
+ [0x14, 0x3E, 0x14, 0x3E, 0x14], # #
46
+ [0x24, 0x2A, 0x7F, 0x2A, 0x12], # $
47
+ [0x43, 0x33, 0x08, 0x66, 0x61], # %
48
+ [0x36, 0x49, 0x55, 0x22, 0x50], # &
49
+ [0x00, 0x05, 0x03, 0x00, 0x00], # '
50
+ [0x00, 0x1C, 0x22, 0x41, 0x00], # (
51
+ [0x00, 0x41, 0x22, 0x1C, 0x00], # )
52
+ [0x14, 0x08, 0x3E, 0x08, 0x14], # *
53
+ [0x08, 0x08, 0x3E, 0x08, 0x08], # +
54
+ [0x00, 0x50, 0x30, 0x00, 0x00], # ,
55
+ [0x08, 0x08, 0x08, 0x08, 0x08], # -
56
+ [0x00, 0x60, 0x60, 0x00, 0x00], # .
57
+ [0x20, 0x10, 0x08, 0x04, 0x02], # /
58
+ [0x3E, 0x51, 0x49, 0x45, 0x3E], # 0
59
+ [0x00, 0x04, 0x02, 0x7F, 0x00], # 1
60
+ [0x42, 0x61, 0x51, 0x49, 0x46], # 2
61
+ [0x22, 0x41, 0x49, 0x49, 0x36], # 3
62
+ [0x18, 0x14, 0x12, 0x7F, 0x10], # 4
63
+ [0x27, 0x45, 0x45, 0x45, 0x39], # 5
64
+ [0x3E, 0x49, 0x49, 0x49, 0x32], # 6
65
+ [0x01, 0x01, 0x71, 0x09, 0x07], # 7
66
+ [0x36, 0x49, 0x49, 0x49, 0x36], # 8
67
+ [0x26, 0x49, 0x49, 0x49, 0x3E], # 9
68
+ [0x00, 0x36, 0x36, 0x00, 0x00], # :
69
+ [0x00, 0x56, 0x36, 0x00, 0x00], # ;
70
+ [0x08, 0x14, 0x22, 0x41, 0x00], # <
71
+ [0x14, 0x14, 0x14, 0x14, 0x14], # =
72
+ [0x00, 0x41, 0x22, 0x14, 0x08], # >
73
+ [0x02, 0x01, 0x51, 0x09, 0x06], # ?
74
+ [0x3E, 0x41, 0x59, 0x55, 0x5E], # @
75
+ [0x7E, 0x09, 0x09, 0x09, 0x7E], # A
76
+ [0x7F, 0x49, 0x49, 0x49, 0x36], # B
77
+ [0x3E, 0x41, 0x41, 0x41, 0x22], # C
78
+ [0x7F, 0x41, 0x41, 0x41, 0x3E], # D
79
+ [0x7F, 0x49, 0x49, 0x49, 0x41], # E
80
+ [0x7F, 0x09, 0x09, 0x09, 0x01], # F
81
+ [0x3E, 0x41, 0x41, 0x49, 0x3A], # G
82
+ [0x7F, 0x08, 0x08, 0x08, 0x7F], # H
83
+ [0x00, 0x41, 0x7F, 0x41, 0x00], # I
84
+ [0x30, 0x40, 0x40, 0x40, 0x3F], # J
85
+ [0x7F, 0x08, 0x14, 0x22, 0x41], # K
86
+ [0x7F, 0x40, 0x40, 0x40, 0x40], # L
87
+ [0x7F, 0x02, 0x0C, 0x02, 0x7F], # M
88
+ [0x7F, 0x02, 0x04, 0x08, 0x7F], # N
89
+ [0x3E, 0x41, 0x41, 0x41, 0x3E], # O
90
+ [0x7F, 0x09, 0x09, 0x09, 0x06], # P
91
+ [0x1E, 0x21, 0x21, 0x21, 0x5E], # Q
92
+ [0x7F, 0x09, 0x09, 0x09, 0x76], # R
93
+ [0x26, 0x49, 0x49, 0x49, 0x32], # S
94
+ [0x01, 0x01, 0x7F, 0x01, 0x01], # T
95
+ [0x3F, 0x40, 0x40, 0x40, 0x3F], # U
96
+ [0x1F, 0x20, 0x40, 0x20, 0x1F], # V
97
+ [0x7F, 0x20, 0x10, 0x20, 0x7F], # W
98
+ [0x41, 0x22, 0x1C, 0x22, 0x41], # X
99
+ [0x07, 0x08, 0x70, 0x08, 0x07], # Y
100
+ [0x61, 0x51, 0x49, 0x45, 0x43], # Z
101
+ [0x00, 0x7F, 0x41, 0x00, 0x00], # [
102
+ [0x02, 0x04, 0x08, 0x10, 0x20], # 55
103
+ [0x00, 0x00, 0x41, 0x7F, 0x00], # ]
104
+ [0x04, 0x02, 0x01, 0x02, 0x04], # ^
105
+ [0x40, 0x40, 0x40, 0x40, 0x40], # _
106
+ [0x00, 0x01, 0x02, 0x04, 0x00], # `
107
+ [0x20, 0x54, 0x54, 0x54, 0x78], # a
108
+ [0x7F, 0x44, 0x44, 0x44, 0x38], # b
109
+ [0x38, 0x44, 0x44, 0x44, 0x44], # c
110
+ [0x38, 0x44, 0x44, 0x44, 0x7F], # d
111
+ [0x38, 0x54, 0x54, 0x54, 0x18], # e
112
+ [0x04, 0x04, 0x7E, 0x05, 0x05], # f
113
+ [0x08, 0x54, 0x54, 0x54, 0x3C], # g
114
+ [0x7F, 0x08, 0x04, 0x04, 0x78], # h
115
+ [0x00, 0x44, 0x7D, 0x40, 0x00], # i
116
+ [0x20, 0x40, 0x44, 0x3D, 0x00], # j
117
+ [0x7F, 0x10, 0x28, 0x44, 0x00], # k
118
+ [0x00, 0x41, 0x7F, 0x40, 0x00], # l
119
+ [0x7C, 0x04, 0x78, 0x04, 0x78], # m
120
+ [0x7C, 0x08, 0x04, 0x04, 0x78], # n
121
+ [0x38, 0x44, 0x44, 0x44, 0x38], # o
122
+ [0x7C, 0x14, 0x14, 0x14, 0x08], # p
123
+ [0x08, 0x14, 0x14, 0x14, 0x7C], # q
124
+ [0x00, 0x7C, 0x08, 0x04, 0x04], # r
125
+ [0x48, 0x54, 0x54, 0x54, 0x20], # s
126
+ [0x04, 0x04, 0x3F, 0x44, 0x44], # t
127
+ [0x3C, 0x40, 0x40, 0x20, 0x7C], # u
128
+ [0x1C, 0x20, 0x40, 0x20, 0x1C], # v
129
+ [0x3C, 0x40, 0x30, 0x40, 0x3C], # w
130
+ [0x44, 0x28, 0x10, 0x28, 0x44], # x
131
+ [0x0C, 0x50, 0x50, 0x50, 0x3C], # y
132
+ [0x44, 0x64, 0x54, 0x4C, 0x44], # z
133
+ [0x00, 0x08, 0x36, 0x41, 0x41], # {
134
+ [0x00, 0x00, 0x7F, 0x00, 0x00], # |
135
+ [0x41, 0x41, 0x36, 0x08, 0x00], # }
136
+ [0x02, 0x01, 0x02, 0x04, 0x02], # ~
137
+ [0x14, 0x14, 0x14, 0x14, 0x14], # horiz lines // DEL
138
+ ]
139
+ }
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,142 @@
1
+ # MIT License
2
+ #
3
+ # Copyright (c) 2018-2019, Alexey Dynda
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+ #
23
+ # ssd1306xled_font6x8 is by Neven Boyanov
24
+ # ssd1306xled_font8x16 is by Neven Boyanov
25
+ #
26
+ # @created: 2014-08-12
27
+ # @author: Neven Boyanov
28
+ #
29
+ # Copyright (c) 2015 Neven Boyanov, Tinusaur Team. All Rights Reserved.
30
+ # Distributed as open source software under MIT License, see LICENSE.txt file.
31
+ # Please, as a favour, retain the link http://tinusaur.org to The Tinusaur Project.
32
+ #
33
+ # Source code available at: https://bitbucket.org/tinusaur/ssd1306xled
34
+ #
35
+ module Denko
36
+ module Display
37
+ module Font
38
+ BMP_6X8 = {
39
+ width: 6,
40
+ height: 8,
41
+ characters: [
42
+ [0x00, 0x00, 0x00, 0x00, 0x00, 0x00], # sp
43
+ [0x00, 0x00, 0x00, 0x2f, 0x00, 0x00], # !
44
+ [0x00, 0x00, 0x07, 0x00, 0x07, 0x00], # "
45
+ [0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14], # #
46
+ [0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12], # $
47
+ [0x00, 0x23, 0x13, 0x08, 0x64, 0x62], # %
48
+ [0x00, 0x36, 0x49, 0x55, 0x22, 0x50], # &
49
+ [0x00, 0x00, 0x05, 0x03, 0x00, 0x00], # '
50
+ [0x00, 0x00, 0x1c, 0x22, 0x41, 0x00], # (
51
+ [0x00, 0x00, 0x41, 0x22, 0x1c, 0x00], # )
52
+ [0x00, 0x14, 0x08, 0x3E, 0x08, 0x14], # *
53
+ [0x00, 0x08, 0x08, 0x3E, 0x08, 0x08], # +
54
+ [0x00, 0x00, 0x00, 0xA0, 0x60, 0x00], # ,
55
+ [0x00, 0x08, 0x08, 0x08, 0x08, 0x08], # -
56
+ [0x00, 0x00, 0x60, 0x60, 0x00, 0x00], # .
57
+ [0x00, 0x20, 0x10, 0x08, 0x04, 0x02], # /
58
+ [0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E], # 0
59
+ [0x00, 0x00, 0x42, 0x7F, 0x40, 0x00], # 1
60
+ [0x00, 0x42, 0x61, 0x51, 0x49, 0x46], # 2
61
+ [0x00, 0x21, 0x41, 0x45, 0x4B, 0x31], # 3
62
+ [0x00, 0x18, 0x14, 0x12, 0x7F, 0x10], # 4
63
+ [0x00, 0x27, 0x45, 0x45, 0x45, 0x39], # 5
64
+ [0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30], # 6
65
+ [0x00, 0x01, 0x71, 0x09, 0x05, 0x03], # 7
66
+ [0x00, 0x36, 0x49, 0x49, 0x49, 0x36], # 8
67
+ [0x00, 0x06, 0x49, 0x49, 0x29, 0x1E], # 9
68
+ [0x00, 0x00, 0x36, 0x36, 0x00, 0x00], # :
69
+ [0x00, 0x00, 0x56, 0x36, 0x00, 0x00], # ;
70
+ [0x00, 0x08, 0x14, 0x22, 0x41, 0x00], # <
71
+ [0x00, 0x14, 0x14, 0x14, 0x14, 0x14], # =
72
+ [0x00, 0x00, 0x41, 0x22, 0x14, 0x08], # >
73
+ [0x00, 0x02, 0x01, 0x51, 0x09, 0x06], # ?
74
+ [0x00, 0x32, 0x49, 0x59, 0x51, 0x3E], # @
75
+ [0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C], # A
76
+ [0x00, 0x7F, 0x49, 0x49, 0x49, 0x36], # B
77
+ [0x00, 0x3E, 0x41, 0x41, 0x41, 0x22], # C
78
+ [0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C], # D
79
+ [0x00, 0x7F, 0x49, 0x49, 0x49, 0x41], # E
80
+ [0x00, 0x7F, 0x09, 0x09, 0x09, 0x01], # F
81
+ [0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A], # G
82
+ [0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F], # H
83
+ [0x00, 0x00, 0x41, 0x7F, 0x41, 0x00], # I
84
+ [0x00, 0x20, 0x40, 0x41, 0x3F, 0x01], # J
85
+ [0x00, 0x7F, 0x08, 0x14, 0x22, 0x41], # K
86
+ [0x00, 0x7F, 0x40, 0x40, 0x40, 0x40], # L
87
+ [0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F], # M
88
+ [0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F], # N
89
+ [0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E], # O
90
+ [0x00, 0x7F, 0x09, 0x09, 0x09, 0x06], # P
91
+ [0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E], # Q
92
+ [0x00, 0x7F, 0x09, 0x19, 0x29, 0x46], # R
93
+ [0x00, 0x46, 0x49, 0x49, 0x49, 0x31], # S
94
+ [0x00, 0x01, 0x01, 0x7F, 0x01, 0x01], # T
95
+ [0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F], # U
96
+ [0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F], # V
97
+ [0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F], # W
98
+ [0x00, 0x63, 0x14, 0x08, 0x14, 0x63], # X
99
+ [0x00, 0x07, 0x08, 0x70, 0x08, 0x07], # Y
100
+ [0x00, 0x61, 0x51, 0x49, 0x45, 0x43], # Z
101
+ [0x00, 0x00, 0x7F, 0x41, 0x41, 0x00], # [
102
+ [0x00, 0x02, 0x04, 0x08, 0x10, 0x20], # \
103
+ [0x00, 0x00, 0x41, 0x41, 0x7F, 0x00], # ]
104
+ [0x00, 0x04, 0x02, 0x01, 0x02, 0x04], # ^
105
+ [0x00, 0x40, 0x40, 0x40, 0x40, 0x40], # _
106
+ [0x00, 0x00, 0x01, 0x02, 0x04, 0x00], # '
107
+ [0x00, 0x20, 0x54, 0x54, 0x54, 0x78], # a
108
+ [0x00, 0x7F, 0x48, 0x44, 0x44, 0x38], # b
109
+ [0x00, 0x38, 0x44, 0x44, 0x44, 0x20], # c
110
+ [0x00, 0x38, 0x44, 0x44, 0x48, 0x7F], # d
111
+ [0x00, 0x38, 0x54, 0x54, 0x54, 0x18], # e
112
+ [0x00, 0x08, 0x7E, 0x09, 0x01, 0x02], # f
113
+ [0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C], # g
114
+ [0x00, 0x7F, 0x08, 0x04, 0x04, 0x78], # h
115
+ [0x00, 0x00, 0x44, 0x7D, 0x40, 0x00], # i
116
+ [0x00, 0x40, 0x80, 0x84, 0x7D, 0x00], # j
117
+ [0x00, 0x7F, 0x10, 0x28, 0x44, 0x00], # k
118
+ [0x00, 0x00, 0x41, 0x7F, 0x40, 0x00], # l
119
+ [0x00, 0x7C, 0x04, 0x18, 0x04, 0x78], # m
120
+ [0x00, 0x7C, 0x08, 0x04, 0x04, 0x78], # n
121
+ [0x00, 0x38, 0x44, 0x44, 0x44, 0x38], # o
122
+ [0x00, 0xFC, 0x24, 0x24, 0x24, 0x18], # p
123
+ [0x00, 0x18, 0x24, 0x24, 0x18, 0xFC], # q
124
+ [0x00, 0x7C, 0x08, 0x04, 0x04, 0x08], # r
125
+ [0x00, 0x48, 0x54, 0x54, 0x54, 0x20], # s
126
+ [0x00, 0x04, 0x3F, 0x44, 0x40, 0x20], # t
127
+ [0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C], # u
128
+ [0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C], # v
129
+ [0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C], # w
130
+ [0x00, 0x44, 0x28, 0x10, 0x28, 0x44], # x
131
+ [0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C], # y
132
+ [0x00, 0x44, 0x64, 0x54, 0x4C, 0x44], # z
133
+ [0x00, 0x00, 0x08, 0x77, 0x00, 0x00], # {
134
+ [0x00, 0x00, 0x00, 0x7F, 0x00, 0x00], # |
135
+ [0x00, 0x00, 0x77, 0x08, 0x00, 0x00], # }
136
+ [0x00, 0x10, 0x08, 0x10, 0x08, 0x00], # ~
137
+ [0x14, 0x14, 0x14, 0x14, 0x14, 0x14], # horiz lines # DEL
138
+ ]
139
+ }
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,141 @@
1
+ # MIT License
2
+ #
3
+ # Copyright (c) 2018-2019, Alexey Dynda
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+ #
23
+ # ssd1306xled_font6x8 is by Neven Boyanov
24
+ # ssd1306xled_font8x16 is by Neven Boyanov
25
+ #
26
+ # @created: 2014-08-12
27
+ # @author: Neven Boyanov
28
+ #
29
+ # Copyright (c) 2015 Neven Boyanov, Tinusaur Team. All Rights Reserved.
30
+ # Distributed as open source software under MIT License, see LICENSE.txt file.
31
+ # Please, as a favour, retain the link http://tinusaur.org to The Tinusaur Project.
32
+ #
33
+ # Source code available at: https://bitbucket.org/tinusaur/ssd1306xled
34
+ #
35
+ module Denko
36
+ module Display
37
+ module Font
38
+ BMP_8X16 = {
39
+ width: 8,
40
+ height: 16,
41
+ characters: [
42
+ [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], # 0
43
+ [0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x30, 0x00, 0x00, 0x00], # ! 1
44
+ [0x00, 0x10, 0x0C, 0x06, 0x10, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], # " 2
45
+ [0x40, 0xC0, 0x78, 0x40, 0xC0, 0x78, 0x40, 0x00, 0x04, 0x3F, 0x04, 0x04, 0x3F, 0x04, 0x04, 0x00], # # 3
46
+ [0x00, 0x70, 0x88, 0xFC, 0x08, 0x30, 0x00, 0x00, 0x00, 0x18, 0x20, 0xFF, 0x21, 0x1E, 0x00, 0x00], # $ 4
47
+ [0xF0, 0x08, 0xF0, 0x00, 0xE0, 0x18, 0x00, 0x00, 0x00, 0x21, 0x1C, 0x03, 0x1E, 0x21, 0x1E, 0x00], # % 5
48
+ [0x00, 0xF0, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00, 0x1E, 0x21, 0x23, 0x24, 0x19, 0x27, 0x21, 0x10], # & 6
49
+ [0x10, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], # ' 7
50
+ [0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x00], # ( 8
51
+ [0x00, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00], # ) 9
52
+ [0x40, 0x40, 0x80, 0xF0, 0x80, 0x40, 0x40, 0x00, 0x02, 0x02, 0x01, 0x0F, 0x01, 0x02, 0x02, 0x00], # * 10
53
+ [0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x1F, 0x01, 0x01, 0x01, 0x00], # + 11
54
+ [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00], # , 12
55
+ [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01], # - 13
56
+ [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00], # . 14
57
+ [0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x04, 0x00, 0x60, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00], # / 15
58
+ [0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, 0x00], # 0 16
59
+ [0x00, 0x10, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00], # 1 17
60
+ [0x00, 0x70, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x30, 0x28, 0x24, 0x22, 0x21, 0x30, 0x00], # 2 18
61
+ [0x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00, 0x00, 0x18, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00], # 3 19
62
+ [0x00, 0x00, 0xC0, 0x20, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x04, 0x24, 0x24, 0x3F, 0x24, 0x00], # 4 20
63
+ [0x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, 0x19, 0x21, 0x20, 0x20, 0x11, 0x0E, 0x00], # 5 21
64
+ [0x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00], # 6 22
65
+ [0x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00], # 7 23
66
+ [0x00, 0x70, 0x88, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x1C, 0x22, 0x21, 0x21, 0x22, 0x1C, 0x00], # 8 24
67
+ [0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x31, 0x22, 0x22, 0x11, 0x0F, 0x00], # 9 25
68
+ [0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00], # : 26
69
+ [0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00], # ; 27
70
+ [0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00], # < 28
71
+ [0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00], # = 29
72
+ [0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00], # > 30
73
+ [0x00, 0x70, 0x48, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x36, 0x01, 0x00, 0x00], # ? 31
74
+ [0xC0, 0x30, 0xC8, 0x28, 0xE8, 0x10, 0xE0, 0x00, 0x07, 0x18, 0x27, 0x24, 0x23, 0x14, 0x0B, 0x00], # @ 32
75
+ [0x00, 0x00, 0xC0, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x3C, 0x23, 0x02, 0x02, 0x27, 0x38, 0x20], # A 33
76
+ [0x08, 0xF8, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00], # B 34
77
+ [0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00, 0x07, 0x18, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00], # C 35
78
+ [0x08, 0xF8, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00], # D 36
79
+ [0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x23, 0x20, 0x18, 0x00], # E 37
80
+ [0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00], # F 38
81
+ [0xC0, 0x30, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x07, 0x18, 0x20, 0x20, 0x22, 0x1E, 0x02, 0x00], # G 39
82
+ [0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x21, 0x3F, 0x20], # H 40
83
+ [0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00], # I 41
84
+ [0x00, 0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00], # J 42
85
+ [0x08, 0xF8, 0x88, 0xC0, 0x28, 0x18, 0x08, 0x00, 0x20, 0x3F, 0x20, 0x01, 0x26, 0x38, 0x20, 0x00], # K 43
86
+ [0x08, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x30, 0x00], # L 44
87
+ [0x08, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x08, 0x00, 0x20, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x20, 0x00], # M 45
88
+ [0x08, 0xF8, 0x30, 0xC0, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x20, 0x00, 0x07, 0x18, 0x3F, 0x00], # N 46
89
+ [0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00], # O 47
90
+ [0x08, 0xF8, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x01, 0x00, 0x00], # P 48
91
+ [0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x18, 0x24, 0x24, 0x38, 0x50, 0x4F, 0x00], # Q 49
92
+ [0x08, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x0C, 0x30, 0x20], # R 50
93
+ [0x00, 0x70, 0x88, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x38, 0x20, 0x21, 0x21, 0x22, 0x1C, 0x00], # S 51
94
+ [0x18, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00], # T 52
95
+ [0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00], # U 53
96
+ [0x08, 0x78, 0x88, 0x00, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x07, 0x38, 0x0E, 0x01, 0x00, 0x00], # V 54
97
+ [0xF8, 0x08, 0x00, 0xF8, 0x00, 0x08, 0xF8, 0x00, 0x03, 0x3C, 0x07, 0x00, 0x07, 0x3C, 0x03, 0x00], # W 55
98
+ [0x08, 0x18, 0x68, 0x80, 0x80, 0x68, 0x18, 0x08, 0x20, 0x30, 0x2C, 0x03, 0x03, 0x2C, 0x30, 0x20], # X 56
99
+ [0x08, 0x38, 0xC8, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00], # Y 57
100
+ [0x10, 0x08, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x20, 0x38, 0x26, 0x21, 0x20, 0x20, 0x18, 0x00], # Z 58
101
+ [0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x00], # [ 59
102
+ [0x00, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0xC0, 0x00], # \ 60
103
+ [0x00, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x7F, 0x00, 0x00, 0x00], # ] 61
104
+ [0x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], # ^ 62
105
+ [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80], # _ 63
106
+ [0x00, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], # ` 64
107
+ [0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x19, 0x24, 0x22, 0x22, 0x22, 0x3F, 0x20], # a 65
108
+ [0x08, 0xF8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00], # b 66
109
+ [0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x20, 0x11, 0x00], # c 67
110
+ [0x00, 0x00, 0x00, 0x80, 0x80, 0x88, 0xF8, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x10, 0x3F, 0x20], # d 68
111
+ [0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x22, 0x22, 0x22, 0x22, 0x13, 0x00], # e 69
112
+ [0x00, 0x80, 0x80, 0xF0, 0x88, 0x88, 0x88, 0x18, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00], # f 70
113
+ [0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x6B, 0x94, 0x94, 0x94, 0x93, 0x60, 0x00], # g 71
114
+ [0x08, 0xF8, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20], # h 72
115
+ [0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00], # i 73
116
+ [0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00], # j 74
117
+ [0x08, 0xF8, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x24, 0x02, 0x2D, 0x30, 0x20, 0x00], # k 75
118
+ [0x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00], # l 76
119
+ [0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x3F], # m 77
120
+ [0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20], # n 78
121
+ [0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00], # o 79
122
+ [0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xA1, 0x20, 0x20, 0x11, 0x0E, 0x00], # p 80
123
+ [0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0xA0, 0xFF, 0x80], # q 81
124
+ [0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x20, 0x3F, 0x21, 0x20, 0x00, 0x01, 0x00], # r 82
125
+ [0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x33, 0x24, 0x24, 0x24, 0x24, 0x19, 0x00], # s 83
126
+ [0x00, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x00, 0x00], # t 84
127
+ [0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x10, 0x3F, 0x20], # u 85
128
+ [0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x01, 0x0E, 0x30, 0x08, 0x06, 0x01, 0x00], # v 86
129
+ [0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x0F, 0x30, 0x0C, 0x03, 0x0C, 0x30, 0x0F, 0x00], # w 87
130
+ [0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x31, 0x2E, 0x0E, 0x31, 0x20, 0x00], # x 88
131
+ [0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x81, 0x8E, 0x70, 0x18, 0x06, 0x01, 0x00], # y 89
132
+ [0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x21, 0x30, 0x2C, 0x22, 0x21, 0x30, 0x00], # z 90
133
+ [0x00, 0x00, 0x00, 0x00, 0x80, 0x7C, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40], # { 91
134
+ [0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00], # | 92
135
+ [0x00, 0x02, 0x02, 0x7C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00], # } 93
136
+ [0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], # ~ 94
137
+ ]
138
+ }
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,22 @@
1
+ # Represent files to be autoloaded in CRuby as an Array.
2
+ # This allows Mruby::Build to parse and preload them instead.
3
+ FONT_FILES = [
4
+ [:BMP_5X7, "bmp_5x7"],
5
+ [:BMP_6X8, "bmp_6x8"],
6
+ [:BMP_8X16, "bmp_8x16"],
7
+ ]
8
+
9
+ module Denko
10
+ module Display
11
+ module Font
12
+ FONT_FILES.each do |file|
13
+ file_path = "#{__dir__}/font/#{file[1]}"
14
+ if file[0]
15
+ autoload file[0], file_path
16
+ else
17
+ require file_path
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -47,8 +47,8 @@ module Denko
47
47
  LCD_5x10DOTS = 0x04
48
48
  LCD_5x8DOTS = 0x00
49
49
 
50
- def bits
51
- @bits ||= 4
50
+ def data_lines
51
+ @data_lines ||= 4
52
52
  end
53
53
 
54
54
  # Default to 16x2 display if columns and rows given.
@@ -83,7 +83,7 @@ module Denko
83
83
  @entry_mode ||= LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT
84
84
  end
85
85
 
86
- attr_writer :columns, :rows, :function, :bits, :row_offsets, :control, :entry_mode
86
+ attr_writer :columns, :rows, :function, :data_lines, :row_offsets, :control, :entry_mode
87
87
 
88
88
  def initialize_pins(options={})
89
89
  # All the required pins.
@@ -97,14 +97,18 @@ module Denko
97
97
  proxy_pin(symbol, DigitalIO::Output, optional: lower_bits_optional)
98
98
  end
99
99
 
100
- # RW pin is mostly hard-wired to ground, but can given.
101
- proxy_pin(:rw, DigitalIO::Output, optional: true)
100
+ # RW pin can be hardwired to GND, or given. Will be always pulled low.
101
+ proxy_pin :rw, DigitalIO::Output, optional: true
102
+
103
+ # Backlight can be hardwired, given here, or modeled as a separate component.
104
+ # If HD44780 is on a digital register, and PWM is desired, use a separate component.
105
+ proxy_pin :backlight, LED::Base, optional: true
102
106
  end
103
107
 
104
108
  after_initialize do
105
109
  # Switch to 8-bit mode if d0-d3 are present.
106
110
  if (d0 && d1 && d2 && d3)
107
- self.bits = 8
111
+ self.data_lines = 8
108
112
  self.function |= LCD_8BITMODE
109
113
  end
110
114
 
@@ -119,7 +123,7 @@ module Denko
119
123
  enable.low; rs.low; rw.low if rw
120
124
 
121
125
  # Start in 4-bit mode.
122
- if bits == 4
126
+ if data_lines == 4
123
127
  # Keep setting 8-bit mode until ready.
124
128
  command(0x03); micro_delay(4500)
125
129
  command(0x03); micro_delay(4500)
@@ -142,6 +146,7 @@ module Denko
142
146
 
143
147
  display_on
144
148
  clear
149
+ backlight.on if backlight
145
150
 
146
151
  # Write entry mode.
147
152
  command(LCD_ENTRYMODESET | entry_mode)
@@ -160,15 +165,15 @@ module Denko
160
165
  micro_delay(2000)
161
166
  end
162
167
 
163
- def set_cursor(col, row)
168
+ def text_cursor(col, row)
164
169
  # Limit to the highest row, 0 indexed.
165
170
  row = (rows - 1) if row > (rows - 1)
166
171
  command(LCD_SETDDRAMADDR | (col + row_offsets[row]))
167
172
  end
168
- alias :move_to :set_cursor
173
+ alias :move_to :text_cursor
169
174
 
170
- def print(text)
171
- text.each_byte { |b| write b }
175
+ def text(str)
176
+ str.each_byte { |b| write b }
172
177
  end
173
178
 
174
179
  #
@@ -178,15 +183,15 @@ module Denko
178
183
  # Eg. #display_on and #display_off.
179
184
  #
180
185
  CONTROL_TOGGLES = {
181
- display: LCD_DISPLAYON,
182
- cursor: LCD_CURSORON,
183
- blink: LCD_BLINKON,
186
+ "display" => LCD_DISPLAYON,
187
+ "cursor" => LCD_CURSORON,
188
+ "blink" => LCD_BLINKON,
184
189
  }
185
190
  CONTROL_TOGGLES.each_key do |key|
186
- define_method (key.to_s << "_off").to_sym do
191
+ define_method (key + "_off") do
187
192
  command LCD_DISPLAYCONTROL | (self.control &= ~CONTROL_TOGGLES[key])
188
193
  end
189
- define_method (key.to_s << "_on") do
194
+ define_method (key + "_on") do
190
195
  command LCD_DISPLAYCONTROL | (self.control |= CONTROL_TOGGLES[key])
191
196
  end
192
197
  end
@@ -237,17 +242,16 @@ module Denko
237
242
  def send(byte, rs_level)
238
243
  # RS pin goes low to send commands, high to send data.
239
244
  rs.write(rs_level) unless rs.state == rs_level
240
- rw.low if rw
241
245
 
242
246
  # Get the byte as a string of 0s and 1s, LSBFIRST.
243
247
  bits_from_byte = byte.to_s(2).rjust(8, "0").reverse
244
248
 
245
249
  # Write bits depending on connection.
246
- bits == 8 ? write8(bits_from_byte) : write4(bits_from_byte)
250
+ data_lines == 8 ? write8(bits_from_byte) : write4(bits_from_byte)
247
251
  end
248
252
 
249
253
  def write4(bits)
250
- if board_is_register?
254
+ if board.is_a_register?
251
255
  board.bit_set(d4.pin, bits[4].to_i)
252
256
  board.bit_set(d5.pin, bits[5].to_i)
253
257
  board.bit_set(d6.pin, bits[6].to_i)
@@ -273,7 +277,7 @@ module Denko
273
277
  end
274
278
 
275
279
  def write8(bits)
276
- if board_has_write_bit?
280
+ if board.is_a_register?
277
281
  board.bit_set(d0.pin, bits[0].to_i)
278
282
  board.bit_set(d1.pin, bits[1].to_i)
279
283
  board.bit_set(d2.pin, bits[2].to_i)