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/lib/denko.rb
CHANGED
@@ -1,36 +1,43 @@
|
|
1
|
-
|
1
|
+
# Helpers needed during loading.
|
2
|
+
require_relative 'denko/helpers'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
4
|
+
unless Denko.in_mruby_build?
|
5
|
+
Thread.abort_on_exception = true
|
6
|
+
|
7
|
+
require 'bcd'
|
8
|
+
|
9
|
+
module Denko
|
10
|
+
def self.root
|
11
|
+
File.expand_path '../..', __FILE__
|
12
|
+
end
|
6
13
|
end
|
7
14
|
end
|
8
15
|
|
9
|
-
#
|
10
|
-
require 'forwardable'
|
11
|
-
|
12
|
-
# Component support stuff.
|
16
|
+
# Early shared behavior
|
13
17
|
require_relative 'denko/version'
|
14
18
|
require_relative 'denko/behaviors'
|
15
|
-
require_relative 'denko/fonts'
|
16
19
|
|
17
|
-
# Board
|
18
|
-
|
19
|
-
require_relative 'denko/
|
20
|
-
require_relative 'denko/
|
20
|
+
# Denko::Board implementation for connected microcontrollers
|
21
|
+
unless Denko.in_mruby_build?
|
22
|
+
require_relative 'denko/message'
|
23
|
+
require_relative 'denko/connection'
|
24
|
+
require_relative 'denko/board'
|
25
|
+
# Diagnostics
|
26
|
+
require_relative 'denko/connection/binary_echo'
|
27
|
+
end
|
21
28
|
|
22
|
-
# Basic IO
|
29
|
+
# Basic IO peripherals
|
23
30
|
require_relative 'denko/digital_io'
|
24
31
|
require_relative 'denko/analog_io'
|
25
32
|
require_relative 'denko/pulse_io'
|
26
33
|
|
27
|
-
# Buses and interfaces
|
34
|
+
# Buses and interfaces
|
28
35
|
require_relative 'denko/uart'
|
29
36
|
require_relative 'denko/spi'
|
30
37
|
require_relative 'denko/i2c'
|
31
38
|
require_relative 'denko/one_wire'
|
32
39
|
|
33
|
-
# Everything else
|
40
|
+
# Everything else
|
34
41
|
require_relative 'denko/display'
|
35
42
|
require_relative 'denko/eeprom'
|
36
43
|
require_relative 'denko/led'
|
data/lib/denko_cli/generator.rb
CHANGED
@@ -15,10 +15,10 @@ class DenkoCLI::Generator
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def append_target
|
18
|
-
options[:target] = :
|
18
|
+
options[:target] = :atmega unless options[:target]
|
19
19
|
# Preserve the source sketch name, since we need to copy that file.
|
20
20
|
options[:src_sketch_name] = options[:sketch_name].dup
|
21
|
-
options[:sketch_name] << "_#{options[:target]}"
|
21
|
+
options[:sketch_name] << "_#{options[:target]}"
|
22
22
|
options[:sketch_name] << "_#{::Denko::VERSION}"
|
23
23
|
end
|
24
24
|
|
data/lib/denko_cli/packages.rb
CHANGED
@@ -29,6 +29,13 @@ PACKAGES = {
|
|
29
29
|
"DenkoOneWire.cpp",
|
30
30
|
]
|
31
31
|
},
|
32
|
+
i2c_bb: {
|
33
|
+
description: "Bit Bang I2C support",
|
34
|
+
directive: "DENKO_I2C_BB",
|
35
|
+
files: [
|
36
|
+
"DenkoI2CBB.cpp",
|
37
|
+
]
|
38
|
+
},
|
32
39
|
spi_bb: {
|
33
40
|
description: "Bit Bang SPI support",
|
34
41
|
directive: "DENKO_SPI_BB",
|
@@ -54,7 +61,7 @@ PACKAGES = {
|
|
54
61
|
uart_bb: {
|
55
62
|
description: "Bit bang serial output",
|
56
63
|
directive: "DENKO_UART_BB",
|
57
|
-
only: [:
|
64
|
+
only: [:atmega, :atmega168],
|
58
65
|
files: [
|
59
66
|
"DenkoUARTBB.cpp",
|
60
67
|
]
|
@@ -83,19 +90,10 @@ PACKAGES = {
|
|
83
90
|
ir_out: {
|
84
91
|
description: "Transmit infrared signals",
|
85
92
|
directive: "DENKO_IR_OUT",
|
86
|
-
exclude: [:esp8266, :esp32],
|
87
93
|
files: [
|
88
94
|
"DenkoIROut.cpp",
|
89
95
|
]
|
90
96
|
},
|
91
|
-
ir_out_esp: {
|
92
|
-
description: "Transmit infrared signals with the ESP8266 and ESP32",
|
93
|
-
directive: "DENKO_IR_OUT",
|
94
|
-
only: [:esp8266, :esp32],
|
95
|
-
files: [
|
96
|
-
"DenkoIROutESP.cpp",
|
97
|
-
]
|
98
|
-
},
|
99
97
|
led_array: {
|
100
98
|
description: "Support for various protocols that control (RGB) LED arrays.",
|
101
99
|
directive: "DENKO_LED_ARRAY",
|
data/lib/denko_cli/targets.rb
CHANGED
@@ -8,26 +8,26 @@ class DenkoCLI::Generator
|
|
8
8
|
core: [:core],
|
9
9
|
|
10
10
|
# Specific features for the old mega168 chips.
|
11
|
-
|
11
|
+
atmega168: [:core, :tone, :i2c, :spi, :servo, :uart_bb],
|
12
12
|
|
13
13
|
# Other ATmega chips do everything.
|
14
14
|
# Add bit bang serial for 328p / UNO since it has no extra hardware UART.
|
15
|
-
|
15
|
+
atmega: STANDARD_PACKAGES + [:uart_bb],
|
16
16
|
|
17
17
|
# No tone, infrared or EEPROM on SAM3X / Due.
|
18
|
-
|
19
|
-
|
18
|
+
atsam3x: STANDARD_PACKAGES - [:tone, :ir_out, :eeprom],
|
19
|
+
|
20
20
|
# No EEPROM on SAMD / Zero.
|
21
|
-
|
21
|
+
atsamd21: STANDARD_PACKAGES - [:eeprom],
|
22
|
+
|
23
|
+
# Infrared library does not support the UNO R4.
|
24
|
+
ra4m1: STANDARD_PACKAGES - [:ir_out],
|
22
25
|
|
23
|
-
#
|
24
|
-
|
26
|
+
# ESP8266 & ESP32
|
27
|
+
esp8266: STANDARD_PACKAGES,
|
28
|
+
esp32: STANDARD_PACKAGES,
|
25
29
|
|
26
|
-
#
|
27
|
-
|
28
|
-
esp32: STANDARD_PACKAGES - [:ir_out] + [:ir_out_esp],
|
29
|
-
|
30
|
-
# RP2040 can't use WS2812 yet.
|
31
|
-
rp2040: STANDARD_PACKAGES - [:led_array],
|
30
|
+
# RP2040
|
31
|
+
rp2040: STANDARD_PACKAGES,
|
32
32
|
}
|
33
33
|
end
|
data/lib/denko_cli/targets.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
|
2
2
|
Valid targets:
|
3
3
|
|
4
|
-
|
4
|
+
atmega (default)
|
5
5
|
|
6
6
|
Covers the Atmel/Microchip AVR 8-bit chips and associated Arduino boards.
|
7
|
-
This is the default target. All
|
7
|
+
This is the default target. All interfaces are included.
|
8
8
|
|
9
9
|
Chips: ATmega328p, ATmega32u4, ATmega1280, ATmega2560
|
10
10
|
Atmega4809 (unconfirmed)
|
@@ -17,20 +17,20 @@
|
|
17
17
|
esp32
|
18
18
|
|
19
19
|
For the the ESP32 chip by Espressif, with integrated 2.4Ghz WiFi.
|
20
|
-
|
21
|
-
This option includes all
|
20
|
+
WiFi over-the-air updates are enabled by default.
|
21
|
+
This option includes all interfaces EXCEPT:
|
22
22
|
SoftwareSerial
|
23
23
|
|
24
24
|
Chips: ESP32, ESP32-S2, ESP32-S3
|
25
25
|
Boards: ESP32 DevKit, LOLIN D32 / D32 Pro, LOLIN S2 Pico / Mini,
|
26
26
|
LOLIN S3 Pico / Mini
|
27
|
-
|
27
|
+
|
28
28
|
|
29
29
|
esp8266
|
30
30
|
|
31
31
|
For the ESP8266 chip by Espressif, with integrated 2.4Ghz WiFi.
|
32
32
|
WiFi over-the-air updates are enabled by default.
|
33
|
-
This option includes all
|
33
|
+
This option includes all interfaces EXCEPT:
|
34
34
|
SoftwareSerial
|
35
35
|
|
36
36
|
Chips: ES8266, ESP8285
|
@@ -41,44 +41,43 @@
|
|
41
41
|
|
42
42
|
Note: After the initial upload via serial, the WiFi sketch for this target
|
43
43
|
supports over-the-air updates from the Arduino IDE using ArduinoOTA.
|
44
|
-
|
45
|
-
|
44
|
+
|
45
|
+
|
46
46
|
rp2040
|
47
47
|
|
48
|
-
For the Raspberry Pi RP2040 microcontroller.
|
49
|
-
|
50
|
-
|
51
|
-
SoftwareSerial, LEDArray
|
48
|
+
For the Raspberry Pi RP2040 microcontroller. WiFi available on the W version.
|
49
|
+
This option includes all interfaces EXCEPT:
|
50
|
+
SoftwareSerial
|
52
51
|
|
53
52
|
Chips: RP2040
|
54
53
|
Boards: Raspberry Pi Pico, Raspberry Pi Pico W, and many others
|
55
|
-
|
56
54
|
|
57
|
-
|
55
|
+
|
56
|
+
atsamd21
|
58
57
|
|
59
58
|
For the ATSAMD21G18, with native USB and no EEPROM.
|
60
59
|
Similar to the mega option, but Software Serial doesn't work.
|
61
|
-
This option includes all
|
60
|
+
This option includes all interfaces EXCEPT:
|
62
61
|
EEPROM, SoftwareSerial
|
63
62
|
|
64
63
|
Chips: ATSAMD21G18
|
65
64
|
Boards: Arduino Zero, M0, M0 Pro
|
66
65
|
|
67
66
|
|
68
|
-
|
67
|
+
atsam3x
|
69
68
|
|
70
69
|
Fpr the ATSAM3X8E, with native USB and no EEPROM.
|
71
70
|
Similar to the mega option, but some features don't work.
|
72
|
-
This option includes all
|
71
|
+
This option includes all interfaces EXCEPT:
|
73
72
|
EEPROM, SoftwareSerial, Tone, IR Out
|
74
73
|
|
75
74
|
Chips: ATSAM3X8E
|
76
75
|
Boards: Arduino Due
|
77
|
-
|
78
|
-
|
76
|
+
|
77
|
+
|
79
78
|
core
|
80
79
|
|
81
|
-
This includes only the core
|
80
|
+
This includes only the core interface set of denko:
|
82
81
|
Set Pin Mode
|
83
82
|
Digital Read/Write/Listen
|
84
83
|
Analog Read/Write/Listen
|
@@ -87,12 +86,12 @@
|
|
87
86
|
is the smallest sketch possible, and should be universally compatible.
|
88
87
|
|
89
88
|
|
90
|
-
|
89
|
+
atmega168
|
91
90
|
|
92
91
|
This targets the older ATmega168 chip used in early Arduinos.
|
93
92
|
With half the RAM and flash available, we need to cut the sketch down.
|
94
|
-
This option includes all
|
95
|
-
|
93
|
+
This option includes all interfaces EXCEPT:
|
94
|
+
EEPROM, OneWire, BitBang I2C, BitBang SPI, Hardware UART, IR Out, WS2812
|
96
95
|
|
97
96
|
Chips: ATmega168
|
98
97
|
Boards: Duemilanove, Diecimila, Pro (some), Pro Mini (some)
|
@@ -103,7 +102,7 @@
|
|
103
102
|
There is not enough memory available for Wi-Fi or Ethernet.
|
104
103
|
Try the core target instead to tradeoff features for networking.
|
105
104
|
|
106
|
-
Note: Aux message is always limited to
|
105
|
+
Note: Aux message is always limited to 48 bytes or less for the ATmega168.
|
107
106
|
Servo count is always limited to 6 (normally 12) for the ATmega168 chip.
|
108
107
|
These limits apply as long as an Atmega168 is selected in the
|
109
108
|
Arduino IDE, regardless of the options passed to this sketch generator.
|
data/lib/denko_cli/usage.txt
CHANGED
data/src/denko_ethernet.ino
CHANGED
@@ -31,10 +31,6 @@ void setup() {
|
|
31
31
|
Ethernet.begin(mac, ip);
|
32
32
|
server.begin();
|
33
33
|
printEthernetStatus();
|
34
|
-
|
35
|
-
// Add listener callbacks for local logic.
|
36
|
-
denko.digitalListenCallback = onDigitalListen;
|
37
|
-
denko.analogListenCallback = onAnalogListen;
|
38
34
|
}
|
39
35
|
|
40
36
|
void loop() {
|
@@ -58,13 +54,3 @@ void loop() {
|
|
58
54
|
// Main loop of the denko library.
|
59
55
|
denko.run();
|
60
56
|
}
|
61
|
-
|
62
|
-
// This runs every time a digital pin that denko is listening to changes value.
|
63
|
-
// p = pin number, v = current value
|
64
|
-
void onDigitalListen(byte p, byte v){
|
65
|
-
}
|
66
|
-
|
67
|
-
// This runs every time an analog pin that denko is listening to gets read.
|
68
|
-
// p = pin number, v = read value
|
69
|
-
void onAnalogListen(byte p, int v){
|
70
|
-
}
|
data/src/denko_serial.ino
CHANGED
@@ -9,22 +9,8 @@ void setup() {
|
|
9
9
|
|
10
10
|
// Pass serial stream to denko so it can read/write.
|
11
11
|
denko.stream = &DENKO_SERIAL_IF;
|
12
|
-
|
13
|
-
// Add listener callbacks for local logic.
|
14
|
-
denko.digitalListenCallback = onDigitalListen;
|
15
|
-
denko.analogListenCallback = onAnalogListen;
|
16
12
|
}
|
17
13
|
|
18
14
|
void loop() {
|
19
15
|
denko.run();
|
20
16
|
}
|
21
|
-
|
22
|
-
// This runs every time a digital pin that denko is listening to changes value.
|
23
|
-
// p = pin number, v = current value
|
24
|
-
void onDigitalListen(byte p, byte v){
|
25
|
-
}
|
26
|
-
|
27
|
-
// This runs every time an analog pin that denko is listening to gets read.
|
28
|
-
// p = pin number, v = read value
|
29
|
-
void onAnalogListen(byte p, int v){
|
30
|
-
}
|
data/src/denko_wifi.ino
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
// #define WIFI_NINA
|
12
12
|
|
13
13
|
// WiFi101 Boards
|
14
|
-
#
|
14
|
+
#if defined(ARDUINO_SAMD_MKR1000) || defined(ADAFRUIT_FEATHER_M0)
|
15
15
|
#define WIFI_101
|
16
16
|
#endif
|
17
17
|
|
@@ -117,6 +117,11 @@ void setup() {
|
|
117
117
|
DENKO_SERIAL_IF.begin(115200);
|
118
118
|
while(!DENKO_SERIAL_IF);
|
119
119
|
|
120
|
+
// Adafruit Feather M0 Wi-Fi uses different pins.WiFi
|
121
|
+
#ifdef ADAFRUIT_FEATHER_M0
|
122
|
+
WiFi.setPins(8,7,4,2);
|
123
|
+
#endif
|
124
|
+
|
120
125
|
// Attempt initial WiFi connection.
|
121
126
|
connect();
|
122
127
|
|
@@ -153,10 +158,6 @@ void setup() {
|
|
153
158
|
// Start the denko TCP server.
|
154
159
|
server.begin();
|
155
160
|
|
156
|
-
// Add listener callbacks for local logic.
|
157
|
-
denko.digitalListenCallback = onDigitalListen;
|
158
|
-
denko.analogListenCallback = onAnalogListen;
|
159
|
-
|
160
161
|
// Use DENKO_SERIAL_IF as the denko IO stream until we get a TCP connection.
|
161
162
|
denko.stream = &DENKO_SERIAL_IF;
|
162
163
|
}
|
@@ -190,13 +191,3 @@ void loop() {
|
|
190
191
|
// Main loop of the denko library.
|
191
192
|
denko.run();
|
192
193
|
}
|
193
|
-
|
194
|
-
// This runs every time a digital pin that denko is listening to changes value.
|
195
|
-
// p = pin number, v = current value
|
196
|
-
void onDigitalListen(byte p, byte v){
|
197
|
-
}
|
198
|
-
|
199
|
-
// This runs every time an analog pin that denko is listening to gets read.
|
200
|
-
// p = pin number, v = read value
|
201
|
-
void onAnalogListen(byte p, int v){
|
202
|
-
}
|
data/src/lib/Denko.cpp
CHANGED
@@ -35,6 +35,8 @@ void Denko::sendReady() {
|
|
35
35
|
}
|
36
36
|
|
37
37
|
void Denko::run(){
|
38
|
+
if (rxBytes != 0) rxNotify();
|
39
|
+
|
38
40
|
while(stream->available()) {
|
39
41
|
parse(stream->read());
|
40
42
|
rxBytes ++;
|
@@ -55,6 +57,11 @@ void Denko::run(){
|
|
55
57
|
}
|
56
58
|
|
57
59
|
void Denko::parse(byte c) {
|
60
|
+
if ((fragmentIndex == 0) && (charIndex == 0) && ((c & 0b10000000) != 0)) {
|
61
|
+
dWrite((c & 0b00111111), ((c & 0b01000000) >> 6), false);
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
|
58
65
|
if ((c == '\n') || (c == '\\')) {
|
59
66
|
// If last char was a \, this \ or \n is escaped.
|
60
67
|
if(escaping){
|
@@ -161,7 +168,14 @@ void Denko::process() {
|
|
161
168
|
|
162
169
|
// Implemented in DenkoSPIBB.cpp
|
163
170
|
#ifdef DENKO_SPI_BB
|
164
|
-
case 21:
|
171
|
+
case 21: {
|
172
|
+
// Unpack read and write lengths from their 3 shared bytes.
|
173
|
+
uint16_t readLength = (((uint16_t)auxMsg[3] & 0xF0) << 4) | auxMsg[1];
|
174
|
+
uint16_t writeLength = (((uint16_t)auxMsg[3] & 0x0F) << 8) | auxMsg[2];
|
175
|
+
|
176
|
+
spiBBtransfer (auxMsg[4], auxMsg[5], auxMsg[6], pin, auxMsg[0], readLength, writeLength, &auxMsg[8]);
|
177
|
+
break;
|
178
|
+
}
|
165
179
|
case 22: spiBBaddListener (); break;
|
166
180
|
#endif
|
167
181
|
|
@@ -169,11 +183,17 @@ void Denko::process() {
|
|
169
183
|
#ifdef DENKO_SPI
|
170
184
|
case 26: {
|
171
185
|
// Do this since RP2040 crashes with reinterpet_cast of uint32_t.
|
172
|
-
uint32_t clockRate = (uint32_t)auxMsg[
|
173
|
-
clockRate |= (uint32_t)auxMsg[
|
174
|
-
clockRate |= (uint32_t)auxMsg[
|
175
|
-
clockRate |= (uint32_t)auxMsg[
|
176
|
-
|
186
|
+
uint32_t clockRate = (uint32_t)auxMsg[4];
|
187
|
+
clockRate |= (uint32_t)auxMsg[5] << 8;
|
188
|
+
clockRate |= (uint32_t)auxMsg[6] << 16;
|
189
|
+
clockRate |= (uint32_t)auxMsg[7] << 24;
|
190
|
+
|
191
|
+
// Unpack read and write lengths from their 3 shared bytes.
|
192
|
+
uint16_t readLength = (((uint16_t)auxMsg[3] & 0xF0) << 4) | auxMsg[1];
|
193
|
+
uint16_t writeLength = (((uint16_t)auxMsg[3] & 0x0F) << 8) | auxMsg[2];
|
194
|
+
|
195
|
+
spiTransfer(clockRate, pin, auxMsg[0], readLength, writeLength, &auxMsg[8]);
|
196
|
+
break;
|
177
197
|
}
|
178
198
|
case 27: spiAddListener (); break;
|
179
199
|
#endif
|
@@ -182,7 +202,14 @@ void Denko::process() {
|
|
182
202
|
#if defined(DENKO_SPI) || defined(DENKO_SPI_BB)
|
183
203
|
case 28: spiRemoveListener(); break;
|
184
204
|
#endif
|
185
|
-
|
205
|
+
|
206
|
+
// Implemented in DenkoI2CBB.cpp
|
207
|
+
#ifdef DENKO_I2C_BB
|
208
|
+
case 30: i2c_bb_search (); break;
|
209
|
+
case 31: i2c_bb_write (); break;
|
210
|
+
case 32: i2c_bb_read (); break;
|
211
|
+
#endif
|
212
|
+
|
186
213
|
// Implemented in DenkoI2C.cpp
|
187
214
|
#ifdef DENKO_I2C
|
188
215
|
case 33: i2cSearch (); break;
|
@@ -205,6 +232,7 @@ void Denko::process() {
|
|
205
232
|
case 95: setRegisterDivider (); break;
|
206
233
|
case 96: setAnalogWriteResolution (); break;
|
207
234
|
case 97: setAnalogReadResolution (); break;
|
235
|
+
case 98: binaryEcho (); break;
|
208
236
|
case 99: microDelay(*reinterpret_cast<uint16_t*>(auxMsg)); break;
|
209
237
|
|
210
238
|
// Should send a "feature not implemented" message as default.
|
@@ -224,11 +252,11 @@ void Denko::process() {
|
|
224
252
|
void Denko::updateListeners() {
|
225
253
|
currentTime = micros();
|
226
254
|
timeDiff = currentTime - lastTime;
|
227
|
-
|
255
|
+
|
228
256
|
if (timeDiff > 999) {
|
229
257
|
// Add a tick for every 1000us passed.
|
230
258
|
tickCount = tickCount + (timeDiff / 1000);
|
231
|
-
|
259
|
+
|
232
260
|
// lastTime for next run is currentTime offset by remainder.
|
233
261
|
lastTime = currentTime - (timeDiff % 1000);
|
234
262
|
|
@@ -254,7 +282,7 @@ void Denko::handshake() {
|
|
254
282
|
|
255
283
|
// Reset this so we never send Rx along with ACK:
|
256
284
|
rxBytes = 0;
|
257
|
-
|
285
|
+
|
258
286
|
// First handshake value is BOARD_MAP if set.
|
259
287
|
stream->print("ACK:");
|
260
288
|
#ifdef BOARD_MAP
|
@@ -266,7 +294,7 @@ void Denko::handshake() {
|
|
266
294
|
#ifdef DENKO_VERSION
|
267
295
|
stream->print(DENKO_VERSION);
|
268
296
|
#endif
|
269
|
-
|
297
|
+
|
270
298
|
// Third is serial buffer size.
|
271
299
|
stream->print(',');
|
272
300
|
stream->print(DENKO_SERIAL_BUFFER_SIZE);
|
@@ -274,7 +302,7 @@ void Denko::handshake() {
|
|
274
302
|
// Fourth is AUX_SIZE.
|
275
303
|
stream->print(',');
|
276
304
|
stream->print(AUX_SIZE);
|
277
|
-
|
305
|
+
|
278
306
|
// Fifth is EEPROM size. None on Due or Zero.
|
279
307
|
stream->print(',');
|
280
308
|
#if defined(EEPROM_EMULATED)
|
@@ -288,7 +316,7 @@ void Denko::handshake() {
|
|
288
316
|
#ifdef DENKO_I2C
|
289
317
|
stream->print(DENKO_I2C_BUFFER_SIZE);
|
290
318
|
#endif
|
291
|
-
|
319
|
+
|
292
320
|
// End
|
293
321
|
stream->print('\n');
|
294
322
|
}
|
@@ -300,7 +328,7 @@ void Denko::resetState() {
|
|
300
328
|
spiClearListeners();
|
301
329
|
#endif
|
302
330
|
#ifdef ESP32
|
303
|
-
|
331
|
+
ledcDetachAll();
|
304
332
|
#endif
|
305
333
|
registerDivider = 8; // Update register listeners every ~8ms.
|
306
334
|
fragmentIndex = 0;
|
@@ -319,7 +347,11 @@ void Denko::setRegisterDivider() {
|
|
319
347
|
// Set the analog write resolution.
|
320
348
|
void Denko::setAnalogWriteResolution() {
|
321
349
|
#ifdef WRITE_RESOLUTION_SETTER
|
322
|
-
|
350
|
+
#ifdef ESP32
|
351
|
+
esp32AnalogWRes = val;
|
352
|
+
#else
|
353
|
+
analogWriteResolution(val);
|
354
|
+
#endif
|
323
355
|
#endif
|
324
356
|
}
|
325
357
|
|
@@ -331,11 +363,28 @@ void Denko::setAnalogReadResolution() {
|
|
331
363
|
#endif
|
332
364
|
}
|
333
365
|
|
366
|
+
// CMD = 98
|
367
|
+
// Test to receive binary data and echo it back (as ASCII for now).
|
368
|
+
void Denko::binaryEcho() {
|
369
|
+
// Respond on whatever pin was given.
|
370
|
+
stream->print(pin);
|
371
|
+
stream->print(':');
|
372
|
+
|
373
|
+
// Echo bytes from aux back to stream. Val is data length.
|
374
|
+
for (uint16_t i=0; i<val; i++) {
|
375
|
+
stream->print(auxMsg[i]);
|
376
|
+
stream->print(',');
|
377
|
+
}
|
378
|
+
|
379
|
+
// End response.
|
380
|
+
stream->print('\n');
|
381
|
+
}
|
382
|
+
|
334
383
|
// CMD = 99
|
335
384
|
// Use a different blocking microsecond delay on different platforms.
|
336
385
|
void Denko::microDelay(uint32_t microseconds){
|
337
386
|
#if defined(ESP32)
|
338
|
-
|
387
|
+
esp_rom_delay_us(microseconds);
|
339
388
|
#else
|
340
389
|
delayMicroseconds(microseconds);
|
341
390
|
#endif
|