denko 0.13.6 → 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_avr.yml → build_atmega_avr.yml} +19 -18
- data/.github/workflows/{build_megaavr.yml → build_atmega_megaavr.yml} +19 -18
- data/.github/workflows/{build_sam3x.yml → build_atsam3x.yml} +18 -17
- data/.github/workflows/{build_samd.yml → build_atsamd21.yml} +19 -18
- data/.github/workflows/build_esp32.yml +19 -18
- data/.github/workflows/build_esp32c3.yml +58 -0
- data/.github/workflows/build_esp32c6.yml +59 -0
- data/.github/workflows/build_esp32h2.yml +58 -0
- data/.github/workflows/build_esp32s2.yml +59 -0
- data/.github/workflows/build_esp32s3.yml +59 -0
- data/.github/workflows/build_esp8266.yml +16 -15
- data/.github/workflows/build_ra4m1.yml +17 -16
- data/.github/workflows/build_rp2040.yml +19 -17
- data/.github/workflows/ruby.yml +20 -20
- data/CHANGELOG.md +398 -11
- data/DEPS_CLI.md +16 -16
- data/DEPS_IDE.md +39 -39
- data/MICROCONTROLLERS.md +103 -0
- data/PERIPHERALS.md +178 -0
- data/README.md +73 -58
- data/Rakefile +1 -1
- data/build +1 -1
- data/denko.gemspec +11 -3
- data/lib/denko/analog_io/ads1100.rb +127 -0
- data/lib/denko/analog_io/ads1115.rb +8 -25
- data/lib/denko/analog_io/ads1118.rb +12 -27
- data/lib/denko/analog_io/ads111x.rb +39 -21
- data/lib/denko/analog_io/input.rb +29 -55
- data/lib/denko/analog_io/input_helper.rb +42 -0
- data/lib/denko/analog_io/joystick.rb +87 -0
- data/lib/denko/analog_io/output.rb +5 -5
- data/lib/denko/analog_io/potentiometer.rb +3 -9
- data/lib/denko/analog_io.rb +22 -7
- data/lib/denko/behaviors/board_proxy.rb +13 -1
- data/lib/denko/behaviors/bus_controller.rb +3 -1
- data/lib/denko/behaviors/bus_controller_addressed.rb +1 -0
- data/lib/denko/behaviors/bus_peripheral.rb +3 -4
- data/lib/denko/behaviors/bus_peripheral_addressed.rb +8 -6
- data/lib/denko/behaviors/callbacks.rb +18 -14
- data/lib/denko/behaviors/component.rb +12 -14
- data/lib/denko/behaviors/input_pin.rb +14 -15
- data/lib/denko/behaviors/lifecycle.rb +51 -0
- data/lib/denko/behaviors/listener.rb +9 -3
- data/lib/denko/behaviors/multi_pin.rb +22 -20
- data/lib/denko/behaviors/output_pin.rb +9 -4
- data/lib/denko/behaviors/poller.rb +11 -2
- data/lib/denko/behaviors/reader.rb +109 -21
- data/lib/denko/behaviors/single_pin.rb +3 -4
- data/lib/denko/behaviors/state.rb +24 -13
- data/lib/denko/behaviors/subcomponents.rb +72 -12
- data/lib/denko/behaviors/threaded.rb +19 -8
- data/lib/denko/behaviors.rb +36 -22
- data/lib/denko/board/core.rb +36 -18
- data/lib/denko/board/eeprom.rb +1 -1
- data/lib/denko/board/i2c.rb +15 -15
- data/lib/denko/board/i2c_bit_bang.rb +53 -0
- data/lib/denko/board/infrared.rb +6 -6
- data/lib/denko/board/led_array.rb +6 -5
- data/lib/denko/board/map.rb +6 -2
- data/lib/denko/board/one_wire.rb +3 -3
- data/lib/denko/board/spi.rb +35 -30
- data/lib/denko/board/spi_bit_bang.rb +14 -15
- data/lib/denko/board.rb +41 -36
- data/lib/denko/connection/binary_echo.rb +17 -0
- data/lib/denko/connection/flow_control.rb +12 -16
- data/lib/denko/connection/handshake.rb +2 -0
- data/lib/denko/connection/serial.rb +5 -5
- data/lib/denko/digital_io/button.rb +4 -0
- data/lib/denko/digital_io/c_bit_bang.rb +15 -0
- data/lib/denko/digital_io/input.rb +4 -5
- data/lib/denko/digital_io/output.rb +19 -10
- data/lib/denko/digital_io/pcf8574.rb +114 -0
- data/lib/denko/digital_io/relay.rb +2 -0
- data/lib/denko/digital_io/rotary_encoder.rb +83 -61
- data/lib/denko/digital_io.rb +24 -5
- 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 +152 -105
- 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 +38 -0
- 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 -168
- 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 -3
- 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/helpers/mutex_stub.rb +13 -0
- data/lib/denko/helpers.rb +6 -0
- data/lib/denko/i2c/bit_bang.rb +32 -0
- data/lib/denko/i2c/bus.rb +8 -36
- data/lib/denko/i2c/bus_common.rb +50 -0
- data/lib/denko/i2c/peripheral.rb +32 -19
- data/lib/denko/i2c.rb +17 -2
- data/lib/denko/led/apa102.rb +42 -30
- data/lib/denko/led/base.rb +13 -2
- data/lib/denko/led/rgb.rb +18 -14
- data/lib/denko/led/seven_segment.rb +24 -9
- data/lib/denko/led/ws2812.rb +10 -7
- data/lib/denko/led.rb +17 -8
- data/lib/denko/message.rb +5 -0
- data/lib/denko/motor/{stepper.rb → a3967.rb} +12 -15
- data/lib/denko/motor/l298.rb +11 -10
- data/lib/denko/motor/servo.rb +37 -15
- data/lib/denko/motor.rb +16 -3
- data/lib/denko/one_wire/bus.rb +31 -23
- data/lib/denko/one_wire/bus_enumerator.rb +25 -14
- data/lib/denko/one_wire/helper.rb +4 -2
- data/lib/denko/one_wire/peripheral.rb +0 -3
- data/lib/denko/one_wire.rb +18 -5
- data/lib/denko/pulse_io/buzzer.rb +11 -9
- data/lib/denko/pulse_io/{ir_transmitter.rb → ir_output.rb} +6 -5
- data/lib/denko/pulse_io/pwm_output.rb +94 -15
- data/lib/denko/pulse_io.rb +17 -3
- data/lib/denko/rtc/ds3231.rb +13 -14
- data/lib/denko/rtc.rb +14 -1
- data/lib/denko/sensor/aht.rb +35 -38
- data/lib/denko/sensor/bme280.rb +76 -92
- data/lib/denko/sensor/bmp180.rb +46 -48
- data/lib/denko/sensor/dht.rb +34 -7
- data/lib/denko/sensor/ds18b20.rb +41 -34
- data/lib/denko/sensor/hcsr04.rb +7 -5
- data/lib/denko/sensor/hdc1080.rb +174 -0
- data/lib/denko/sensor/helper.rb +37 -0
- data/lib/denko/sensor/htu21d.rb +57 -57
- data/lib/denko/sensor/htu31d.rb +36 -36
- data/lib/denko/sensor/jsnsr04t.rb +49 -0
- data/lib/denko/sensor/qmp6988.rb +34 -48
- data/lib/denko/sensor/rcwl9620.rb +3 -5
- data/lib/denko/sensor/sht3x.rb +27 -24
- data/lib/denko/sensor/sht4x.rb +125 -0
- data/lib/denko/sensor/vl53l0x.rb +58 -0
- data/lib/denko/sensor.rb +33 -16
- data/lib/denko/spi/base_register.rb +25 -21
- data/lib/denko/spi/bit_bang.rb +17 -51
- data/lib/denko/spi/bus.rb +15 -29
- data/lib/denko/spi/bus_common.rb +33 -0
- data/lib/denko/spi/input_register.rb +37 -31
- data/lib/denko/spi/output_register.rb +33 -39
- data/lib/denko/spi/peripheral.rb +81 -14
- data/lib/denko/spi.rb +21 -6
- data/lib/denko/uart/bit_bang.rb +7 -30
- data/lib/denko/uart/common.rb +33 -0
- data/lib/denko/uart/hardware.rb +10 -34
- data/lib/denko/uart.rb +16 -2
- data/lib/denko/version.rb +1 -1
- data/lib/denko.rb +23 -16
- data/lib/denko_cli/generator.rb +2 -2
- data/lib/denko_cli/packages.rb +8 -10
- data/lib/denko_cli/targets.rb +13 -13
- data/lib/denko_cli/targets.txt +23 -24
- data/lib/denko_cli/usage.txt +1 -1
- data/src/denko_ethernet.ino +0 -14
- data/src/denko_serial.ino +0 -14
- data/src/denko_wifi.ino +6 -15
- data/src/lib/Denko.cpp +65 -16
- data/src/lib/Denko.h +46 -30
- data/src/lib/DenkoCoreIO.cpp +57 -102
- data/src/lib/DenkoDefines.h +32 -46
- data/src/lib/DenkoI2C.cpp +54 -45
- data/src/lib/DenkoI2CBB.cpp +238 -0
- data/src/lib/DenkoIROut.cpp +12 -7
- data/src/lib/DenkoLEDArray.cpp +29 -13
- data/src/lib/DenkoSPI.cpp +36 -33
- data/src/lib/DenkoSPIBB.cpp +19 -20
- data/target.yml +37 -2
- data/test/analog_io/input_test.rb +1 -1
- data/test/analog_io/potentiometer_test.rb +12 -12
- data/test/behaviors/board_proxy_test.rb +1 -1
- data/test/behaviors/bus_peripheral_test.rb +4 -4
- data/test/behaviors/callbacks_test.rb +28 -10
- data/test/behaviors/component_test.rb +32 -14
- data/test/behaviors/input_pin_test.rb +14 -9
- data/test/behaviors/multi_pin_test.rb +14 -4
- data/test/behaviors/output_pin_test.rb +11 -8
- data/test/behaviors/poller_test.rb +1 -0
- data/test/behaviors/reader_test.rb +3 -2
- data/test/behaviors/subcomponents_test.rb +22 -2
- data/test/board/board_test.rb +9 -9
- data/test/board/core_test.rb +15 -11
- data/test/board/i2c_test.rb +39 -33
- data/test/board/infrared_test.rb +1 -1
- data/test/board/message_test.rb +17 -11
- data/test/board/one_wire_test.rb +25 -14
- data/test/board/spi_test.rb +45 -29
- data/test/digital_io/button_test.rb +15 -0
- data/test/digital_io/input_test.rb +2 -2
- data/test/digital_io/relay_test.rb +18 -0
- data/test/digital_io/rotary_encoder_test.rb +80 -60
- 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 +108 -29
- data/test/i2c/peripheral_test.rb +38 -19
- data/test/led/apa102_test.rb +24 -0
- data/test/led/base_test.rb +2 -1
- data/test/led/rgb_test.rb +9 -9
- data/test/led/seven_segment_test.rb +7 -7
- data/test/motor/{stepper_test.rb → a3967_test.rb} +4 -4
- data/test/motor/servo_test.rb +1 -1
- data/test/one_wire/bus_enumerator_test.rb +1 -1
- data/test/one_wire/bus_test.rb +43 -35
- data/test/one_wire/peripheral_test.rb +5 -17
- data/test/pulse_io/buzzer_test.rb +7 -4
- data/test/pulse_io/{ir_transmitter_test.rb → ir_output_test.rb} +15 -10
- data/test/pulse_io/pwm_output_test.rb +74 -18
- data/test/rtc/ds3231_test.rb +13 -14
- data/test/sensor/dht_test.rb +12 -12
- data/test/sensor/ds18b20_test.rb +4 -8
- data/test/spi/bitbang_test.rb +27 -0
- data/test/spi/bus_test.rb +24 -34
- data/test/spi/input_register_test.rb +17 -17
- data/test/spi/output_register_test.rb +10 -28
- data/test/spi/peripheral_test.rb +73 -0
- data/test/test_helper.rb +44 -121
- data/vendor/board-maps/BoardMap.h +678 -54
- data/vendor/board-maps/lib/header_parser.rb +12 -2
- data/vendor/board-maps/yaml/ADAFRUIT_CAMERA_ESP32S3.yml +2 -2
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32C6.yml +15 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32_V2.yml +1 -1
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_ADALOGGER.yml +44 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32C3.yml +1 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S2.yml +1 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_N4R2.yml +1 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_NOPSRAM.yml +1 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32_PICO.yml +1 -0
- data/vendor/board-maps/yaml/ALFREDO_NOU3.yml +2 -0
- data/vendor/board-maps/yaml/AMKEN_BB.yml +48 -0
- data/vendor/board-maps/yaml/AMKEN_ES.yml +48 -0
- data/vendor/board-maps/yaml/AMKEN_REVELOP.yml +48 -0
- data/vendor/board-maps/yaml/AMKEN_REVELOP_PLUS.yml +48 -0
- data/vendor/board-maps/yaml/ASL_CAN_X2.yml +41 -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/BLING.yml +25 -0
- data/vendor/board-maps/yaml/BRIDGETEK_IDM2040_7A.yml +48 -0
- data/vendor/board-maps/yaml/Bee_Motion_Mini.yml +13 -1
- data/vendor/board-maps/yaml/Breadstick_Raspberry.yml +31 -0
- 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/DFROBOT_BEETLE_ESP32C6.yml +8 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32C6.yml +20 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_ESP32.yml +46 -0
- data/vendor/board-maps/yaml/DPTECHNICS_WALTER.yml +39 -0
- data/vendor/board-maps/yaml/EDGES3D.yml +25 -0
- data/vendor/board-maps/yaml/ELECROW_CROWPANEL_7.yml +8 -0
- data/vendor/board-maps/yaml/ESP32C2_DEV.yml +12 -0
- data/vendor/board-maps/yaml/ESP32C3_DEVKIT_LIPO.yml +14 -0
- data/vendor/board-maps/yaml/ESP32C6_DEV.yml +14 -0
- data/vendor/board-maps/yaml/ESP32C6_EVB.yml +15 -0
- data/vendor/board-maps/yaml/ESP32C6_QWIIC_POCKET.yml +15 -0
- data/vendor/board-maps/yaml/ESP32C6_THING_PLUS.yml +14 -0
- data/vendor/board-maps/yaml/ESP32H2_DEV.yml +12 -0
- data/vendor/board-maps/yaml/ESP32H2_DEVKIT_LIPO.yml +12 -0
- data/vendor/board-maps/yaml/ESP32P4_DEV.yml +35 -0
- data/vendor/board-maps/yaml/{RMP.yml → ESP32S2_DEVKIT_LIPO.yml} +1 -1
- data/vendor/board-maps/yaml/ESP32S2_DEVKIT_LIPO_USB.yml +43 -0
- data/vendor/board-maps/yaml/ESP32S3_DEVKIT_LIPO.yml +42 -0
- data/vendor/board-maps/yaml/ESP32S3_POWERFEATHER.yml +22 -0
- data/vendor/board-maps/yaml/ESP32_2432S028R.yml +14 -0
- data/vendor/board-maps/yaml/ESP32_SBC_FABGL.yml +35 -0
- data/vendor/board-maps/yaml/EVN_ALPHA.yml +48 -0
- data/vendor/board-maps/yaml/FEATHERS3.yml +1 -1
- data/vendor/board-maps/yaml/FEATHERS3NEO.yml +32 -0
- data/vendor/board-maps/yaml/FRI3D_2024_ESP32S3.yml +43 -0
- data/vendor/board-maps/yaml/GEEKBLE_ESP32C3.yml +13 -0
- data/vendor/board-maps/yaml/GEEKBLE_NANO_ESP32S3.yml +25 -0
- data/vendor/board-maps/yaml/HELTEC_CAPSULE_SENSOR_V3.yml +43 -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/HELTEC_WIFI_LORA_32_V3.yml +42 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_BRIDGE.yml +8 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_MINI_SHELL.yml +13 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_PAPER.yml +42 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_SHELL_V3.yml +42 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_STICK_LITE_V3.yml +30 -0
- data/vendor/board-maps/yaml/HELTEC_WIRELESS_TRACKER.yml +41 -0
- data/vendor/board-maps/yaml/HT_DE01.yml +42 -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/IMBRIOS_LOGSENS_V1P1.yml +1 -1
- 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/LILYGO_T3S3_LR1121.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1262.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1276.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1278.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1280.yml +9 -0
- data/vendor/board-maps/yaml/LILYGO_T3S3_SX1280PA.yml +8 -0
- data/vendor/board-maps/yaml/LILYGO_T_ETH_LITE.yml +21 -0
- data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +0 -1
- data/vendor/board-maps/yaml/LOLIN_C3_PICO.yml +13 -0
- data/vendor/board-maps/yaml/LOLIN_S3.yml +1 -0
- data/vendor/board-maps/yaml/LOLIN_S3_MINI_PRO.yml +40 -0
- data/vendor/board-maps/yaml/Lion_Bit_Dev_Board.yml +0 -2
- data/vendor/board-maps/yaml/M5STACK_CAPSULE.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_CARDPUTER.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_DIAL.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_DINMETER.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_FIRE.yml +1 -2
- data/vendor/board-maps/yaml/M5STACK_NANOC6.yml +17 -0
- data/vendor/board-maps/yaml/M5STACK_PAPER.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_POE_CAM.yml +5 -0
- data/vendor/board-maps/yaml/M5STACK_STAMP_C3.yml +13 -0
- data/vendor/board-maps/yaml/M5STACK_STAMP_S3.yml +4 -0
- data/vendor/board-maps/yaml/{M5Stick_C.yml → M5STACK_STICKC.yml} +0 -1
- data/vendor/board-maps/yaml/M5STACK_STICKC_PLUS.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_STICKC_PLUS2.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_TOUGH.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_UNIT_CAM.yml +10 -0
- data/vendor/board-maps/yaml/M5STACK_UNIT_CAMS3.yml +4 -0
- data/vendor/board-maps/yaml/M5Stack_ATOM.yml +0 -1
- data/vendor/board-maps/yaml/MAKERGO_C3_SUPERMINI.yml +14 -0
- data/vendor/board-maps/yaml/MARBLE_PICO.yml +48 -0
- data/vendor/board-maps/yaml/METEHOCA_AKANA_R1.yml +46 -0
- data/vendor/board-maps/yaml/NAMINO_BIANCO.yml +13 -0
- data/vendor/board-maps/yaml/NEBULAS3.yml +0 -1
- data/vendor/board-maps/yaml/NEWSAN_ARCHI.yml +48 -0
- data/vendor/board-maps/yaml/NOLOGO_ESP32C3_SUPER_MINI.yml +14 -0
- data/vendor/board-maps/yaml/NOLOGO_ESP32S3_PICO.yml +12 -0
- data/vendor/board-maps/yaml/OLIMEX_RP2040_PICO30_16MB.yml +48 -0
- data/vendor/board-maps/yaml/OLIMEX_RP2040_PICO30_2MB.yml +48 -0
- data/vendor/board-maps/yaml/OMGS3.yml +25 -0
- data/vendor/board-maps/yaml/OPTA_ANALOG.yml +7 -0
- data/vendor/board-maps/yaml/OPTA_DIGITAL.yml +5 -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/PINTRONIX_PINMAX.yml +42 -0
- data/vendor/board-maps/yaml/REDPILL_ESP32S3.yml +0 -1
- data/vendor/board-maps/yaml/SENSEBOX_MCU_ESP32S2.yml +12 -0
- data/vendor/board-maps/yaml/SPARKFUN_ESP32S3_THING_PLUS.yml +13 -0
- data/vendor/board-maps/yaml/SPARKFUN_MICROMOD_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/SPARKFUN_PRO_MICRO_ESP32C3.yml +24 -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.yml +31 -0
- data/vendor/board-maps/yaml/THINGPULSE_EPULSE_FEATHER_C6.yml +14 -0
- data/vendor/board-maps/yaml/TINYC6.yml +25 -0
- 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/UPESY_EDU_ESP32.yml +28 -0
- data/vendor/board-maps/yaml/UPESY_ESP32C3_BASIC.yml +13 -0
- data/vendor/board-maps/yaml/UPESY_ESP32C3_MINI.yml +12 -0
- data/vendor/board-maps/yaml/UPESY_ESP32S3_BASIC.yml +42 -0
- data/vendor/board-maps/yaml/VIRALINK_GATE32_01.yml +6 -0
- data/vendor/board-maps/yaml/VIRALINK_GATE32_11.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_ESP32S3_TOUCH_LCD_128.yml +8 -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/WAVESHARE_RP2040_MATRIX.yml +48 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_ONE.yml +1 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_PIZERO.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_ZERO.yml +1 -0
- data/vendor/board-maps/yaml/WEACT_STUDIO_ESP32C3.yml +14 -0
- data/vendor/board-maps/yaml/WS_ESP32_S3_MATRIX.yml +38 -0
- data/vendor/board-maps/yaml/WT32_SC01_PLUS.yml +7 -0
- data/vendor/board-maps/yaml/WiFiduinoV2.yml +1 -0
- data/vendor/board-maps/yaml/XIAO_ESP32C3.yml +0 -1
- data/vendor/board-maps/yaml/XIAO_ESP32C6.yml +22 -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
- data/vendor/board-maps/yaml/unphone9.yml +8 -0
- metadata +259 -105
- data/.vscode/settings.json +0 -5
- data/.vscode/tasks.json +0 -20
- data/HARDWARE.md +0 -264
- data/benchmarks/i2c_ssd1306_refresh.rb +0 -84
- data/examples/advanced/m5_env.rb +0 -48
- data/examples/advanced/rotary_encoder_mac_volume.rb +0 -48
- data/examples/advanced/ssd1306_time_temp_rh.rb +0 -48
- data/examples/analog_io/ads1115.rb +0 -57
- data/examples/analog_io/ads1118.rb +0 -73
- data/examples/analog_io/dac_loopback.rb +0 -34
- data/examples/analog_io/input.rb +0 -55
- data/examples/connection/tcp.rb +0 -34
- data/examples/digital_io/button.rb +0 -13
- data/examples/digital_io/rotary_encoder.rb +0 -26
- data/examples/display/hd44780.png +0 -0
- data/examples/display/hd44780.rb +0 -39
- data/examples/display/ssd1306.rb +0 -40
- data/examples/display/ssd1306_s2_pico.rb +0 -29
- data/examples/eeprom/built_in.rb +0 -32
- data/examples/i2c/search.rb +0 -55
- data/examples/led/apa102_bounce.rb +0 -33
- data/examples/led/apa102_breathe.rb +0 -45
- data/examples/led/builtin_blink.rb +0 -12
- data/examples/led/seven_segment_char_echo.rb +0 -15
- data/examples/led/ws2812_bounce.rb +0 -32
- data/examples/led/ws2812_builtin_blink.rb +0 -21
- data/examples/motor/l298.rb +0 -43
- data/examples/motor/servo.rb +0 -16
- data/examples/motor/stepper.png +0 -0
- data/examples/motor/stepper.rb +0 -43
- data/examples/pulse_io/buzzer.rb +0 -30
- data/examples/pulse_io/ir_transmitter.rb +0 -55
- data/examples/rtc/ds3231.rb +0 -48
- data/examples/sensor/aht10.rb +0 -19
- data/examples/sensor/aht20.rb +0 -19
- data/examples/sensor/bme280.rb +0 -38
- data/examples/sensor/bmp180.rb +0 -22
- data/examples/sensor/dht.rb +0 -24
- data/examples/sensor/ds18b20.rb +0 -58
- data/examples/sensor/generic_pir.rb +0 -25
- data/examples/sensor/hcsr04.rb +0 -14
- data/examples/sensor/htu21d.rb +0 -54
- data/examples/sensor/htu31d.rb +0 -35
- data/examples/sensor/neat_tph_readings.rb +0 -26
- data/examples/sensor/qmp6988.rb +0 -53
- data/examples/sensor/rcwl9620.rb +0 -15
- data/examples/sensor/sht3x.rb +0 -34
- data/examples/spi/input_register.rb +0 -50
- data/examples/spi/output_register.rb +0 -49
- data/examples/spi/ssd_through_register.rb +0 -40
- data/examples/spi/two_registers.rb +0 -46
- data/examples/uart/bit_bang_read.rb +0 -16
- data/examples/uart/bit_bang_write.rb +0 -16
- data/examples/uart/board_passthrough.rb +0 -34
- data/examples/uart/hardware_loopback.rb +0 -16
- data/lib/denko/analog_io/sensor.rb +0 -6
- data/lib/denko/eeprom/built_in.rb +0 -69
- data/lib/denko/fonts.rb +0 -106
- data/lib/denko/sensor/virtual.rb +0 -42
- data/src/lib/DenkoIROutESP.cpp +0 -26
- data/test/eeprom/built_in_test.rb +0 -61
- 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 -64
- data/tutorial/03-potentiometer/potentiometer.fzz +0 -0
- data/tutorial/03-potentiometer/potentiometer.pdf +0 -0
- data/tutorial/03-potentiometer/potentiometer.rb +0 -62
- 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 -66
- 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
- data/vendor/board-maps/yaml/STAMP_S3.yml +0 -8
- /data/vendor/board-maps/yaml/{BRIDGETEK_IDM2040-7A.yml → BRIDGETEK_IDM2040_43A.yml} +0 -0
- /data/vendor/board-maps/yaml/{heltec_wifi_32_lora_V3.yml → HELTEC_WIRELESS_STICK_V3.yml} +0 -0
- /data/vendor/board-maps/yaml/{M5Stack_Core_ESP32.yml → M5STACK_CORE.yml} +0 -0
- /data/vendor/board-maps/yaml/{M5Stamp_Pico.yml → M5STACK_STAMP_PICO.yml} +0 -0
- /data/vendor/board-maps/yaml/{M5Stack-Timer-CAM.yml → M5STACK_TIMER_CAM.yml} +0 -0
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,392 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.15.0
|
4
|
+
|
5
|
+
### New Platform
|
6
|
+
|
7
|
+
Denko now runs on mruby! This means it can run on smaller devices. The first of these is the:
|
8
|
+
|
9
|
+
- Milk-V Duo
|
10
|
+
- Same footprint as Raspberry Pi Pico
|
11
|
+
- Runs Buildroot Linux on a 1GHz RISC-V CPU
|
12
|
+
- Prebuilt binaries and instructions available [here](https://github.com/denko-rb/mruby-denko-milkv-duo)
|
13
|
+
- Limitations:
|
14
|
+
- UART not supported yet. Consequently, the `JSNSR04T` sensor won't be fully supported either.
|
15
|
+
- Duo has no on-board DAC, but `AnalogIO::Output` should work when support for external DACs is added.
|
16
|
+
|
17
|
+
### Updated Platforms
|
18
|
+
|
19
|
+
- See [denko-piboard](https://github.com/denko-rb/denko-piboard) release notes for its matching 0.15.0 release. This is Denko for "big" Linux SBCs running CRuby.
|
20
|
+
|
21
|
+
### New Peripherals
|
22
|
+
|
23
|
+
- `AnalogIO::Joystick` -
|
24
|
+
- MultiPin. Give `x:` and `y:` in `:pins` of initialize. Both must be analog input capable.
|
25
|
+
- Inversion configurable, per axis
|
26
|
+
- Axes are swappable
|
27
|
+
- Deadzone and maxzone configurable, _NOT_ per axis
|
28
|
+
|
29
|
+
- `DigitalIO::PCF8574` -
|
30
|
+
- 8-bit (channel) bi-directional I/O expander over I2C
|
31
|
+
- Is a `BoardProxy` so `DigitalIO` components may treat it as `Board`. Not recommended for fast inputs.
|
32
|
+
- Common in "backpacks" attached to HD44780 LCDs. See [example](examples/display/hd44780_thru_pcf8574.rb)
|
33
|
+
|
34
|
+
- `Display::IL0373` :
|
35
|
+
- 212 x 104 pixel E-Paper display over SPI
|
36
|
+
- Black/White and Black/Red/White versions supported (B/R/W version not tested in hardware)
|
37
|
+
- Hardware controls: black channel inversion, H/V reflection, rotation
|
38
|
+
|
39
|
+
- `Display::PCD8544` -
|
40
|
+
- 84 x 48 pixel backlit mono LCD over SPI
|
41
|
+
- Old design from Nokia phones in late 90's and early 00's
|
42
|
+
- Hardware controls: inversion, contrast (Vop), bias
|
43
|
+
- Gotcha: Pixels appear to have an aspect ratio of about 0.8
|
44
|
+
|
45
|
+
- `Display::SH1107` -
|
46
|
+
- 128 x 128 mono OLED over I2C or SPI
|
47
|
+
|
48
|
+
- `Display::SSD1680` -
|
49
|
+
- 296 x 128 pixel E-Paper display over SPI
|
50
|
+
- Black/White and Black/Red/White versions supported
|
51
|
+
- Hardware controls: black channel inversion, horizontal reflection
|
52
|
+
|
53
|
+
- `Display::SSD1681` -
|
54
|
+
- 200 x 200 pixel variation of SSD1680
|
55
|
+
|
56
|
+
- `Display::ST7302` -
|
57
|
+
- 250 x 122 pixel mono reflective LCD over SPI
|
58
|
+
- Hardware controls: inversion, refresh rate
|
59
|
+
|
60
|
+
- `Display::ST7565` -
|
61
|
+
- 128 x 64 pixel backlit LCD over SPI
|
62
|
+
- Hardware controls: inversion, H/V reflection, rotation, brightness
|
63
|
+
|
64
|
+
- `EEPROM::AT24C` -
|
65
|
+
- 32, 64 128 or 256 kib EEPROM over I2C
|
66
|
+
- Direct read/write with interface similar to Array. `#[]` and `#[]=`
|
67
|
+
|
68
|
+
- `Sensor::AHT3X` -
|
69
|
+
- Temperature + Relative Humidity sensor over I2C
|
70
|
+
|
71
|
+
- `Sensor::HDC1080` -
|
72
|
+
- Temperature + Relative Humidity sensor over I2C
|
73
|
+
- Can also monitor battery level. `#battery_low?` is true when VCC < 2.8V.
|
74
|
+
|
75
|
+
- `Sensor::JSNSR04T` -
|
76
|
+
- Waterproof ultrasonic distance sensor, similar to HC-SR04
|
77
|
+
- Mode 1 supported by `Sensor::HCSR04` class
|
78
|
+
- This new class only supports mode 2 (UART mode)
|
79
|
+
- Requires `board:` AND `uart:` in initialize hash
|
80
|
+
- UART must be set to 9600 baud beforehand
|
81
|
+
|
82
|
+
- `Sensor::SHT4X` -
|
83
|
+
- Temperature + Relative Humidity sensor over I2C
|
84
|
+
|
85
|
+
- `Sensor::VL53L0X` -
|
86
|
+
- Laser distance sensor over I2C
|
87
|
+
- 20 - 2000mm range
|
88
|
+
- Only continuous mode implemented. No configuration yet.
|
89
|
+
- Has `#smoothing=` and `#smoothing_size=` for moving averages, like `AnalogIO::Input`
|
90
|
+
|
91
|
+
### Peripheral Changes
|
92
|
+
- `Display::Canvas` -
|
93
|
+
- `#print` changed to `#text`
|
94
|
+
- `#print_char` changed to `#draw_char`
|
95
|
+
- All drawing methods (`#set_pixel`, `#line`, `#circle` etc.) changed to only take keyword arguments
|
96
|
+
- Removed all `#filled_*` methods. Give `filled: true` to any shape method for the same result instead.
|
97
|
+
- Added `#current_color=` to set the default color for drawing when `color:` not given
|
98
|
+
- Fonts can be any size and don't need to align to page boundaries now
|
99
|
+
- Unset pixels/bits in fonts are now ignored (effectively transparent)
|
100
|
+
- Added more fonts
|
101
|
+
- Added integer scaling for fonts
|
102
|
+
- Added `#rotate(degrees)`
|
103
|
+
- Added `#reflect(axis)`, `#reflect_x`, and `#reflect_y`
|
104
|
+
- Optimized `#line` to use only integer math, avoid float
|
105
|
+
- Added support for multicolor e-paper displays
|
106
|
+
- Handled as array of 1-bit framebuffers, one per ink color
|
107
|
+
- __Not__ real multi-bit color yet
|
108
|
+
|
109
|
+
- `Display::HD44780` -
|
110
|
+
- `#print` changed to `#text`, and `#set_cursor` to `#text_cursor` for consistency with `Display::Canvas`
|
111
|
+
- Added backlight as a subcomponent
|
112
|
+
- Give positive pin (anode) as `backlight:` in `pins:` hash when initializing
|
113
|
+
- `HD44780#backlight` is an instance of `Denko::LED::Base`
|
114
|
+
- Use like: `lcd.backlight.on` / `lcd.backlight.off`, or (if connected to PWM) `lcd.backlight.duty=`
|
115
|
+
|
116
|
+
- `Display::MonoOLED` -
|
117
|
+
- Removed `rotate:` option from `#initialize`
|
118
|
+
- Added `#reflect_x`, `#reflect_y` and `#rotate` methods instead, to match the interface of other displays
|
119
|
+
- Affects `SSD1306`, `SH1106` and `SH1107` OLEDs
|
120
|
+
|
121
|
+
- `EEPROM::Board` -
|
122
|
+
- Renamed from `EEPROM::BuiltIn`
|
123
|
+
- Simplified interface, matching `EEPROM::AT24C`
|
124
|
+
- Only provides `[]` and `[]=`, for individual values or ranges
|
125
|
+
- Both block, and read/write hardware immediately, rather than caching state
|
126
|
+
|
127
|
+
- `LED::RBG` -
|
128
|
+
- Changed `#write(r,g,b)` so it takes percentages (0-100)
|
129
|
+
- Added `#write_8_bit` that takes an 8 bit range (0-255), regardless of the underlying PWM settings
|
130
|
+
|
131
|
+
- `Sensor::DHT` reset pulse changed from 20ms to 10ms. Within spec, and appears more reliable in testing.
|
132
|
+
|
133
|
+
### Behavior Changes
|
134
|
+
- Raw Read Rework
|
135
|
+
- `Behavior::State`, `Behavior::Callbacks`, `Behavior::Reader`, `Behavior::Poller`, and `Behavior::Listener` have received a combined rework, allowing "raw_reads".
|
136
|
+
- A raw read bypasses the "update pathway": `#pre_callback_filter`, and `#update`, which would run callbacks and update component state.
|
137
|
+
- This simplifies development of drivers for things like sensors, where config and calibration data needs to be passed back and forth, but can't hit the update pathway. The old behavior is still available, for actual sensor data.
|
138
|
+
- `#_read` is a delegate method. Define it to get a single sensor reading, expected to hit the update pathway.
|
139
|
+
- `#_read` should _never_ be called directly now, as it might conflict with raw reads.
|
140
|
+
- Use `#read_nb` to trigger an async read instead. It delegates to `#_read` in a way that won't conflict.
|
141
|
+
- `#read` is now the same as `#read_nb`, except blocking.
|
142
|
+
- `#read_raw` _always_ blocks. Use it to get raw data (no `#pre_callback_filter`), and _not_ hit the update pathway.
|
143
|
+
- `#read_raw` _cannot_ be called if the component is currently listening. No way to gaurantee message order. Stop listening first.
|
144
|
+
- `#read_raw` takes a method object or Proc. It does _not_ delegate to `#_read`, since it's not meant for sensor data.
|
145
|
+
|
146
|
+
- Mutex Rework
|
147
|
+
- `Mutex#lock` and `Mutex#unlock` now preferred over `Mutex#synchronize`, so mruby doesn't have to pass a block around.
|
148
|
+
- `Mutex` instances are all replaced with `MutexStub` instances in mruby, and CRuby.
|
149
|
+
- `Component#state` (reading) is no longer protected by a mutex, unless it's a simple Integer.
|
150
|
+
- `Component#state=` (writing) is still portected by `@state_mutex`.
|
151
|
+
|
152
|
+
- `SPI::Peripheral::SinglePin` removed. It's simpler to use `SPI::Peripheral::MultiPin` (now renamed to `SPI::Peripheral`) for everything instead.
|
153
|
+
|
154
|
+
### Microcontroller Changes
|
155
|
+
|
156
|
+
- Arduino Core Version Updates:
|
157
|
+
- ESP32 Arduino Core -> 3.2.0
|
158
|
+
- NOTE: HW CDC (UART) is still broken when sending large amounts of data both directions. If using an ESP32 board that has a USB port with a USB-UART chip (not native USB), that will be more reliable for now.
|
159
|
+
- All other cores -> latest released version
|
160
|
+
|
161
|
+
- Arduino Library Version Updates:
|
162
|
+
- Adafruit NeoPixel -> 1.15.1
|
163
|
+
- ESP32Servo -> 3.0.6
|
164
|
+
- IRremote -> 4.4.2
|
165
|
+
|
166
|
+
- Arduino Uno R4 (Minima and Wi-Fi):
|
167
|
+
- WS2812 RGB LEDs are now supported by the NeoPixel library on the RA4M1, so enabled for these
|
168
|
+
|
169
|
+
- ATmega168-based microcontrollers:
|
170
|
+
- Removed OneWire support from default build config and replaced with bit-bang UART
|
171
|
+
|
172
|
+
- AUX_SIZE:
|
173
|
+
- AUX_SIZE reduced to 528 bytes for almost all microcontrollers, and still 48 for ATmega168
|
174
|
+
- Most implemented interfaces (except infrared) work fine sending/receiving data in chunks. This allows 512 byte chunks, even if using 16 bytes for configuration etc.
|
175
|
+
|
176
|
+
- SPI transfer size limits:
|
177
|
+
- SPI transfer sizes are now sent as 12-bit unsigned integers. This allows for a theoretical limit of 4095 bytes per SPI transaction, but AUX_SIZE is lower by default, so 520 (528 - 8 config bytes) is the practical limit, more than doubling the previous 255.
|
178
|
+
|
179
|
+
### Board Interface Changes
|
180
|
+
|
181
|
+
- `Board` classes must implement `#spi_limit`, which returns the maximum size (in bytes) of a SPI transaction. The same value is used for both reading and writing.
|
182
|
+
|
183
|
+
- `Board` classes must implement `#pin_is_pwm?(pin)`. This takes a pin number and returns true if __that pin number is muxed to a hardware PWM output that cannot be remuxed__. This is only relevant on Linux, where calling something like `#digital_write` on a hardware PWM output does nothing, so we want to mimic it with PWM values instead.
|
184
|
+
|
185
|
+
- `Board` classes must implement `#pwm_write(pin, duty)` so that the second argument is always the duty cycle in nanoseconds, not a percentage, or based on PWM timer bit-depth.
|
186
|
+
- The only exception is connected microcontrollers on Arduino firmware. PWM period may not always be controllable (or even known), so use values based on PWM timer bit-depth. This is handled conditionally inside `PulseIO::PWMOutput`.
|
187
|
+
|
188
|
+
- `Board#one_wire_reset` arguments changed from `(pin, read_presence=0)` to `(pin, read_presence=false)`. Any truthy value will update the bus' with the presence result.
|
189
|
+
|
190
|
+
### Driver convergence with mruby
|
191
|
+
- Many classes had small changes made to avoid using CRuby features not available in mruby. These include:
|
192
|
+
- Avoid using `Integer#[]` to get specific bits
|
193
|
+
- Avoid using `Array#pack`
|
194
|
+
- Avoid using regexes entirely
|
195
|
+
- Avoid `super if defined?(super)`
|
196
|
+
- Use `begin; super; rescue NoMethodError; end`
|
197
|
+
|
198
|
+
### Bug Fixes
|
199
|
+
- Fixed bug where `Display::HD44780` would try to call `#board_has_write_bit?` instead of `#board.is_register?`.
|
200
|
+
- Fixed a bug with multiple enviro sensors where calling `#state` would reset the values of all keys to `nil`.
|
201
|
+
- Fixed bug where `Canvas#polygon` and `#path` were not passing through color to sub-methods.
|
202
|
+
- Fixed a bug where `Behavior::MultiPin` would try to convert pins given as `nil` to Integer, creating unnecesary subcomponents on pin `0`.
|
203
|
+
- Shortened `Sensor::DHT` reset time to 10ms, which works more reliably.
|
204
|
+
- Write twice before rading for `Sensor::RCWL9620`, which works more reliably.
|
205
|
+
|
206
|
+
## 0.14.0
|
207
|
+
|
208
|
+
### Known Issues
|
209
|
+
|
210
|
+
- ESP32 Boards
|
211
|
+
- **USB-CDC (aka native USB) appears to be broken** in the 3.0 core. Will eventually hang if sending a lot of data both directions at the same time. Use one of the standard UART interfaces until this is fixed.
|
212
|
+
|
213
|
+
### New Boards
|
214
|
+
|
215
|
+
- ESP32-H2 and ESP32-C6 variants (`--target esp32`):
|
216
|
+
- Depends on ESP32 Arduino Core 3.0+
|
217
|
+
- No WiFi on H2
|
218
|
+
|
219
|
+
### Board Changes
|
220
|
+
|
221
|
+
- ESP32 Boards
|
222
|
+
- 3.0+ version of the ESP32 Arduino Core now required.
|
223
|
+
|
224
|
+
- Raspberry Pi Pico (RP2040)
|
225
|
+
- WS2812 LED strips work now.
|
226
|
+
|
227
|
+
### New Peripherals
|
228
|
+
|
229
|
+
- Bit-Bang I2C:
|
230
|
+
- Class: `Denko::I2C::BitBang`
|
231
|
+
- Start a software bit-banged I2C bus on any 2 pins.
|
232
|
+
- Interchangeable with hardware bus (`Denko::I2C::Bus`), as far as I2C peripherals are concerned.
|
233
|
+
|
234
|
+
- ADS1100 Analog-to-Digital Converter:
|
235
|
+
- Class: `Denko::AnalogIO::ADS1100`
|
236
|
+
- Connects via I2C bus. Driver written in Ruby.
|
237
|
+
- Modeled after `AnalogIO::Input` since it's a single channel ADC.
|
238
|
+
- Can be read directly with `#read` or polled with `#poll`.
|
239
|
+
- Full scale voltage must be given in the initailize hash, `full_scale_ voltage:`.
|
240
|
+
- Gain and sample rate configurable. See example for more.
|
241
|
+
|
242
|
+
- SSD1306 1-Color OLED
|
243
|
+
- Added SPI version.
|
244
|
+
- Both use `Denko::Display::SSD1306`. Instances mutate to I2C or SPI behavior, based on bus given.
|
245
|
+
|
246
|
+
- SH1106 1-Color OLED
|
247
|
+
- Class: `Denko::Display::SH1106`
|
248
|
+
- Almost the same as SSD1306. Most driver code is shared between them.
|
249
|
+
- I2C and SPI versions both supported, as SSD1306 above.
|
250
|
+
|
251
|
+
### Peripheral Changes
|
252
|
+
|
253
|
+
- All Peripherals:
|
254
|
+
- On CRuby, `@state_mutex` and `@callback_mutex` are now instances of `Denko::MutexStub`, which just runs the given block when called with `#synchronize`.
|
255
|
+
- The options hash (now called params), given to `#initialize` is always available through the `#params` method.
|
256
|
+
- `#initialize` no longer accepts `pullup: true` or `pulldown: true`. Set mode explicitly, like `mode: :input_pullup`.
|
257
|
+
|
258
|
+
- Temperature / Pressure / Humidity Sensors:
|
259
|
+
- `DS18B20`, `DHT` and `HTU21D` readings now match all the others (Hash with same keys).
|
260
|
+
- Readings standardized to be in ºC, %RH and Pascals. Callbacks always receive hash with these.
|
261
|
+
- `[]` access for `@state` removed removed. Use `#temperature`, `#pressure`, `#humidity` instead.
|
262
|
+
- Added `#temperature_f` `#temperature_k` `#pressure_atm` `#pressure_bar` helper conversion methods.
|
263
|
+
- `#read` methods standardized to always read ALL sub-sensors. Affects `HTU21D` and `BMP180`.
|
264
|
+
|
265
|
+
- `AnalogIO::Input`:
|
266
|
+
- Added `#smoothing=` and `#smoothing_size=` accessors to `AnalogIO::Input` for configuration.
|
267
|
+
- `AnalogIO::Sensor` removed. Use `Input` instead.
|
268
|
+
|
269
|
+
- `Behavior::InputPin`
|
270
|
+
- Added `#debounce=(time)` which just calls `Board#set_pin_debounce` for the pin. Only on `PiBoard`.
|
271
|
+
|
272
|
+
- `DigitalIO::CBitBang`:
|
273
|
+
- New helper class. Forces initialize validation for bit-bang pins. Essential for `PiBoard`.
|
274
|
+
- As a side-effect, makes sure 2 low-level bit-bang Components (eg. buses) can't use the same pin.
|
275
|
+
- Always starts pins in `:input` mode. The bit-bang routine is expected to change them.
|
276
|
+
|
277
|
+
- `DigitalIO::RotaryEncoder`:
|
278
|
+
- Pin names standardized to `a:` and `b:`, but still accept `:clock`, `:data`, `:clk`, `:dt`.
|
279
|
+
- `steps_per_revolution` changed to `counts_per_revolution`
|
280
|
+
- Every level change is counted now (full-quadrature). Was half-quadrature before.
|
281
|
+
- `counts_per_revolution` now defaults to 60 instead of 30 (generic 30-detent encoders).
|
282
|
+
- `state` and callback hash store `:count` instead of `:steps`.
|
283
|
+
|
284
|
+
- `I2C::Bus`:
|
285
|
+
- No longer requires SDA pin to initialize.
|
286
|
+
- Accepts `index:` param (default 0) on initialize, specifying which I2C interface to use.
|
287
|
+
- Only works for PiBoard on Linux right now.
|
288
|
+
- `#update` accepts String of comma delimited ASCII numbers (Board), or Array of bytes (PiBoard).
|
289
|
+
|
290
|
+
- `I2C::Peripheral`:
|
291
|
+
- `#i2c_read` arg order changed from `(register, num_bytes)` to `(num_bytes, register: nil)`
|
292
|
+
|
293
|
+
- `LED`:
|
294
|
+
- `Base`, `RGB` and `SevenSegment` all inherit from `PulseIO::PWMOutput`, so see that below.
|
295
|
+
- `#write` MUST always be given a PWM value if used, not `0` or `1`.
|
296
|
+
- Prefer using `duty=` if possible, which is percentage based.
|
297
|
+
- Alternatively, call `#digital_write` only to stay in faster digital mode.
|
298
|
+
|
299
|
+
- `LED::RGB`:
|
300
|
+
- `#write` takes 3 regular args now. Use `*array` instead to pass an array.
|
301
|
+
- `#color` only takes a symbol for one of the predefined colors (or `:off`) now.
|
302
|
+
|
303
|
+
- `Motor::Stepper`:
|
304
|
+
- `#step_cc` renamed to `#step_ccw`.
|
305
|
+
|
306
|
+
- `OneWire::Bus`:
|
307
|
+
- `#update` accepts String of comma delimited ASCII numbers (Board), or Array of bytes (PiBoard).
|
308
|
+
|
309
|
+
- `PulseIO::IRTransmitter`:
|
310
|
+
- Renamed to `PulseIO::IROutput` to be more consistent with other classes.
|
311
|
+
- `#emit` renamed to `#write` for consistency.
|
312
|
+
|
313
|
+
- `PulseIO::PWMOutput`:
|
314
|
+
- `#write` will never try to call `#digital_write`, always `#pwm_write`.
|
315
|
+
- Initial mode is `:output` instead of `:output_pwm`, saving MCU PWM channels until needed.
|
316
|
+
- Mode change is lazy. Happens with first call to `#pwm_write`.
|
317
|
+
- Call only `#digital_write` to stay in digital `:output` mode (faster).
|
318
|
+
- Added `#duty=`. Set duty cycle in percentage regardless of PWM resolution.
|
319
|
+
- Set resolution and frequency per `PWMOutput` instance (pin), instead of per `Board` instance:
|
320
|
+
- `#initialize` hash accepts `frequency:` and `resolution:` keys.
|
321
|
+
- Call `#pwm_enable` with `frequency:` and `resolution:` kwargs
|
322
|
+
- Or use `#resolution=` and `#frequency=` methods.
|
323
|
+
- Defaults are 1 kHz frequency and 8-bit resolution.
|
324
|
+
- **ONLY** works on ESP32 and `PiBoard` right now. Others still control at the Board level.
|
325
|
+
- Limited to 13-bit resolution on `Denko::Board` for now.
|
326
|
+
|
327
|
+
- `SPI::Bus`:
|
328
|
+
- Accepts `index:` param (default 0) on initialize, specifying which SPI interface to use.
|
329
|
+
- Only works for PiBoard on Linux right now.
|
330
|
+
|
331
|
+
- `SPI::Peripheral`:
|
332
|
+
- Split into `SPI:Peripheral::SinglePin` and `Spi::Peripheral::MultiPin` to allow modeling more complex peripherals.
|
333
|
+
- `#update` accepts String of comma delimited ASCII numbers (Board), or Array of bytes (PiBoard).
|
334
|
+
|
335
|
+
- `SPI::OutputRegister`:
|
336
|
+
- Removed automatic buffering of writes.
|
337
|
+
- Call `#set_bit(value)` instead to modify state in memory, without writing to the physical register.
|
338
|
+
- Call `#write` to send state to the register after modifying.
|
339
|
+
|
340
|
+
### Fiwmare Changes
|
341
|
+
|
342
|
+
- General:
|
343
|
+
- Boards now report their serial buffer as 8 bytes less than the actual buffer size.
|
344
|
+
- Removed local callback hooks (meant for customization in C) from the Arduino sketches.
|
345
|
+
- Improved serial interface selection for ATSAMD21 boards. Some boards have the native interface as `Serial`, some as `SerialUSB`. The native interface is always selected now, regardless of its name.
|
346
|
+
- More accurate pin counts when initializing digital listener storage for different boards.
|
347
|
+
|
348
|
+
- Core I/O:
|
349
|
+
- Removed `INPUT_OUTPUT` mode. Only ESP32 used it and it's the same as `OUTPUT`.
|
350
|
+
- Added an optimized single-byte binary message type for `#digital_write`. Improves write throughput 6-7x. Only works for pins 0..63. Fallback automatic for higher pins.
|
351
|
+
|
352
|
+
- Hardware I2C:
|
353
|
+
- Message format changed so "value" isn't used. Will be used for differentiating multiple I2C interfaces in future.
|
354
|
+
- Responses now prefixed with `I2C{index}:` (index = I2C device integer, always 0 for now), instead of SDA pin number.
|
355
|
+
|
356
|
+
- Hardware SPI:
|
357
|
+
- Transfers don't need a chip select pin now. This is for LED strips like APA102.
|
358
|
+
|
359
|
+
- Bit-Bang I2C:
|
360
|
+
- Newly added. Works similar to Bit-Bang SPI.
|
361
|
+
|
362
|
+
### Board Interface Changes
|
363
|
+
|
364
|
+
- `Board#set_pin_mode` now takes a third hash argument, `options={}`. Only used keys are `resolution:` and `frequency:` for setting PWM resolution. Only works on ESP32 boards and `PiBoard` on Linux.
|
365
|
+
|
366
|
+
- Added `Board#set_pin_debounce`
|
367
|
+
- Implemented for Linux GPIO alerts in `Denko::PiBoard` (denko-piboard gem).
|
368
|
+
- Sets a time (in microseconds) that level changes on a pin must be stable for, before an update happens.
|
369
|
+
- Does nothing for `Denko::Board`.
|
370
|
+
|
371
|
+
- Added `OUTPUT_OPEN_DRAIN` and `OUTPUT_OPEN_SOURCE` pin modes to support `PiBoard`.
|
372
|
+
|
373
|
+
### CLI Changes
|
374
|
+
|
375
|
+
- All Atmel targets now prefixed with "at". Eg. `atsamd21` now, instead of `samd21` before.
|
376
|
+
|
377
|
+
### Bugs Fixed
|
378
|
+
|
379
|
+
- ADS111X sensors were incorrectly validating sample rate when set.
|
380
|
+
- Handshake could fail if board was left in a state where it kept transmitting data.
|
381
|
+
- An ESP32 with no DACs might not release a LEDC channel after use.
|
382
|
+
- `Denko::Connection` could have negative bytes in transit, making it overflow the board's rx buffer.
|
383
|
+
- `Servo`, `Buzzer` and `IRTransmitter` didn't start in `:output_pwm` mode.
|
384
|
+
- `SSD1306#on` and `#off` would raise errors, trying to write Integer instead of Array to `I2C::Bus`.
|
385
|
+
- `SPI::BitBang` did not correctly set initial clock state for modes 2 and 3.
|
386
|
+
- `IRTransmitter.emit` didn't work at all ESP8266. Pulse data wasn't aligned properly in memory.
|
387
|
+
- `Board#ws2812_write` was validating max length to 256 instead of 255.
|
388
|
+
- WS2812 write on ESP32 would crash it, only with *some* low 8-bit pixel values. Still unsure why, but four extra 0 bytes (preceding the pixel data in auxMsg) seems to work around this.
|
389
|
+
|
3
390
|
## 0.13.5
|
4
391
|
|
5
392
|
### New Components
|
@@ -88,7 +475,7 @@
|
|
88
475
|
|
89
476
|
- WS2812
|
90
477
|
- Larger aux message size now allows up to 256 pixels (3 bytes per pixel) on a strip
|
91
|
-
|
478
|
+
|
92
479
|
### Bug Fixes
|
93
480
|
|
94
481
|
- Fixed a bug with WS2812 strips where it would try to memcpy 3x the number of necessary bytes. Fixed this by just sending the total number of bytes to write to the strip, rather than number of pixels * bytes per pxiel.
|
@@ -221,7 +608,7 @@ Fixes critical 1-Wire bugs introduced when namespace was reorganized for 0.13.0.
|
|
221
608
|
- Connects via I2C bus. Driver written in Ruby.
|
222
609
|
- All features in the datasheet are implemented, except status checking.
|
223
610
|
- Both are mostly identical, except for BMP280 lacking humidity.
|
224
|
-
|
611
|
+
|
225
612
|
- HTU21D Temperature + Humidity Sensor:
|
226
613
|
- Class: `Denko::Sensor::HTU21D`
|
227
614
|
- Connects via I2C bus. Driver written in Ruby.
|
@@ -314,7 +701,7 @@ See new examples in the [examples](examples) folder to learn more.
|
|
314
701
|
- This solves compatibility with boards that the library didn't work on.
|
315
702
|
- `HD44780#create_char` allows 8 custom characters to be defined in memory addresses 0-7.
|
316
703
|
- `HD44780#write` draws the custom (or standard) character from a given memory address.
|
317
|
-
|
704
|
+
|
318
705
|
- `Denko::PulseIO::PWMOutput` (previously `Denko::Components::Basic::AnalogOutput`):
|
319
706
|
- Changed `#analog_write` to `#pwm_write`.
|
320
707
|
- Added `#pwm_enable` and `#pwm_disable` methods.
|
@@ -340,7 +727,7 @@ See new examples in the [examples](examples) folder to learn more.
|
|
340
727
|
- All calls to `delayMicroseconds()` should be replaced with this.
|
341
728
|
- Exposed in Ruby via `CMD=99`. It takes one argument, uint_16 for delay length in microsceonds.
|
342
729
|
- `Board#micro_delay` and `Component::#micro_delay` are defined.
|
343
|
-
|
730
|
+
|
344
731
|
- `dacWrite` function added to board library. `aWrite` function renamed to `pwmWrite`. Need this to avoid conflict between DAC, PWM and regular output on some chips.
|
345
732
|
|
346
733
|
- CMD numbers for some board functions changed to accomodate dacWrite:
|
@@ -353,7 +740,7 @@ See new examples in the [examples](examples) folder to learn more.
|
|
353
740
|
pulseread 11 -> 9
|
354
741
|
servoToggle 8 -> 10
|
355
742
|
servoWrite 9 -> 11
|
356
|
-
````
|
743
|
+
````
|
357
744
|
|
358
745
|
- `Board#analog_write` replaced by `Board#pwm_write` and `Board#dac_write`, matching the two C functions.
|
359
746
|
|
@@ -431,7 +818,7 @@ See new examples in the [examples](examples) folder to learn more.
|
|
431
818
|
- WiFi version supports OTA (over-the-air) update in the Arduino IDE. Initial flash must still be done via serial.
|
432
819
|
- Dev boards can map GPIOs to physical pins differently. Always look up the GPIO numbers and use those for pin numbers.
|
433
820
|
- **Note:** SoftwareSerial and LiquidCrystal (LCD) both do not work on the ESP8266, and are excluded from the sketch.
|
434
|
-
|
821
|
+
|
435
822
|
- ESP32 (`--target esp32`):
|
436
823
|
- Works with either built in WiFi or Serial.
|
437
824
|
- WiFi version does NOT support OTA (over-the-air) updates yet.
|
@@ -440,7 +827,7 @@ See new examples in the [examples](examples) folder to learn more.
|
|
440
827
|
- **Note:** Servos and analog outputs share the `LEDC` channels on the board. Maximum of 16 combined.
|
441
828
|
- **Note:** SoftwareSerial and LiquidCrystal (LCD) both do not work on the ESP32, and are excluded from the sketch.
|
442
829
|
- **Note:** SPI bug exists where input modes don't match other platforms. Eg. For a register using mode 0 on AVR, mode 2 needs to be set on ESP32 for it to work. Using mode 0 misses a bit.
|
443
|
-
|
830
|
+
|
444
831
|
- Arduino Due (`--target sam3x`) :
|
445
832
|
- Up to 12-bit analog in/out. Pass a `bits:` option to `Board#new` to set resolution for both.
|
446
833
|
- DAC support. Refer to DAC pins as `'DAC0'`, `'DAC1'`, just as labeled on the board. Call `#analog_write` or just `#write` on an `sensor` component that uses the pin.
|
@@ -463,7 +850,7 @@ See new examples in the [examples](examples) folder to learn more.
|
|
463
850
|
|
464
851
|
- Infrared Emitter support. _Uses [Arduino-IRremote](https://github.com/z3t0/Arduino-IRremote), and the [ESP8266 fork](https://github.com/markszabo/IRremoteESP8266) where applicable._
|
465
852
|
|
466
|
-
- Tone (piezo) support. _Uses Arduino `tone`,`noTone` functions._
|
853
|
+
- Tone (piezo) support. _Uses Arduino `tone`,`noTone` functions._
|
467
854
|
|
468
855
|
- SoftwareSerial **(write only)**. _Uses Arduino `SoftSerial` library. Only tested on ATmega chips._
|
469
856
|
|
@@ -511,7 +898,7 @@ See new examples in the [examples](examples) folder to learn more.
|
|
511
898
|
|
512
899
|
- `BoardProxy` abstraction for shift/SPI registers:
|
513
900
|
- The `Register` classes implement enough of the `Board` interface to satisfy components based on `DigitalInput` and `DigitalOutput`, such as `Led` or `Button`.
|
514
|
-
- This lets you call methods on components directly, rather than manipulating the register data to control components indirectly.
|
901
|
+
- This lets you call methods on components directly, rather than manipulating the register data to control components indirectly.
|
515
902
|
- Initialize the appropriate `Register` object for the type of register. To initialize a component connected to the register, use the register as the `board:`, and give the parallel I/O pin on the register that the component is connected to. Pin 0 maps to the lowest bit.
|
516
903
|
- This also works for `MultiPin` components built out of only `DigitalInput` or `DigitalOutput`, eg. `SSD` - seven segment display or `RGBLed`. See `examples/register` for more.
|
517
904
|
|
@@ -523,7 +910,7 @@ See new examples in the [examples](examples) folder to learn more.
|
|
523
910
|
- Callback functionality for components has been extracted into a mixin module, `Mixins::Callbacks`.
|
524
911
|
- Like before, callbacks for all components on a board run sequentially, in a single "update" thread, separate from the main thread. This is the same thread reading from TxRx.
|
525
912
|
- `#add_callback` and `#remove_callback` methods are available, and take an optional `key` as argument.
|
526
|
-
- Blocks given to `#add_callback` are stored in `@callbacks[key]`, to be called later, when the "update" thread receives data for the component. The default key is `:persistent`.
|
913
|
+
- Blocks given to `#add_callback` are stored in `@callbacks[key]`, to be called later, when the "update" thread receives data for the component. The default key is `:persistent`.
|
527
914
|
- Each key represents an array of callbacks, so multiple callbacks can share the same key.
|
528
915
|
- Calling `#remove_callbacks` with a key empties that array. Calling with no key removes **all** callbacks for the component.
|
529
916
|
- `#pre_callback_filter` is defined in the `Callbacks` module. The return value of this method is what is given to the component's callbacks and to update its `@state`. By default, it returns whatever was given from the board.
|
@@ -563,7 +950,7 @@ See new examples in the [examples](examples) folder to learn more.
|
|
563
950
|
* Flashing the updated sketch to the board is required.
|
564
951
|
|
565
952
|
## 0.11.1
|
566
|
-
|
953
|
+
|
567
954
|
### New Features
|
568
955
|
|
569
956
|
* Support for the Arduino Ethernet shield and compatibles (Wiznet W5100 chipset).
|
data/DEPS_CLI.md
CHANGED
@@ -16,17 +16,16 @@ arduino-cli core install arduino:sam
|
|
16
16
|
arduino-cli core install arduino:samd
|
17
17
|
arduino-cli core install arduino:renesas_uno
|
18
18
|
arduino-cli core install esp8266:esp8266
|
19
|
-
arduino-cli core install esp32:esp32@2.0
|
19
|
+
arduino-cli core install esp32:esp32@3.2.0
|
20
20
|
arduino-cli core install rp2040:rp2040
|
21
21
|
arduino-cli lib install Servo
|
22
22
|
arduino-cli lib install Ethernet
|
23
23
|
arduino-cli lib install WiFi
|
24
24
|
arduino-cli lib install WiFi101
|
25
25
|
arduino-cli lib install WiFiNINA
|
26
|
-
arduino-cli lib install
|
27
|
-
arduino-cli lib install
|
28
|
-
arduino-cli lib install
|
29
|
-
arduino-cli lib install "Adafruit NeoPixel"
|
26
|
+
arduino-cli lib install ESP32Servo@3.0.6
|
27
|
+
arduino-cli lib install IRremote@4.4.2
|
28
|
+
arduino-cli lib install "Adafruit NeoPixel"@1.15.1
|
30
29
|
````
|
31
30
|
|
32
31
|
**AVR-based Arduinos & Clones Only:**
|
@@ -37,8 +36,8 @@ arduino-cli lib install Servo
|
|
37
36
|
arduino-cli lib install Ethernet
|
38
37
|
arduino-cli lib install WiFi
|
39
38
|
arduino-cli lib install WiFiNINA
|
40
|
-
arduino-cli lib install IRremote@4.
|
41
|
-
arduino-cli lib install "Adafruit NeoPixel"
|
39
|
+
arduino-cli lib install IRremote@4.4.2
|
40
|
+
arduino-cli lib install "Adafruit NeoPixel"@1.15.1
|
42
41
|
````
|
43
42
|
|
44
43
|
**ARM-based Arduinos & Clones Only:**
|
@@ -52,8 +51,8 @@ arduino-cli lib install Ethernet
|
|
52
51
|
arduino-cli lib install WiFi
|
53
52
|
arduino-cli lib install WiFi101
|
54
53
|
arduino-cli lib install WiFiNINA
|
55
|
-
arduino-cli lib install IRremote@4.
|
56
|
-
arduino-cli lib install "Adafruit NeoPixel"
|
54
|
+
arduino-cli lib install IRremote@4.4.2
|
55
|
+
arduino-cli lib install "Adafruit NeoPixel"@1.15.1
|
57
56
|
````
|
58
57
|
|
59
58
|
**ESP8266 Only:**
|
@@ -62,8 +61,8 @@ arduino-cli config init
|
|
62
61
|
arduino-cli config add board_manager.additional_urls https://arduino.esp8266.com/stable/package_esp8266com_index.json
|
63
62
|
arduino-cli core update-index
|
64
63
|
arduino-cli core install esp8266:esp8266
|
65
|
-
arduino-cli lib install
|
66
|
-
arduino-cli lib install "Adafruit NeoPixel"
|
64
|
+
arduino-cli lib install IRremote@4.4.2
|
65
|
+
arduino-cli lib install "Adafruit NeoPixel"@1.15.1
|
67
66
|
````
|
68
67
|
|
69
68
|
**ESP32 Only:**
|
@@ -71,10 +70,10 @@ arduino-cli lib install "Adafruit NeoPixel"
|
|
71
70
|
arduino-cli config init
|
72
71
|
arduino-cli config add board_manager.additional_urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
73
72
|
arduino-cli core update-index
|
74
|
-
arduino-cli core install esp32:esp32@2.0
|
75
|
-
arduino-cli lib install ESP32Servo
|
76
|
-
arduino-cli lib install
|
77
|
-
arduino-cli lib install "Adafruit NeoPixel"
|
73
|
+
arduino-cli core install esp32:esp32@3.2.0
|
74
|
+
arduino-cli lib install ESP32Servo@3.0.6
|
75
|
+
arduino-cli lib install IRremote@4.4.2
|
76
|
+
arduino-cli lib install "Adafruit NeoPixel"@1.15.1
|
78
77
|
````
|
79
78
|
|
80
79
|
**RP2040 Only:**
|
@@ -83,5 +82,6 @@ arduino-cli config init
|
|
83
82
|
arduino-cli config add board_manager.additional_urls https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
|
84
83
|
arduino-cli core update-index
|
85
84
|
arduino-cli core install rp2040:rp2040
|
86
|
-
arduino-cli lib install IRremote@4.
|
85
|
+
arduino-cli lib install IRremote@4.4.2
|
86
|
+
arduino-cli lib install "Adafruit NeoPixel"@1.15.1
|
87
87
|
````
|