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/DEPS_IDE.md
CHANGED
@@ -8,7 +8,7 @@ Some microcontroller platforms require board manager cores that do not come with
|
|
8
8
|
* Confirm and exit Preferences. Wait for the IDE to finish downloading indexes from the new URL.
|
9
9
|
* Click on Tools > Board > Board Manager.
|
10
10
|
* Search for the platform you are installing by name, and click Install, optionally selecting a version.
|
11
|
-
|
11
|
+
|
12
12
|
### Installing Libraries
|
13
13
|
|
14
14
|
All platforms will require libraries to be installed. To install a library do the following:
|
@@ -33,53 +33,52 @@ All platforms will require libraries to be installed. To install a library do th
|
|
33
33
|
Arduino SAMD Boards (32-bits ARM Cortex-M0+)
|
34
34
|
Arduino UNO R4 Boards
|
35
35
|
ESP8266 Boards
|
36
|
-
ESP32 Boards @
|
36
|
+
ESP32 Boards @ 3.2.0
|
37
37
|
Raspberry Pi Pico/RP2040
|
38
|
-
````
|
38
|
+
````r
|
39
39
|
* Libraries:
|
40
40
|
````
|
41
|
-
Servo
|
42
|
-
Ethernet
|
43
|
-
WiFi
|
44
|
-
WiFi101
|
45
|
-
WiFiNINA
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
Adafruit NeoPixel by Adafruit
|
41
|
+
Servo by Michael Margolis, Arduino
|
42
|
+
Ethernet by Various
|
43
|
+
WiFi by Arduino
|
44
|
+
WiFi101 by Arduino
|
45
|
+
WiFiNINA by Arduino
|
46
|
+
ESP32Servo by Kevin Harrington, John K. Bennett
|
47
|
+
IRremote @ 4.4.2 by shirriff, z3to, ArminJo
|
48
|
+
Adafruit NeoPixel @ 1.15.1 by Adafruit
|
50
49
|
````
|
51
50
|
|
52
51
|
**AVR-based Arduinos & Clones Only:**
|
53
52
|
* Boards:
|
54
53
|
````
|
55
54
|
Arduino megaAVR Boards (only for Atmega4809 / Nano Every)
|
56
|
-
````
|
55
|
+
````
|
57
56
|
* Libraries:
|
58
57
|
````
|
59
|
-
Servo
|
60
|
-
Ethernet
|
61
|
-
WiFi
|
62
|
-
WiFiNINA
|
63
|
-
IRremote
|
64
|
-
Adafruit NeoPixel
|
58
|
+
Servo by Michael Margolis, Arduino
|
59
|
+
Ethernet by Various
|
60
|
+
WiFi by Arduino
|
61
|
+
WiFiNINA by Arduino
|
62
|
+
IRremote @ 4.4.2 by shirriff, z3to, ArminJo
|
63
|
+
Adafruit NeoPixel @ 1.15.1 by Adafruit
|
65
64
|
````
|
66
|
-
|
65
|
+
|
67
66
|
**ARM-based Arduinos & Clones Only:**
|
68
67
|
* Boards:
|
69
68
|
````
|
70
69
|
Arduino SAM Boards (32-bits ARM Cortex-M3)
|
71
70
|
Arduino SAMD Boards (32-bits ARM Cortex-M0+)
|
72
71
|
Arduino UNO R4 Boards
|
73
|
-
````
|
72
|
+
````
|
74
73
|
* Libraries:
|
75
74
|
````
|
76
|
-
Servo
|
77
|
-
Ethernet
|
78
|
-
WiFi
|
79
|
-
WiFi101
|
80
|
-
WiFiNINA
|
81
|
-
IRremote
|
82
|
-
Adafruit NeoPixel
|
75
|
+
Servo by Michael Margolis, Arduino
|
76
|
+
Ethernet by Various
|
77
|
+
WiFi by Arduino
|
78
|
+
WiFi101 by Arduino
|
79
|
+
WiFiNINA by Arduino
|
80
|
+
IRremote @ 4.4.2 by shirriff, z3to, ArminJo
|
81
|
+
Adafruit NeoPixel @ 1.15.1 by Adafruit
|
83
82
|
````
|
84
83
|
|
85
84
|
**ESP8266 Only:**
|
@@ -90,11 +89,11 @@ All platforms will require libraries to be installed. To install a library do th
|
|
90
89
|
* Boards:
|
91
90
|
````
|
92
91
|
ESP8266 Boards
|
93
|
-
````
|
92
|
+
````
|
94
93
|
* Libraries:
|
95
94
|
````
|
96
|
-
|
97
|
-
Adafruit NeoPixel
|
95
|
+
IRremote @ 4.4.2 by shirriff, z3to, ArminJo
|
96
|
+
Adafruit NeoPixel @ 1.15.1 by Adafruit
|
98
97
|
````
|
99
98
|
|
100
99
|
**ESP32 Only:**
|
@@ -104,15 +103,15 @@ All platforms will require libraries to be installed. To install a library do th
|
|
104
103
|
````
|
105
104
|
* Boards (latest version unless specified):
|
106
105
|
````
|
107
|
-
ESP32 Boards @
|
108
|
-
````
|
106
|
+
ESP32 Boards @ v3.2.0
|
107
|
+
````
|
109
108
|
* Libraries (latest version unless specified):
|
110
109
|
````
|
111
|
-
|
112
|
-
|
113
|
-
Adafruit NeoPixel
|
110
|
+
ESP32Servo @ 3.0.6 by Kevin Harrington, John K. Bennett
|
111
|
+
IRremote @ 4.4.2 by shirriff, z3to, ArminJo
|
112
|
+
Adafruit NeoPixel @ 1.15.1 by Adafruit
|
114
113
|
````
|
115
|
-
|
114
|
+
|
116
115
|
**RP2040 Only:**
|
117
116
|
* Board Manager URLs:
|
118
117
|
````
|
@@ -121,8 +120,9 @@ All platforms will require libraries to be installed. To install a library do th
|
|
121
120
|
* Boards:
|
122
121
|
````
|
123
122
|
Raspberry Pi Pico/RP2040
|
124
|
-
````
|
123
|
+
````
|
125
124
|
* Libraries:
|
126
125
|
````
|
127
|
-
IRremote
|
126
|
+
IRremote @ 4.4.2 by shirriff, z3to, ArminJo
|
127
|
+
Adafruit NeoPixel @ 1.15.1 by Adafruit
|
128
128
|
````
|
data/MICROCONTROLLERS.md
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
# Supported Microcontrollers
|
2
|
+
|
3
|
+
:green_heart: Full support :yellow_heart: Partial support :heart: Planned. No support yet :question: Works in theory. Untested in real hardware.
|
4
|
+
|
5
|
+
## Espressif Chips with Wi-Fi (Except H2)
|
6
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_esp8266.yml)
|
7
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_esp32.yml)
|
8
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_esp32c3.yml)
|
9
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_esp32c6.yml)
|
10
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_esp32h2.yml)
|
11
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_esp32s2.yml)
|
12
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_esp32s3.yml)
|
13
|
+
|
14
|
+
| Chip | Status | Board Tested | Notes |
|
15
|
+
| :-------- | :------: | :--------------- |------ |
|
16
|
+
| ESP8266 | :green_heart: | NodeMCU |
|
17
|
+
| ESP8285 | :question: | DOIT ESP-Mx DevKit | Should be identical to 8266. Not tested in hardware.
|
18
|
+
| ESP32 | :green_heart: | DOIT ESP32 DevKit V1 |
|
19
|
+
| ESP32-S2 | :green_heart: | LOLIN S2 Pico | Native USB-CDC (broken in core 3.0+)
|
20
|
+
| ESP32-S3 | :green_heart: | LOLIN S3 V1.0.0 | Native USB-CDC (broken in core 3.0+)
|
21
|
+
| ESP32-C3 | :green_heart: | LOLIN C3 Mini V2.1.0 | Native USB-CDC (broken in core 3.0+)
|
22
|
+
| ESP32-H2 | :green_heart: | ESP32-H2-MINI-1 | No Wi-Fi. Native USB-CDC (broken in core 3.0+)
|
23
|
+
| ESP32-C6 | :green_heart: | ESP32-C6-WROOM-1 | Native USB-CDC (broken in core 3.0+)
|
24
|
+
|
25
|
+
**Note:** For ESP32 chips using native USB-CDC, make sure `USB CDC On Boot` is `Enabled` in the IDE's `Tools` menu. Flashing from the CLI doesn't automatically enable this, so the IDE is recommended for now.
|
26
|
+
|
27
|
+
**Note:** Since Arduino ESP32 Core version 3.0+, USB-CDC is very unreliable when sending lots of data both directions (something denko can do). It's a known issue in the core. Use a regular UART until it's fixed.
|
28
|
+
|
29
|
+
## AVR/MegaAVR Based Arduino Products (and Clones)
|
30
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_atmega_avr.yml)
|
31
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_atmega_megaavr.yml)
|
32
|
+
|
33
|
+
| Chip | Status | Products | Notes |
|
34
|
+
| :-------- | :------: | :--------------- |------ |
|
35
|
+
| ATmega168 | :green_heart: | Duemilanove, Diecimila, Pro | Omits features. `denko targets` for info.
|
36
|
+
| ATmega328 | :green_heart: | Uno R3, Uno WiFi, Nano, Fio, Pro |
|
37
|
+
| ATmega32u4 | :green_heart: | Leonardo, Micro, Leonardo ETH, Esplora, LilyPad USB |
|
38
|
+
| ATmega1280 | :green_heart: | Mega |
|
39
|
+
| ATmega2560 | :green_heart: | Mega2560, Arduino Mega ADK |
|
40
|
+
| ATmega4809 | :green_heart: | Nano Every, Uno WiFi Rev2 |
|
41
|
+
|
42
|
+
**Note:** Only USB boards listed. Any board with a supported chip should work, once you can flash it and connect to serial.
|
43
|
+
|
44
|
+
## ARM Based Arduino Products (and Clones)
|
45
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_atsam3x.yml)
|
46
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_atsamd21.yml)
|
47
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_ra4m1.yml)
|
48
|
+
|
49
|
+
| Chip | Status | Products | Notes |
|
50
|
+
| :-------- | :------: | :--------------- |------ |
|
51
|
+
| ATSAM3X8E | :green_heart: | Due | Native USB. Tone and infrared not supported
|
52
|
+
| ATSAMD21 | :green_heart: | Zero, M0 Series, Nano 33 IOT, MKR WiFi 1010 | Native USB
|
53
|
+
| RA4M1 | :green_heart: | Uno R4 Minima, Uno R4 WiFi | Infrared not supported
|
54
|
+
|
55
|
+
## Arduino Networking
|
56
|
+
|
57
|
+
| Chip | Status | Products | Notes |
|
58
|
+
| :-------- | :------: | :--------------- |------ |
|
59
|
+
| Wiznet W5100/5500 | :green_heart: | Ethernet Shield | Wired Ethernet shield
|
60
|
+
| HDG204 + AT32UC3 | :question: | WiFi Shield | Compiles. No test hardware
|
61
|
+
| ATWINC1500 | :green_heart: | MKR1000, WiFi Shield 101 | #define WIFI_101 for shield
|
62
|
+
| u-blox NINA-W102 | :question: | Uno WiFi Rev 2, MKR WiFi 1010, Nano 33 IOT | Compiles. No test hardware
|
63
|
+
|
64
|
+
## Raspberry Pi Microcontrollers
|
65
|
+
[](https://github.com/denko-rb/denko/actions/workflows/build_rp2040.yml)
|
66
|
+
|
67
|
+
| Chip | Status | Board Tested | Notes |
|
68
|
+
| :-------- | :------: | :--------------- |------ |
|
69
|
+
| RP2040 | :green_heart: | Raspberry Pi Pico (W) |
|
70
|
+
| RP2350 | :heart: | Raspberry Pi Pico 2 (W) |
|
71
|
+
|
72
|
+
## AVR Chips from [MightyCore](https://github.com/MCUdude/MightyCore)
|
73
|
+
|
74
|
+
| Chip | Status | Products | Notes |
|
75
|
+
| :-------- | :------: | :--------------- |------ |
|
76
|
+
| ATmega1284 | :heart: | Used in many 8-bit 3D printer boards. |
|
77
|
+
|
78
|
+
## Implemented Interfaces
|
79
|
+
|
80
|
+
| Name | Status | HW/SW | Component Class | Notes |
|
81
|
+
| :--------------- | :------: | :--- | :-------------- | :---- |
|
82
|
+
| Digital In | :green_heart: | H | `DigitalIO::Input` | 1ms - 128ms (4ms default) listen, poll, or read
|
83
|
+
| Analog In (ADC) | :green_heart: | H | `AnalogIO::Input` | 1ms - 128ms (16ms default) listen, poll, or read
|
84
|
+
| Digital Out | :green_heart: | H | `DigitalIO::Output` |
|
85
|
+
| Analog Out (DAC) | :green_heart: | H | `AnalogIO::Output` | **Only** SAM3X, SAMD21, RA4M1, ESP32, ESP32-S2
|
86
|
+
| PWM Out | :green_heart: | H | `PulseIO::PWMOutput` |
|
87
|
+
| Servo/ESC Motor Drive | :green_heart: | H | See Motor Driver Table | Depends on PWM
|
88
|
+
| Tone Out (Sq. Wave) | :green_heart: | H | `PulseIO::Buzzer` | Except SAM3X. Uses PWM
|
89
|
+
| I2C | :green_heart: | H | `I2C::Bus` | Predetermined pins per board
|
90
|
+
| I2C Bit-Bang | :green_heart: | S | `I2C::BitBang` | Any pins
|
91
|
+
| SPI | :green_heart: | H | `SPI::Bus` | Predetermined pins per board
|
92
|
+
| SPI Bit-Bang | :green_heart: | S | `SPI::BitBang` | Any pins
|
93
|
+
| UART | :green_heart: | H | `UART::Hardware` | **Except** Atmega328, ATmega168
|
94
|
+
| UART Bit-Bang | :green_heart: | S | `UART::BitBang` | **Only** ATmega328
|
95
|
+
| Maxim OneWire | :green_heart: | S | `OneWire::Bus` | No overdrive
|
96
|
+
| Infrared Output | :green_heart: | S | `PulseIO::IROutput` | **Except** SAM3X, RA4M1
|
97
|
+
| Infrared Input | :heart: | S | `PulseIO::IRInput` | Doable with existing library
|
98
|
+
| WS2812 RGB LEDs | :green_heart: | S | `LED::WS2812` |
|
99
|
+
| ESP32-PCNT | :heart: | H | - | **Only** ESP32. Pulse and encoder counter
|
100
|
+
| ESP32-MCPWM | :heart: | H | - | **Only** ESP32. Motor control PWM
|
101
|
+
|
102
|
+
**Note:** When listening, the board checks the pin's value every **_2^n_** milliseconds (**_n_** from **_0_** to **_7_**), without further commands.
|
103
|
+
Polling and reading follow a call and response pattern.
|
data/PERIPHERALS.md
ADDED
@@ -0,0 +1,178 @@
|
|
1
|
+
# Supported Peripherals
|
2
|
+
|
3
|
+
:green_heart: Full support :yellow_heart: Partial support :heart: Planned. No support yet
|
4
|
+
|
5
|
+
## Digital and Analog Input and Output
|
6
|
+
|
7
|
+
| Name | Status | Interface | Component Class | Notes |
|
8
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
9
|
+
| Button | :green_heart: | Digital In | `DigitalIO::Button` |
|
10
|
+
| Relay | :green_heart: | Digital Out | `DigitalIO::Relay` |
|
11
|
+
| Rotary Encoder | :green_heart: | Digital In | `DigitalIO::RotaryEncoder` | Listens every 1ms
|
12
|
+
| Potentiometer | :green_heart: | Analog In | `AnalogIO::Potentiometer` | Smoothing on by default
|
13
|
+
| Joystick | :green_heart: | Analog In | `AnalogIO::Joystick` |
|
14
|
+
|
15
|
+
## LED
|
16
|
+
|
17
|
+
| Name | Status | Interface | Component Class | Notes |
|
18
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
19
|
+
| LED | :green_heart: | Digi/Ana Out | `LED::Base` |
|
20
|
+
| RGB LED | :green_heart: | Digi/Ana Out | `LED::RGB` |
|
21
|
+
| 7 Segment Display | :yellow_heart: | Digital Out | `LED::SevenSegment` | No decimal point
|
22
|
+
| 8x8 LED (MAX7219) | :heart: | SPI | `LED::MAX7219` |
|
23
|
+
| TM1637 | :heart: | SPI | `LED::TM1637` | 4x 7 Segment + Colon
|
24
|
+
| TM1652 | :heart: | SPI | `LED::TM1652` | 4x 7 Segment w/ decimal point + Colon
|
25
|
+
| Neopixel / WS2812B | :green_heart: | Adafruit Library | `LED::WS2812` |
|
26
|
+
| Dotstar / APA102 | :green_heart: | SPI | `LED::APA102` |
|
27
|
+
|
28
|
+
## Display
|
29
|
+
|
30
|
+
| Name | Status | Interface | Component Class | Notes |
|
31
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
32
|
+
| HD44780 LCD | :green_heart: | Digital Out, Output Register | `Display::HD44780` | Char LCD. Also works through PCF8574
|
33
|
+
| Canvas | :yellow_heart: | - | `Display::Canvas` | Mono 2D graphics
|
34
|
+
| SSD1306 | :green_heart: | I2C or SPI | `Display::SSD1306` | Mono OLED: 128x64, 128x32
|
35
|
+
| SH1106 | :green_heart: | I2C or SPI | `Display::SH1106` | Mono OLED: 128x64
|
36
|
+
| SH1107 | :green_heart: | I2C or SPI | `Display::SH1107` | Mono OLED: 128x128
|
37
|
+
| PCD8544 | :green_heart: | SPI | `Display::PCD8544` | 84x48 Mono LCD (aka Nokia 5110)
|
38
|
+
| ST7565 | :green_heart: | SPI | `Display::ST7565` | 128x64 Mono LCD
|
39
|
+
| ST7302 | :green_heart: | SPI | `Display::ST7302` | 250x122 Mono Reflective LCD
|
40
|
+
| LS027B7DH01 | :heart: | SPI | `Display::SharpLCD` | 400x240 Mono Reflective LCD
|
41
|
+
| SSD1680 | :green_heart: | SPI | `Display::SSD1680` | 296x128 Black/(Red)/White E-Paper (2.9")
|
42
|
+
| SSD1681 | :green_heart: | SPI | `Display::SSD1681` | 200x200 Black/(Red)/White E-Paper (1.54")
|
43
|
+
| IL0373 | :green_heart: | SPI | `Display::IL0373` | 212x104 Black/(Red)/White E-Paper (2.13")
|
44
|
+
| ST7735S | :heart: | SPI | `Display::ST7735S` | 160x128 RGB LCD
|
45
|
+
| ST7789V | :heart: | SPI | `Display::ST7789V` | 240x135 RGB LCD (TTGO)
|
46
|
+
| ILI9341 | :heart: | SPI | `Display::ILI9341` | 240x320 RGB LCD
|
47
|
+
| GC9107 | :heart: | SPI | `Display::GC9107` | 128x128 RGB LCD
|
48
|
+
| GC9A01 | :heart: | SPI | `Display::GCA9A01` | 240x240 Round RGB LCD
|
49
|
+
|
50
|
+
## Sound
|
51
|
+
|
52
|
+
| Name | Status | Interface | Component Class | Notes |
|
53
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
54
|
+
| Piezo Buzzer | :green_heart: | Tone Out | `PulseIO::Buzzer` | Frequency > 30Hz
|
55
|
+
|
56
|
+
## Motors and Motor Drivers
|
57
|
+
|
58
|
+
| Name | Status | Interface | Component Class | Notes |
|
59
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
60
|
+
| Generic Hobby Servo | :green_heart: | Servo/ESC PWM | `Motor::Servo` | Max depends on PWM channel count
|
61
|
+
| Generic ESC | :yellow_heart: | Servo/ESC PWM | `Motor::Servo` | Works. Needs its own class.
|
62
|
+
| PCA9685 | :heart: | I2C | `PulseIO::PCA9685` | 16-ch, 12-bit PWM for servo or LED
|
63
|
+
| L298N | :green_heart: | Digi + PWM Out | `Motor::L298` | H-Bridge DC motor driver
|
64
|
+
| DRV8833 | :heart: | Digi + PWM Out | `Motor::DRV8833` | H-Bridge DC motor driver
|
65
|
+
| TB6612 | :heart: | Digi + PWM Out | `Motor::TB6612` | H-Bridge DC motor driver
|
66
|
+
| AT8236 | :heart: | Digi + PWM Out | `Motor::AT8236` | H-Bridge DC motor driver
|
67
|
+
| A3967 | :green_heart: | Digital Out | `Motor::A3967` | 1-ch microstepper (EasyDriver)
|
68
|
+
| A4988 | :yellow_heart: | DigitalOut | `Motor::Stepper` | 1-ch microstepper
|
69
|
+
| TMC2209 | :heart: | - | - | 1-ch silent stepper driver
|
70
|
+
|
71
|
+
## I/O Expansion
|
72
|
+
|
73
|
+
| Name | Status | Interface | Component Class | Notes |
|
74
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
75
|
+
| Input Register | :green_heart: | SPI | `SPI::InputRegister` | Tested on CD4021B
|
76
|
+
| Output Register | :green_heart: | SPI | `SPI::OutputRegister`| Tested on 74HC595
|
77
|
+
| PCF8574 Expander | :green_heart: | I2C | `DigitalIO::PCF8574` | 8-ch digital I/O. Commonly found on HD44780
|
78
|
+
| ADS1100 ADC | :green_heart: | I2C | `AnalogIO::ADS1100` | 1-ch, 16-bit ADC. No continuous mode.
|
79
|
+
| ADS1115 ADC | :green_heart: | I2C | `AnalogIO::ADS1115` | 4-ch, 16-bit ADC. Comparator not implemented.
|
80
|
+
| ADS1118 ADC | :green_heart: | SPI | `AnalogIO::ADS1118` | 4-ch, 16-bit ADC + temperature
|
81
|
+
| ADS1232 ADC | :heart: | SPI | `AnalogIO::ADS1232` | 2-ch, 24-bit ADC + temperature
|
82
|
+
| PCF8591 ADC/DAC | :heart: | I2C | `AnalogIO::PCF8591` | 4-ch, 8-bit ADC + 1-ch 8-bit DAC
|
83
|
+
| MCP4725 DAC | :heart: | I2C | `AnalogIO::MCP4275` | 1-ch, 12-bit DAC
|
84
|
+
| PCA9548 I2C Mux | :heart: | I2C | `I2C::PCA9548` | 8-way I2C multiplexer
|
85
|
+
|
86
|
+
## Environmental Sensors
|
87
|
+
|
88
|
+
| Name | Status | Interface | Component Class | Type | Notes |
|
89
|
+
| :--------------- | :------: | :-------- | :--------------- |--------------- | ---------------------- |
|
90
|
+
| MAX31850 | :heart: | OneWire | `Sensor::MAX31850` | Thermocouple |
|
91
|
+
| MAX6675 | :heart: | SPI | `Sensor::MAX6675` | Thermocouple |
|
92
|
+
| DS18B20 | :green_heart: | OneWire | `Sensor::DS18B20` | Temp |
|
93
|
+
| DHT11/21/22 | :green_heart: | Digi In/Out | `Sensor::DHT` | Temp / RH |
|
94
|
+
| SHT30/31/35 | :green_heart: | I2C | `Sensor::SHT3X` | Temp / RH | M5Stack ENV III, one-shot only
|
95
|
+
| SHT40/41 | :green_heart: | I2C | `Sensor::SHT4X` | Temp / RH |
|
96
|
+
| QMP6988 | :green_heart: | I2C | `Sensor::QMP6988` | Temp / Press | M5Stack ENV III
|
97
|
+
| BMP180 | :green_heart: | I2C | `Sensor::BMP180` | Temp / Press |
|
98
|
+
| BMP280 | :green_heart: | I2C | `Sensor::BMP280` | Temp / Press |
|
99
|
+
| BME280 | :green_heart: | I2C | `Sensor::BME280` | Temp / Press / RH |
|
100
|
+
| BME680 | :heart: | I2C | `Sensor::BME680` | Temp / Press / RH / TVOC |
|
101
|
+
| HDC1080 | :green_heart: | I2C | `Sensor::HDC1080` | Temp / RH |
|
102
|
+
| HTU21D | :green_heart: | I2C | `Sensor::HTU21D` | Temp / RH | No user register read
|
103
|
+
| HTU31D | :green_heart: | I2C | `Sensor::HTU31D` | Temp / RH | No diagnostic read
|
104
|
+
| AHT10/15 | :green_heart: | I2C | `Sensor::AHT1X` | Temp / RH |
|
105
|
+
| AHT20/21/25 | :green_heart: | I2C | `Sensor::AHT2X` | Temp / RH |
|
106
|
+
| AHT30 | :green_heart: | I2C | `Sensor::AHT3X` | Temp / RH |
|
107
|
+
| ENS160 | :heart: | I2C | `Sensor::ENS160` | eCO2 / TVOC / AQI |
|
108
|
+
| AGS02MA | :heart: | I2C | `Sensor::AGS02MA` | TVOC |
|
109
|
+
| SCD40 | :heart: | I2C | `Sensor::SDC40` | Temp / Press / CO2 |
|
110
|
+
| CCS811 | :heart: | I2C | `Sensor::CCS811` | eCO2 |
|
111
|
+
| MICS5524 | :heart: | Analog In | `Sensor::MICS5524` | CO/Alcohol/VOC |
|
112
|
+
|
113
|
+
## Light Sensors
|
114
|
+
|
115
|
+
| Name | Status | Interface | Component Class | Notes |
|
116
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
117
|
+
| BH1750 | :heart: | Digital In | `Sensor::BH1750` | Ambient Light
|
118
|
+
| TCS34725 | :heart: | I2C | `Sensor::TCS34725` | RGB
|
119
|
+
| APDS9960 | :heart: | I2C | `Sensor::APDS9960` | Proximity, RGB, Gesture
|
120
|
+
|
121
|
+
## PIR Motion Sensors
|
122
|
+
| Name | Status | Interface | Component Class | Notes |
|
123
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
124
|
+
| HC-SR501 | :green_heart: | Digital In | `Sensor::GenericPIR` |
|
125
|
+
| HC-SR505 | :yellow_heart: | Digital In | `Sensor::GenericPIR` |
|
126
|
+
| AS312 | :green_heart: | Digital In | `Sensor::GenericPIR` |
|
127
|
+
| AM312 | :yellow_heart: | Digital In | `Sensor::GenericPIR` |
|
128
|
+
|
129
|
+
## Distance Sensors
|
130
|
+
|
131
|
+
| Name | Status | Interface | Component Class | Notes |
|
132
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
133
|
+
| HC-SR04 | :green_heart: | Digi In/Out | `Sensor::HCSR04` | Ultrasonic, 20-4000mm
|
134
|
+
| RCWL-1601 | :green_heart: | Digi In/Out | `Sensor::HCSR04` | Essentially a 3.3V version of HC-SR04
|
135
|
+
| RCWL-9620 | :green_heart: | I2C | `Sensor::RCWL9260` | Ultrasonic, 20-4500mm
|
136
|
+
| JSN-SR04T | :green_heart: | UART | `Sensor::JSNSR04T` | Mode 2 ONLY. Use HC-SR04 driver for mode 0 or 4.
|
137
|
+
| VL53L0X | :yellow_heart: | I2C | `Sensor::VL53L0X` | Laser, 20 - 2000mm. Continuous mode only. No configuration.
|
138
|
+
| GP2Y0E03 | :heart: | I2C | `Sensor::GP2Y0E03` | Infrared, 40 - 500mm
|
139
|
+
|
140
|
+
## Inertial Measurement Units
|
141
|
+
|
142
|
+
| Name | Status | Interface | Component Class | Notes |
|
143
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
144
|
+
| ADXL345 | :heart: | I2C | `Sensor::ADXL345` | Accelerometer
|
145
|
+
| IT3205 | :heart: | I2C | `Sensor::IT3205` | Gyroscope
|
146
|
+
| HMC5883L | :heart: | I2C | `Sensor::HMC5883L` | Compass
|
147
|
+
| MPU6050 | :heart: | I2C | `Sensor::MPU6050` | Gyro + Accelerometer
|
148
|
+
| MPU6886 | :heart: | I2C | `Sensor::MPU6886` | Gyro + Accelerometer
|
149
|
+
| BMI160 | :heart: | I2C | `Sensor::BMI160` | Gyro + Accelerometer
|
150
|
+
| LSM6DS3 | :heart: | I2C | `Sensor:LSM6DS3` | Gyro + Accelerometer
|
151
|
+
|
152
|
+
## Misc Sensors
|
153
|
+
| Name | Status | Interface | Component Class | Notes |
|
154
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
155
|
+
| INA219 | :heart: | I2C | `Sensor::INA219` | DC Current Sensor
|
156
|
+
|
157
|
+
## Real Time Clocks
|
158
|
+
|
159
|
+
| Name | Status | Interface | Component Class | Notes |
|
160
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
161
|
+
| DS1302 | :heart: | I2C | `RTC::DS1302` |
|
162
|
+
| DS1307 | :heart: | I2C | `RTC::DS1307` |
|
163
|
+
| DS3231 | :green_heart: | I2C | `RTC::DS3231` | Alarms not implemented
|
164
|
+
| PCF8563 | :heart: | I2C | `RTC::PCF8563` |
|
165
|
+
|
166
|
+
## GPS
|
167
|
+
|
168
|
+
| Name | Status | Interface | Component Class | Notes |
|
169
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
170
|
+
| GT-U7 | :heart: | UART | - |
|
171
|
+
|
172
|
+
## Miscellaneous
|
173
|
+
|
174
|
+
| Name | Status | Interface | Component Class | Notes |
|
175
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
176
|
+
| Board EEPROM | :green_heart: | Built-In | `EEPROM::Board` | Arduino ARM boards have no EEPROM
|
177
|
+
| AT24C | :green_heart: | I2C | `EEPROM::AT24C` | I2C EEPROM (32, 64, 128 or 256 kib)
|
178
|
+
| MFRC522 | :heart: | SPI/I2C | `DigitalIO::MFRC522` | RFID tag reader / writer
|
data/README.md
CHANGED
@@ -1,41 +1,60 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
1
|
+
# denko
|
2
|
+
[](https://github.com/denko-rb/denko/actions/workflows/ruby.yml)
|
3
|
+
|
4
|
+
<img src="images/demo.gif" width="540" height="360" alt="Milk-V mruby GPIO demo">
|
5
|
+
|
6
|
+
Program real-life electronics in Ruby. LEDs, buttons, sensors (and more) work just like any Ruby object:
|
4
7
|
|
5
8
|
```ruby
|
6
9
|
led.blink 0.5
|
7
10
|
|
8
|
-
lcd.
|
11
|
+
lcd.text "Hello World!"
|
9
12
|
|
10
13
|
reading = sensor.read
|
11
14
|
|
12
|
-
button.down
|
13
|
-
|
14
|
-
end
|
15
|
+
button.down { puts "Button pressed!" }
|
16
|
+
button.listen
|
15
17
|
```
|
16
18
|
|
17
|
-
|
19
|
+
## How It Works
|
20
|
+
|
21
|
+
<img src="images/layer_diagram.png" width="820" height="540" alt="Denko Layer Diagram">
|
18
22
|
|
19
|
-
|
23
|
+
Denko aims to provide a Ruby API for you to directly control physical peripherals, while abstracting all the hardware and software complexity in between. There are currently 3 supported "stacks":
|
20
24
|
|
21
|
-
###
|
25
|
+
### Connected Microcontroller
|
26
|
+
- Flash a [supported microcontroller](MICROCONTROLLERS.md) with the Denko firmware
|
27
|
+
- Connect it to a PC running Ruby, over Serial, Ethernet, or Wi-Fi
|
28
|
+
- The microcontroller does the "low-level" signal work, appearing as an instance of `Denko::Board` in Ruby
|
29
|
+
- Ruby peripheral drivers, running on the PC, do the "high-level" work
|
22
30
|
|
23
|
-
|
31
|
+
### Single-Board-Computer
|
32
|
+
- Install [denko-piboard](https://github.com/denko-rb/denko-piboard) on a Linux SBC
|
33
|
+
- The included C extention makes the SBC's GPIO header available via a `Denko::PiBoard` instance
|
34
|
+
- Use it in Ruby programs, self-contained on the SBC
|
24
35
|
|
25
|
-
|
26
|
-
|
36
|
+
### mruby on Milk-V Duo
|
37
|
+
- Download `mruby` and/or `mirb` binaries from the [mruby-denko-milkv-duo](https://github.com/denko-rb/mruby-denko-milkv-duo) repo onto your Milk-V Duo
|
38
|
+
- Everything is included. Instances of `Denko::Board` in mruby will use the Milk-V's GPIO
|
27
39
|
|
28
|
-
|
29
|
-
|
40
|
+
**Notes:**
|
41
|
+
- Peripheral drivers are implemented __only__ in this gem, and the source files are used by __all__ stacks
|
42
|
+
- That makes the [examples folder](examples) in this gem relveant to all (ignoring hardware incompatibilities)
|
43
|
+
- If using `denko-piboard` or `mruby-denko-milkv-duo`, ignore the hardware and installation sections here
|
30
44
|
|
31
|
-
|
45
|
+
## Supported Hardware
|
46
|
+
- [Peripherals](PERIPHERALS.md)
|
47
|
+
- [Microcontrollers](MICROCONTROLLERS.md)
|
48
|
+
- [Single Board Computers](https://github.com/denko-rb/denko-piboard?tab=readme-ov-file#support)
|
49
|
+
- [Milk-V Duo Boards](https://github.com/denko-rb/mruby-denko-milkv-duo?tab=readme-ov-file#supported-hardware)
|
32
50
|
|
33
|
-
##
|
51
|
+
## Installation
|
34
52
|
|
35
|
-
**Note:**
|
53
|
+
**Note:** On Windows you can follow the Mac/Linux instructions in WSL, but it isn't recommended. Serial (COM port) forwarding isn't working on WSL2, which means you can't communicate with the board. There are workarounds, and it might work on WSL1, but the [RubyInstaller for Windows](https://rubyinstaller.org/) and Arduino IDE are recommended instead. A Linux virtual machine with USB passthrough works too.
|
36
54
|
|
37
55
|
#### 1. Install the Gem
|
38
|
-
|
56
|
+
|
57
|
+
```console
|
39
58
|
gem install denko
|
40
59
|
```
|
41
60
|
|
@@ -44,73 +63,83 @@ gem install denko
|
|
44
63
|
Get the Arduino IDE [here](http://arduino.cc/en/Main/Software) for a graphical interface (recommended for Windows), or use the command line interface from [here](https://github.com/arduino/arduino-cli/releases), or Homebrew.
|
45
64
|
|
46
65
|
**CLI Installation with Homebrew on Mac or Linux:**
|
47
|
-
|
66
|
+
|
67
|
+
```console
|
48
68
|
brew update
|
49
69
|
brew install arduino-cli
|
50
70
|
```
|
51
71
|
|
52
72
|
#### 3. Install Arduino Dependencies
|
73
|
+
|
53
74
|
Denko uses Arduino cores, which support different microcontrollers, and a few libraries. Install only the ones for your microcontroller, or install everything. There are no conflcits. Instructions:
|
54
|
-
|
55
|
-
|
75
|
+
|
76
|
+
- [Install Dependencies in IDE](DEPS_IDE.md)
|
77
|
+
- [Install Dependencies in CLI](DEPS_CLI.md)
|
56
78
|
|
57
79
|
#### 4. Generate the Arduino Sketch
|
80
|
+
|
58
81
|
The `denko` command is included with the gem. It will make the Arduino sketch folder for you, and configure it.
|
59
82
|
|
60
83
|
**Example for ESP32 target on both serial and Wi-Fi:**
|
61
|
-
|
84
|
+
|
85
|
+
```console
|
62
86
|
denko sketch serial --target esp32
|
63
87
|
denko sketch wifi --target esp32 --ssid YOUR_SSID --password YOUR_PASSWORD
|
64
88
|
|
65
89
|
# For more options
|
66
90
|
denko targets
|
67
91
|
```
|
92
|
+
|
68
93
|
**Note:** Boards flashed with a Wi-Fi or Ethernet sketch will [listen for a TCP connection](examples/connection/tcp.rb), but fall back to Serial when there is none active.
|
69
94
|
|
70
95
|
#### 5a. IDE Flashing
|
71
96
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
97
|
+
- Connect the board to your computer with a USB cable.
|
98
|
+
- Open the .ino file inside your sketch folder with the IDE.
|
99
|
+
- Open the dropdown menu at the top of the IDE window, and select your board.
|
100
|
+
- Press the Upload :arrow_right: button. This will compile the sketch, and flash it to the board.
|
76
101
|
|
77
102
|
**Troubleshooting:**
|
78
|
-
|
79
|
-
|
80
|
-
|
103
|
+
|
104
|
+
- If your serial port is in the list, but the board is wrong, select the serial port anyway, then you can manually select a board.
|
105
|
+
- If your board doesn't show up at all, make sure it is connected properly. Try disconnecting and reconnecting, use a different USB port or cable, or press the reset button after plugging it in.
|
106
|
+
- Some boards can get into a state where you have to hold their "boot" button while cycling power (reconnect or reset) for them to enter firmware update mode. Eg. Raspberry Pi Pico, ESP32-S2/S3.
|
81
107
|
|
82
108
|
#### 5b. CLI Flashing
|
83
109
|
|
84
|
-
|
85
|
-
|
86
|
-
|
110
|
+
- The path output by `denko sketch` earlier is your sketch folder. Keep it handy.
|
111
|
+
- Connect the board to your computer with a USB cable.
|
112
|
+
- Check if the CLI recognizes it:
|
87
113
|
|
88
|
-
```
|
114
|
+
```console
|
89
115
|
arduino-cli board list
|
90
116
|
```
|
91
|
-
|
92
|
-
|
93
|
-
|
117
|
+
|
118
|
+
- Using the Port and FQBN (Fully Qualified Board Name) shown, compile and upload the sketch:
|
119
|
+
|
120
|
+
```console
|
94
121
|
arduino-cli compile -b YOUR_FQBN YOUR_SKETCH_FOLDER
|
95
122
|
arduino-cli upload -v -p YOUR_PORT -b YOUR_FQBN YOUR_SKETCH_FOLDER
|
96
123
|
```
|
97
124
|
|
98
125
|
**Troubleshooting:**
|
99
|
-
|
100
|
-
|
126
|
+
|
127
|
+
- Follow the same steps as the IDE method above. List all FQBNs using:
|
128
|
+
|
129
|
+
```console
|
101
130
|
arduino-cli board listall
|
102
131
|
```
|
103
132
|
|
104
133
|
#### 6. Test It
|
105
134
|
|
106
|
-
Most boards have a regular LED on-board. Test
|
135
|
+
Most boards have a regular LED on-board. Test with the [blink](examples/led/builtin_blink.rb) example. If you have an on-board WS2812 LED (Neopixel), use the [WS2812 blink](examples/led/ws2812_builtin_blink.rb) example instead. If it starts blinking, you're ready for Ruby!
|
107
136
|
|
108
137
|
## Examples and Tutorials
|
109
138
|
|
110
139
|
#### Tutorial
|
111
140
|
|
112
141
|
- [Here](tutorial) you will find a beginner-friendly tutorial, that goes through the basics, using commented examples and diagrams. Read the comments and try modifying the code. You will need the following:
|
113
|
-
- 1 compatible microcontroller
|
142
|
+
- 1 [compatible microcontroller](MICROCONTROLLERS.md)
|
114
143
|
- 1 button or momentary switch
|
115
144
|
- 1 potentiometer (any value)
|
116
145
|
- 1 external RGB LED (4 legs common cathode, not a Neopixel or individually addressable)
|
@@ -118,24 +147,10 @@ Most boards have a regular LED on-board. Test it with the [blink](examples/led/b
|
|
118
147
|
- Current limiting resistors for LEDs
|
119
148
|
- Breadboard
|
120
149
|
- Jumper wires
|
121
|
-
|
122
|
-
**Tip:** Kits are a
|
150
|
+
|
151
|
+
**Tip:** Kits are a good way to get started. They include even more, and get you well beyond the tutorial.
|
123
152
|
|
124
153
|
#### Included Examples
|
125
154
|
|
126
|
-
- The [examples](examples) folder contains at least one example per
|
155
|
+
- The [examples](examples) folder contains at least one example per peripheral, demonstrating its interface.
|
127
156
|
- Each example should incldue a wiring diagram alongside its code (still incomplete).
|
128
|
-
|
129
|
-
#### More Examples
|
130
|
-
|
131
|
-
**Note:** This gem was renamed from `dino` to `denko`. Some of these examples use the old name.
|
132
|
-
|
133
|
-
- Try [Getting Started with Arduino and Dino](http://tutorials.jumpstartlab.com/projects/arduino/introducing_arduino.html) from [Jumpstart Lab](http://jumpstartlab.com) (_ignore old install instructions_).
|
134
|
-
- An example [rails app](https://github.com/austinbv/dino_rails_example) using Dino and Pusher.
|
135
|
-
- For a Sinatra example, look at the [site](https://github.com/austinbv/dino_cannon) used to shoot the cannon at RubyConf2012.
|
136
|
-
|
137
|
-
## Explanatory Talks
|
138
|
-
|
139
|
-
- "Arduino the Ruby Way" at RubyConf 2012
|
140
|
-
- [Video by ConFreaks](https://www.youtube.com/watch?v=oUIor6GK-qA)
|
141
|
-
- [Slides on SpeakerDeck](https://speakerdeck.com/austinbv/arduino-the-ruby-way)
|