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.
- checksums.yaml +4 -4
- data/.github/workflows/build_atmega_avr.yml +2 -1
- data/.github/workflows/build_atmega_megaavr.yml +2 -1
- data/.github/workflows/build_atsam3x.yml +1 -0
- data/.github/workflows/build_atsamd21.yml +2 -1
- data/.github/workflows/build_esp32.yml +4 -2
- data/.github/workflows/build_esp32c3.yml +4 -3
- data/.github/workflows/build_esp32c6.yml +4 -2
- data/.github/workflows/build_esp32h2.yml +4 -2
- data/.github/workflows/build_esp32s2.yml +4 -2
- data/.github/workflows/build_esp32s3.yml +4 -2
- data/.github/workflows/build_esp8266.yml +2 -1
- data/.github/workflows/build_ra4m1.yml +1 -0
- data/.github/workflows/build_rp2040.yml +4 -3
- data/.github/workflows/ruby.yml +1 -1
- data/CHANGELOG.md +203 -0
- data/DEPS_CLI.md +16 -16
- data/DEPS_IDE.md +31 -30
- data/MICROCONTROLLERS.md +103 -0
- data/PERIPHERALS.md +178 -0
- data/README.md +28 -21
- data/denko.gemspec +6 -1
- data/lib/denko/analog_io/ads1118.rb +5 -5
- data/lib/denko/analog_io/ads111x.rb +23 -19
- data/lib/denko/analog_io/joystick.rb +87 -0
- data/lib/denko/analog_io/potentiometer.rb +1 -5
- data/lib/denko/analog_io.rb +22 -8
- data/lib/denko/behaviors/bus_controller.rb +2 -1
- data/lib/denko/behaviors/bus_peripheral.rb +1 -1
- data/lib/denko/behaviors/callbacks.rb +18 -16
- data/lib/denko/behaviors/component.rb +0 -4
- data/lib/denko/behaviors/lifecycle.rb +1 -1
- data/lib/denko/behaviors/listener.rb +9 -3
- data/lib/denko/behaviors/multi_pin.rb +4 -6
- data/lib/denko/behaviors/poller.rb +11 -2
- data/lib/denko/behaviors/reader.rb +109 -21
- data/lib/denko/behaviors/single_pin.rb +2 -4
- data/lib/denko/behaviors/state.rb +18 -13
- data/lib/denko/behaviors/threaded.rb +19 -8
- data/lib/denko/behaviors.rb +36 -23
- data/lib/denko/board/eeprom.rb +1 -1
- data/lib/denko/board/i2c.rb +1 -1
- data/lib/denko/board/i2c_bit_bang.rb +9 -5
- data/lib/denko/board/map.rb +6 -2
- data/lib/denko/board/one_wire.rb +3 -3
- data/lib/denko/board/spi.rb +30 -30
- data/lib/denko/board/spi_bit_bang.rb +8 -11
- data/lib/denko/board.rb +6 -3
- data/lib/denko/connection/flow_control.rb +1 -1
- data/lib/denko/connection/serial.rb +5 -5
- data/lib/denko/digital_io/output.rb +12 -4
- data/lib/denko/digital_io/pcf8574.rb +114 -0
- data/lib/denko/digital_io/rotary_encoder.rb +10 -6
- data/lib/denko/digital_io.rb +24 -6
- data/lib/denko/display/canvas.rb +350 -157
- data/lib/denko/display/font/bmp_5x7.rb +142 -0
- data/lib/denko/display/font/bmp_6x8.rb +142 -0
- data/lib/denko/display/font/bmp_8x16.rb +141 -0
- data/lib/denko/display/font.rb +22 -0
- data/lib/denko/display/hd44780.rb +24 -20
- data/lib/denko/display/il0373.rb +186 -0
- data/lib/denko/display/mono_oled.rb +193 -0
- data/lib/denko/display/pcd8544.rb +154 -0
- data/lib/denko/display/pixel_common.rb +83 -0
- data/lib/denko/display/sh1106.rb +17 -21
- data/lib/denko/display/sh1107.rb +10 -0
- data/lib/denko/display/spi_common.rb +35 -0
- data/lib/denko/display/spi_epaper_common.rb +30 -0
- data/lib/denko/display/ssd1306.rb +6 -228
- data/lib/denko/display/ssd1680.rb +14 -0
- data/lib/denko/display/ssd1681.rb +8 -0
- data/lib/denko/display/ssd168x.rb +227 -0
- data/lib/denko/display/st7302.rb +207 -0
- data/lib/denko/display/st7565.rb +166 -0
- data/lib/denko/display.rb +40 -4
- data/lib/denko/eeprom/at24c.rb +67 -0
- data/lib/denko/eeprom/board.rb +69 -0
- data/lib/denko/eeprom.rb +15 -1
- data/lib/denko/helpers/engine_check.rb +13 -0
- data/lib/denko/{mutex_stub.rb → helpers/mutex_stub.rb} +6 -0
- data/lib/denko/helpers.rb +6 -0
- data/lib/denko/i2c/bit_bang.rb +1 -0
- data/lib/denko/i2c/bus_common.rb +9 -4
- data/lib/denko/i2c/peripheral.rb +5 -1
- data/lib/denko/i2c.rb +17 -4
- data/lib/denko/led/apa102.rb +1 -3
- data/lib/denko/led/base.rb +5 -0
- data/lib/denko/led/rgb.rb +16 -10
- data/lib/denko/led/seven_segment.rb +1 -1
- data/lib/denko/led.rb +17 -8
- data/lib/denko/motor/{stepper.rb → a3967.rb} +1 -1
- data/lib/denko/motor/servo.rb +16 -6
- data/lib/denko/motor.rb +16 -3
- data/lib/denko/one_wire/bus.rb +20 -16
- data/lib/denko/one_wire/bus_enumerator.rb +25 -14
- data/lib/denko/one_wire/helper.rb +4 -2
- data/lib/denko/one_wire.rb +18 -5
- data/lib/denko/pulse_io/buzzer.rb +2 -6
- data/lib/denko/pulse_io/ir_output.rb +1 -5
- data/lib/denko/pulse_io/pwm_output.rb +56 -31
- data/lib/denko/pulse_io.rb +17 -3
- data/lib/denko/rtc/ds3231.rb +4 -3
- data/lib/denko/rtc.rb +14 -1
- data/lib/denko/sensor/aht.rb +16 -20
- data/lib/denko/sensor/bme280.rb +23 -36
- data/lib/denko/sensor/bmp180.rb +8 -13
- data/lib/denko/sensor/dht.rb +17 -7
- data/lib/denko/sensor/ds18b20.rb +5 -4
- data/lib/denko/sensor/hdc1080.rb +174 -0
- data/lib/denko/sensor/htu21d.rb +17 -6
- data/lib/denko/sensor/htu31d.rb +6 -5
- data/lib/denko/sensor/jsnsr04t.rb +49 -0
- data/lib/denko/sensor/qmp6988.rb +14 -30
- data/lib/denko/sensor/rcwl9620.rb +1 -0
- data/lib/denko/sensor/sht3x.rb +6 -5
- data/lib/denko/sensor/sht4x.rb +125 -0
- data/lib/denko/sensor/vl53l0x.rb +58 -0
- data/lib/denko/sensor.rb +33 -15
- data/lib/denko/spi/base_register.rb +11 -7
- data/lib/denko/spi/bus_common.rb +12 -15
- data/lib/denko/spi/input_register.rb +6 -6
- data/lib/denko/spi/output_register.rb +13 -4
- data/lib/denko/spi/peripheral.rb +82 -84
- data/lib/denko/spi.rb +20 -10
- data/lib/denko/uart/bit_bang.rb +2 -27
- data/lib/denko/uart/common.rb +33 -0
- data/lib/denko/uart/hardware.rb +1 -26
- data/lib/denko/uart.rb +16 -2
- data/lib/denko/version.rb +1 -1
- data/lib/denko.rb +22 -25
- data/lib/denko_cli/targets.rb +7 -7
- data/lib/denko_cli/targets.txt +19 -20
- data/src/lib/Denko.cpp +26 -13
- data/src/lib/Denko.h +4 -4
- data/src/lib/DenkoDefines.h +7 -26
- data/src/lib/DenkoLEDArray.cpp +1 -8
- data/src/lib/DenkoSPI.cpp +31 -29
- data/src/lib/DenkoSPIBB.cpp +12 -14
- data/test/analog_io/input_test.rb +1 -1
- data/test/analog_io/potentiometer_test.rb +2 -2
- data/test/behaviors/bus_peripheral_test.rb +4 -4
- data/test/behaviors/callbacks_test.rb +20 -10
- data/test/behaviors/component_test.rb +18 -8
- data/test/board/board_test.rb +9 -9
- data/test/board/one_wire_test.rb +25 -14
- data/test/board/spi_test.rb +31 -15
- data/test/digital_io/input_test.rb +2 -2
- data/test/display/canvas_test.rb +306 -0
- data/test/display/hd44780_test.rb +34 -7
- data/test/eeprom/board_test.rb +45 -0
- data/test/helpers/mruby_minitest.rb +95 -0
- data/test/helpers/mruby_runner.rb +13 -0
- data/test/i2c/bus_test.rb +93 -30
- data/test/i2c/peripheral_test.rb +2 -2
- data/test/led/apa102_test.rb +24 -0
- data/test/led/rgb_test.rb +4 -4
- data/test/motor/{stepper_test.rb → a3967_test.rb} +2 -2
- data/test/one_wire/bus_enumerator_test.rb +1 -1
- data/test/one_wire/bus_test.rb +42 -35
- data/test/one_wire/peripheral_test.rb +5 -17
- data/test/pulse_io/ir_output_test.rb +5 -0
- data/test/pulse_io/pwm_output_test.rb +10 -10
- data/test/rtc/ds3231_test.rb +3 -2
- data/test/sensor/dht_test.rb +11 -11
- data/test/spi/bitbang_test.rb +27 -0
- data/test/spi/bus_test.rb +19 -29
- data/test/spi/input_register_test.rb +2 -2
- data/test/spi/{peripheral_multi_pin_test.rb → peripheral_test.rb} +25 -5
- data/test/test_helper.rb +44 -124
- data/vendor/board-maps/BoardMap.h +264 -0
- data/vendor/board-maps/yaml/ALFREDO_NOU3.yml +2 -0
- data/vendor/board-maps/yaml/ATD143_S3.yml +1 -0
- data/vendor/board-maps/yaml/BHARATPI_A7672S_4G.yml +14 -0
- data/vendor/board-maps/yaml/BHARATPI_LORA.yml +14 -0
- data/vendor/board-maps/yaml/BHARATPI_NODE_WIFI.yml +14 -0
- data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +0 -1
- data/vendor/board-maps/yaml/CEZERIO_DEV_ESP32C6.yml +14 -0
- data/vendor/board-maps/yaml/CEZERIO_MINI_DEV_ESP32C6.yml +12 -0
- data/vendor/board-maps/yaml/CIRCUITART_ZERO_S3.yml +71 -0
- data/vendor/board-maps/yaml/CODECELLC3.yml +13 -0
- data/vendor/board-maps/yaml/CYOBOT_V2_ESP32S3.yml +7 -0
- data/vendor/board-maps/yaml/EDGES3D.yml +25 -0
- data/vendor/board-maps/yaml/ESP32C6_DEV.yml +3 -4
- data/vendor/board-maps/yaml/ESP32C6_THING_PLUS.yml +0 -1
- data/vendor/board-maps/yaml/ESP32H2_DEV.yml +0 -1
- data/vendor/board-maps/yaml/ESP32H2_DEVKIT_LIPO.yml +0 -1
- data/vendor/board-maps/yaml/ESP32P4_DEV.yml +35 -0
- data/vendor/board-maps/yaml/ESP32S2_DEV.yml +0 -1
- data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO.yml +0 -1
- data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO_USB.yml +0 -1
- data/vendor/board-maps/yaml/ESP32_2432S028R.yml +14 -0
- data/vendor/board-maps/yaml/FEATHERS3.yml +1 -1
- data/vendor/board-maps/yaml/FRI3D_2024_ESP32S3.yml +43 -0
- data/vendor/board-maps/yaml/GEEKBLE_ESP32C3.yml +0 -1
- data/vendor/board-maps/yaml/GEEKBLE_NANO_ESP32S3.yml +25 -0
- data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_E290.yml +41 -0
- data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_E_213.yml +41 -0
- data/vendor/board-maps/yaml/HELTEC_VISION_MASTER_T190.yml +41 -0
- data/vendor/board-maps/yaml/HUIDU_HD_WF2.yml +5 -0
- data/vendor/board-maps/yaml/HUIDU_HD_WF4.yml +1 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_CC1101.yml +6 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_LR1121.yml +6 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_SI4432.yml +6 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_SX1262.yml +6 -0
- data/vendor/board-maps/yaml/LILYGO_LORA_SX1280.yml +6 -0
- data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +0 -1
- data/vendor/board-maps/yaml/LOLIN_C3_PICO.yml +1 -2
- data/vendor/board-maps/yaml/LoPy.yml +0 -1
- data/vendor/board-maps/yaml/LoPy4.yml +0 -1
- data/vendor/board-maps/yaml/M5STACK_DINMETER.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_FIRE.yml +1 -1
- data/vendor/board-maps/yaml/OMGS3.yml +25 -0
- data/vendor/board-maps/yaml/PCBCUPID_GLYPHC3.yml +23 -0
- data/vendor/board-maps/yaml/PCBCUPID_GLYPHC6.yml +32 -0
- data/vendor/board-maps/yaml/PCBCUPID_GLYPHH2.yml +24 -0
- data/vendor/board-maps/yaml/PYCOM_GPY.yml +0 -1
- data/vendor/board-maps/yaml/SENSEBOX_MCU_ESP32S2.yml +1 -1
- data/vendor/board-maps/yaml/SPARKFUN_ESP32S3_THING_PLUS.yml +13 -0
- data/vendor/board-maps/yaml/SPARKLEMOTIONMINI_ESP32.yml +12 -0
- data/vendor/board-maps/yaml/SPARKLEMOTIONSTICK_ESP32.yml +11 -0
- data/vendor/board-maps/yaml/SPARKLEMOTION_ESP32.yml +12 -0
- data/vendor/board-maps/yaml/SQUIXL.yml +7 -0
- data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER_C6.yml +0 -1
- data/vendor/board-maps/yaml/T_LORA_PAGER.yml +6 -0
- data/vendor/board-maps/yaml/T_WATCH_S3.yml +7 -0
- data/vendor/board-maps/yaml/T_WATCH_S3_ULTRA.yml +6 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_146.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_147.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_169.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_LCD_185.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_RELAY_6CH.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_143.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_164.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_18.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_191.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_AMOLED_241.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_146.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_169.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_185.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_185_BOX.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_21.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_28.yml +41 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_4.yml +36 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_43.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_43B.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_5.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_5B.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_TOUCH_LCD_7.yml +38 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32_S3_ZERO.yml +36 -0
- data/vendor/board-maps/yaml/WIPY3.yml +0 -1
- data/vendor/board-maps/yaml/WS_ESP32_S3_MATRIX.yml +38 -0
- data/vendor/board-maps/yaml/XIAO_ESP32S3_PLUS.yml +46 -0
- data/vendor/board-maps/yaml/YB_ESP32S3_AMP_V2.yml +28 -0
- data/vendor/board-maps/yaml/YB_ESP32S3_AMP_V3.yml +28 -0
- data/vendor/board-maps/yaml/YB_ESP32S3_ETH.yml +40 -0
- data/vendor/board-maps/yaml/mercury.yml +20 -0
- metadata +116 -101
- data/.vscode/settings.json +0 -5
- data/.vscode/tasks.json +0 -20
- data/HARDWARE.md +0 -263
- data/benchmarks/analog_listen.rb +0 -49
- data/benchmarks/digital_write.rb +0 -28
- data/benchmarks/i2c_ssd1306_refresh.rb +0 -91
- data/examples/advanced/m5_env3.rb +0 -46
- data/examples/advanced/rotary_encoder_mac_volume.rb +0 -53
- data/examples/advanced/ssd1306_time_temp_rh.rb +0 -43
- data/examples/analog_io/ads1100.rb +0 -48
- data/examples/analog_io/ads1115.rb +0 -57
- data/examples/analog_io/ads1118.rb +0 -65
- data/examples/analog_io/dac_loopback.rb +0 -34
- data/examples/analog_io/input.rb +0 -56
- data/examples/analog_io/input_smoothing.rb +0 -27
- data/examples/analog_io/potentiometer.rb +0 -31
- data/examples/connection/binary_echo.rb +0 -34
- data/examples/connection/tcp.rb +0 -19
- data/examples/digital_io/button.rb +0 -17
- data/examples/digital_io/relay.rb +0 -17
- data/examples/digital_io/rotary_encoder.rb +0 -36
- data/examples/display/hd44780.png +0 -0
- data/examples/display/hd44780.rb +0 -47
- data/examples/display/ssd1306.rb +0 -43
- data/examples/display/ssd1306_s2_pico.rb +0 -29
- data/examples/eeprom/built_in.rb +0 -32
- data/examples/i2c/search.rb +0 -39
- data/examples/led/apa102_bounce.rb +0 -32
- data/examples/led/apa102_fade.rb +0 -44
- data/examples/led/builtin_blink.rb +0 -14
- data/examples/led/builtin_fade.rb +0 -19
- data/examples/led/rgb_led.rb +0 -31
- data/examples/led/seven_segment_char_echo.rb +0 -17
- data/examples/led/ws2812_bounce.rb +0 -30
- data/examples/led/ws2812_builtin_blink.rb +0 -22
- data/examples/led/ws2812_fade.rb +0 -43
- data/examples/motor/l298.rb +0 -45
- data/examples/motor/servo.rb +0 -17
- data/examples/motor/stepper.png +0 -0
- data/examples/motor/stepper.rb +0 -43
- data/examples/one_wire/search.rb +0 -32
- data/examples/pulse_io/buzzer.rb +0 -35
- data/examples/pulse_io/ir_output.rb +0 -51
- data/examples/pulse_io/pwm_output.rb +0 -30
- data/examples/rtc/ds3231.rb +0 -31
- data/examples/sensor/aht10.rb +0 -17
- data/examples/sensor/aht20.rb +0 -17
- data/examples/sensor/bme280.rb +0 -38
- data/examples/sensor/bmp180.rb +0 -26
- data/examples/sensor/dht.rb +0 -29
- data/examples/sensor/ds18b20.rb +0 -57
- data/examples/sensor/generic_pir.rb +0 -27
- data/examples/sensor/hcsr04.rb +0 -17
- data/examples/sensor/htu21d.rb +0 -43
- data/examples/sensor/htu31d.rb +0 -33
- data/examples/sensor/neat_tph_readings.rb +0 -32
- data/examples/sensor/qmp6988.rb +0 -51
- data/examples/sensor/rcwl9620.rb +0 -15
- data/examples/sensor/sht3x.rb +0 -32
- data/examples/spi/bitbang_loopback.rb +0 -46
- data/examples/spi/input_register.rb +0 -40
- data/examples/spi/output_register.rb +0 -41
- data/examples/spi/ssd_through_registers.rb +0 -28
- data/examples/spi/two_registers.rb +0 -40
- data/examples/uart/bit_bang_demo.rb +0 -25
- data/examples/uart/board_passthrough.rb +0 -40
- data/examples/uart/hardware_loopback.rb +0 -16
- data/lib/denko/eeprom/built_in.rb +0 -72
- data/lib/denko/fonts.rb +0 -106
- data/test/eeprom/built_in_test.rb +0 -61
- data/test/spi/peripheral_single_pin_test.rb +0 -48
- data/tutorial/01-led/led.fzz +0 -0
- data/tutorial/01-led/led.pdf +0 -0
- data/tutorial/01-led/led.rb +0 -73
- data/tutorial/02-button/button.fzz +0 -0
- data/tutorial/02-button/button.pdf +0 -0
- data/tutorial/02-button/button.rb +0 -65
- data/tutorial/03-potentiometer/potentiometer.fzz +0 -0
- data/tutorial/03-potentiometer/potentiometer.pdf +0 -0
- data/tutorial/03-potentiometer/potentiometer.rb +0 -66
- data/tutorial/04-pwm_led/pwm_led.fzz +0 -0
- data/tutorial/04-pwm_led/pwm_led.pdf +0 -0
- data/tutorial/04-pwm_led/pwm_led.rb +0 -64
- data/tutorial/05-rgb_led/rgb_led.fzz +0 -0
- data/tutorial/05-rgb_led/rgb_led.pdf +0 -0
- data/tutorial/05-rgb_led/rgb_led.rb +0 -58
- 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
|
51
|
-
@
|
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, :
|
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
|
101
|
-
proxy_pin
|
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.
|
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
|
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
|
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 :
|
173
|
+
alias :move_to :text_cursor
|
169
174
|
|
170
|
-
def
|
171
|
-
|
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
|
182
|
-
cursor
|
183
|
-
blink
|
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
|
191
|
+
define_method (key + "_off") do
|
187
192
|
command LCD_DISPLAYCONTROL | (self.control &= ~CONTROL_TOGGLES[key])
|
188
193
|
end
|
189
|
-
define_method (key
|
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
|
-
|
250
|
+
data_lines == 8 ? write8(bits_from_byte) : write4(bits_from_byte)
|
247
251
|
end
|
248
252
|
|
249
253
|
def write4(bits)
|
250
|
-
if
|
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
|
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)
|