denko 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/workflows/build_avr.yml +61 -0
- data/.github/workflows/build_esp32.yml +58 -0
- data/.github/workflows/build_esp8266.yml +57 -0
- data/.github/workflows/build_megaavr.yml +61 -0
- data/.github/workflows/build_rp2040.yml +61 -0
- data/.github/workflows/build_sam3x.yml +59 -0
- data/.github/workflows/build_samd.yml +61 -0
- data/.github/workflows/ruby.yml +47 -0
- data/.gitignore +24 -0
- data/.gitmodules +3 -0
- data/.vscode/settings.json +5 -0
- data/.vscode/tasks.json +20 -0
- data/CHANGELOG.md +466 -0
- data/DEPS_CLI.md +80 -0
- data/DEPS_IDE.md +120 -0
- data/Gemfile +4 -0
- data/HARDWARE.md +195 -0
- data/LICENSE +22 -0
- data/README.md +152 -0
- data/Rakefile +11 -0
- data/bin/denko +22 -0
- data/build +27 -0
- data/denko.gemspec +47 -0
- data/examples/advanced/rotary_encoder_mac_volume.rb +48 -0
- data/examples/advanced/ssd1306_time_temp_rh.rb +48 -0
- data/examples/analog_io/ads1118.rb +74 -0
- data/examples/analog_io/dac_loopback.rb +32 -0
- data/examples/analog_io/input.rb +52 -0
- data/examples/connection/tcp.rb +34 -0
- data/examples/digital_io/rotary_encoder.rb +26 -0
- data/examples/display/hd44780.png +0 -0
- data/examples/display/hd44780.rb +39 -0
- data/examples/display/ssd1306.rb +40 -0
- data/examples/display/ssd1306_s2_pico.rb +29 -0
- data/examples/eeprom/built_in.rb +32 -0
- data/examples/i2c/search.rb +53 -0
- data/examples/led/apa102_bounce.rb +33 -0
- data/examples/led/apa102_breathe.rb +45 -0
- data/examples/led/builtin_blink.rb +12 -0
- data/examples/led/seven_segment_char_echo.rb +15 -0
- data/examples/led/ws2812_bounce.rb +32 -0
- data/examples/led/ws2812_builtin_blink.rb +21 -0
- data/examples/motor/l298.rb +43 -0
- data/examples/motor/servo.rb +16 -0
- data/examples/motor/stepper.png +0 -0
- data/examples/motor/stepper.rb +43 -0
- data/examples/pulse_io/buzzer.rb +30 -0
- data/examples/pulse_io/ir_transmitter.rb +55 -0
- data/examples/rtc/ds3231.rb +48 -0
- data/examples/sensor/aht10.rb +15 -0
- data/examples/sensor/aht20.rb +15 -0
- data/examples/sensor/bme280.rb +75 -0
- data/examples/sensor/dht.rb +24 -0
- data/examples/sensor/ds18b20.rb +58 -0
- data/examples/sensor/htu21d.rb +54 -0
- data/examples/sensor/htu31d.rb +31 -0
- data/examples/spi/input_register.rb +50 -0
- data/examples/spi/output_register.rb +49 -0
- data/examples/spi/ssd_through_register.rb +40 -0
- data/examples/spi/two_registers.rb +46 -0
- data/examples/uart/bit_bang_read.rb +16 -0
- data/examples/uart/bit_bang_write.rb +16 -0
- data/examples/uart/board_passthrough.rb +34 -0
- data/examples/uart/hardware_loopback.rb +16 -0
- data/lib/denko/analog_io/ads1118.rb +182 -0
- data/lib/denko/analog_io/input.rb +79 -0
- data/lib/denko/analog_io/output.rb +20 -0
- data/lib/denko/analog_io/potentiometer.rb +15 -0
- data/lib/denko/analog_io/sensor.rb +6 -0
- data/lib/denko/analog_io.rb +9 -0
- data/lib/denko/behaviors/board_proxy.rb +23 -0
- data/lib/denko/behaviors/bus_controller.rb +11 -0
- data/lib/denko/behaviors/bus_controller_addressed.rb +15 -0
- data/lib/denko/behaviors/bus_peripheral.rb +21 -0
- data/lib/denko/behaviors/bus_peripheral_addressed.rb +15 -0
- data/lib/denko/behaviors/callbacks.rb +67 -0
- data/lib/denko/behaviors/component.rb +48 -0
- data/lib/denko/behaviors/input_pin.rb +24 -0
- data/lib/denko/behaviors/listener.rb +22 -0
- data/lib/denko/behaviors/multi_pin.rb +72 -0
- data/lib/denko/behaviors/output_pin.rb +13 -0
- data/lib/denko/behaviors/poller.rb +31 -0
- data/lib/denko/behaviors/reader.rb +49 -0
- data/lib/denko/behaviors/single_pin.rb +26 -0
- data/lib/denko/behaviors/state.rb +24 -0
- data/lib/denko/behaviors/subcomponents.rb +35 -0
- data/lib/denko/behaviors/threaded.rb +54 -0
- data/lib/denko/behaviors.rb +26 -0
- data/lib/denko/board/core.rb +151 -0
- data/lib/denko/board/eeprom.rb +20 -0
- data/lib/denko/board/i2c.rb +68 -0
- data/lib/denko/board/infrared.rb +18 -0
- data/lib/denko/board/led_array.rb +18 -0
- data/lib/denko/board/map.rb +46 -0
- data/lib/denko/board/message_pack.rb +7 -0
- data/lib/denko/board/one_wire.rb +34 -0
- data/lib/denko/board/pulse.rb +26 -0
- data/lib/denko/board/servo.rb +22 -0
- data/lib/denko/board/spi.rb +65 -0
- data/lib/denko/board/spi_bit_bang.rb +41 -0
- data/lib/denko/board/tone.rb +23 -0
- data/lib/denko/board/uart.rb +42 -0
- data/lib/denko/board/uart_bit_bang.rb +33 -0
- data/lib/denko/board.rb +104 -0
- data/lib/denko/connection/base.rb +75 -0
- data/lib/denko/connection/board_uart.rb +36 -0
- data/lib/denko/connection/flow_control.rb +153 -0
- data/lib/denko/connection/handshake.rb +60 -0
- data/lib/denko/connection/serial.rb +90 -0
- data/lib/denko/connection/tcp.rb +44 -0
- data/lib/denko/connection.rb +10 -0
- data/lib/denko/digital_io/button.rb +8 -0
- data/lib/denko/digital_io/input.rb +44 -0
- data/lib/denko/digital_io/output.rb +47 -0
- data/lib/denko/digital_io/relay.rb +6 -0
- data/lib/denko/digital_io/rotary_encoder.rb +107 -0
- data/lib/denko/digital_io.rb +9 -0
- data/lib/denko/display/canvas.rb +282 -0
- data/lib/denko/display/hd44780.rb +266 -0
- data/lib/denko/display/ssd1306.rb +179 -0
- data/lib/denko/display.rb +7 -0
- data/lib/denko/eeprom/built_in.rb +69 -0
- data/lib/denko/eeprom.rb +5 -0
- data/lib/denko/fonts.rb +106 -0
- data/lib/denko/i2c/bus.rb +52 -0
- data/lib/denko/i2c/peripheral.rb +38 -0
- data/lib/denko/i2c.rb +6 -0
- data/lib/denko/led/apa102.rb +87 -0
- data/lib/denko/led/base.rb +12 -0
- data/lib/denko/led/rgb.rb +38 -0
- data/lib/denko/led/seven_segment.rb +111 -0
- data/lib/denko/led/ws2812.rb +48 -0
- data/lib/denko/led.rb +13 -0
- data/lib/denko/message.rb +92 -0
- data/lib/denko/motor/l298.rb +49 -0
- data/lib/denko/motor/servo.rb +51 -0
- data/lib/denko/motor/stepper.rb +71 -0
- data/lib/denko/motor.rb +7 -0
- data/lib/denko/one_wire/bus.rb +61 -0
- data/lib/denko/one_wire/bus_enumeration.rb +88 -0
- data/lib/denko/one_wire/constants.rb +17 -0
- data/lib/denko/one_wire/helper.rb +33 -0
- data/lib/denko/one_wire/peripheral.rb +62 -0
- data/lib/denko/one_wire.rb +9 -0
- data/lib/denko/pulse_io/buzzer.rb +25 -0
- data/lib/denko/pulse_io/ir_transmitter.rb +22 -0
- data/lib/denko/pulse_io/pwm_output.rb +34 -0
- data/lib/denko/pulse_io.rb +7 -0
- data/lib/denko/rtc/ds3231.rb +48 -0
- data/lib/denko/rtc.rb +5 -0
- data/lib/denko/sensor/aht.rb +165 -0
- data/lib/denko/sensor/bme280.rb +366 -0
- data/lib/denko/sensor/dht.rb +43 -0
- data/lib/denko/sensor/ds18b20.rb +74 -0
- data/lib/denko/sensor/htu21d.rb +168 -0
- data/lib/denko/sensor/htu31d.rb +187 -0
- data/lib/denko/sensor/virtual.rb +42 -0
- data/lib/denko/sensor.rb +13 -0
- data/lib/denko/spi/base_register.rb +37 -0
- data/lib/denko/spi/bit_bang.rb +74 -0
- data/lib/denko/spi/bus.rb +44 -0
- data/lib/denko/spi/input_register.rb +130 -0
- data/lib/denko/spi/output_register.rb +67 -0
- data/lib/denko/spi/peripheral.rb +43 -0
- data/lib/denko/spi.rb +10 -0
- data/lib/denko/uart/bit_bang.rb +69 -0
- data/lib/denko/uart/hardware.rb +65 -0
- data/lib/denko/uart.rb +6 -0
- data/lib/denko/version.rb +3 -0
- data/lib/denko.rb +39 -0
- data/lib/denko_cli/generator.rb +171 -0
- data/lib/denko_cli/helper.rb +29 -0
- data/lib/denko_cli/missing_files.txt +20 -0
- data/lib/denko_cli/packages.rb +101 -0
- data/lib/denko_cli/parser.rb +73 -0
- data/lib/denko_cli/targets.rb +30 -0
- data/lib/denko_cli/targets.txt +113 -0
- data/lib/denko_cli/usage.txt +34 -0
- data/lib/denko_cli.rb +18 -0
- data/src/denko_ethernet.ino +78 -0
- data/src/denko_serial.ino +41 -0
- data/src/denko_wifi.ino +157 -0
- data/src/lib/Denko.cpp +330 -0
- data/src/lib/Denko.h +259 -0
- data/src/lib/DenkoCoreIO.cpp +322 -0
- data/src/lib/DenkoDefines.h +116 -0
- data/src/lib/DenkoEEPROM.cpp +64 -0
- data/src/lib/DenkoI2C.cpp +155 -0
- data/src/lib/DenkoIROut.cpp +33 -0
- data/src/lib/DenkoIROutESP.cpp +26 -0
- data/src/lib/DenkoLEDArray.cpp +49 -0
- data/src/lib/DenkoOneWire.cpp +156 -0
- data/src/lib/DenkoPulseInput.cpp +57 -0
- data/src/lib/DenkoSPI.cpp +165 -0
- data/src/lib/DenkoSPIBB.cpp +156 -0
- data/src/lib/DenkoServo.cpp +83 -0
- data/src/lib/DenkoTone.cpp +25 -0
- data/src/lib/DenkoUART.cpp +118 -0
- data/src/lib/DenkoUARTBB.cpp +62 -0
- data/target.yml +3 -0
- data/test/analog_io/input_test.rb +38 -0
- data/test/analog_io/output_test.rb +26 -0
- data/test/analog_io/potentiometer_test.rb +62 -0
- data/test/behaviors/board_proxy_test.rb +24 -0
- data/test/behaviors/bus_controller_addressed_test.rb +40 -0
- data/test/behaviors/bus_controller_test.rb +28 -0
- data/test/behaviors/bus_peripheral_addressed.rb +44 -0
- data/test/behaviors/bus_peripheral_test.rb +39 -0
- data/test/behaviors/callbacks_test.rb +118 -0
- data/test/behaviors/component_test.rb +56 -0
- data/test/behaviors/input_pin_test.rb +42 -0
- data/test/behaviors/listener_test.rb +60 -0
- data/test/behaviors/multi_pin_test.rb +70 -0
- data/test/behaviors/output_pin_test.rb +27 -0
- data/test/behaviors/poller_test.rb +64 -0
- data/test/behaviors/reader_test.rb +68 -0
- data/test/behaviors/single_pin_test.rb +41 -0
- data/test/behaviors/subcomponents_test.rb +75 -0
- data/test/behaviors/threaded_test.rb +98 -0
- data/test/board/board_test.rb +130 -0
- data/test/board/core_test.rb +182 -0
- data/test/board/eeprom_test.rb +34 -0
- data/test/board/helper_test.rb +38 -0
- data/test/board/i2c_test.rb +114 -0
- data/test/board/infrared_test.rb +37 -0
- data/test/board/message_test.rb +54 -0
- data/test/board/one_wire_test.rb +69 -0
- data/test/board/pulse_test.rb +51 -0
- data/test/board/servo_test.rb +47 -0
- data/test/board/spi_test.rb +97 -0
- data/test/board/tone_test.rb +42 -0
- data/test/connection/serial_test.rb +172 -0
- data/test/connection/tcp_test.rb +37 -0
- data/test/digital_io/input_test.rb +65 -0
- data/test/digital_io/output_test.rb +64 -0
- data/test/digital_io/rotary_encoder_test.rb +99 -0
- data/test/display/hd44780_test.rb +23 -0
- data/test/eeprom/built_in_test.rb +61 -0
- data/test/i2c/bus_test.rb +66 -0
- data/test/i2c/peripheral_test.rb +50 -0
- data/test/led/base_test.rb +24 -0
- data/test/led/rgb_test.rb +64 -0
- data/test/led/seven_segment_test.rb +86 -0
- data/test/motor/servo_test.rb +62 -0
- data/test/motor/stepper_test.rb +51 -0
- data/test/one_wire/bus_enumerator_test.rb +134 -0
- data/test/one_wire/bus_test.rb +142 -0
- data/test/one_wire/helper_test.rb +18 -0
- data/test/one_wire/peripheral_test.rb +158 -0
- data/test/pulse_io/buzzer_test.rb +48 -0
- data/test/pulse_io/ir_transmitter_test.rb +38 -0
- data/test/pulse_io/pwm_output_test.rb +72 -0
- data/test/rtc/ds3231_test.rb +55 -0
- data/test/sensor/dht_test.rb +64 -0
- data/test/sensor/ds18b20_test.rb +107 -0
- data/test/spi/base_register_test.rb +34 -0
- data/test/spi/bus_test.rb +76 -0
- data/test/spi/input_register_test.rb +140 -0
- data/test/spi/output_register_test.rb +93 -0
- data/test/test_helper.rb +223 -0
- data/test/uart/bitbang_test.rb +37 -0
- data/tutorial/01-led/led.fzz +0 -0
- data/tutorial/01-led/led.pdf +0 -0
- data/tutorial/01-led/led.rb +73 -0
- data/tutorial/02-button/button.fzz +0 -0
- data/tutorial/02-button/button.pdf +0 -0
- data/tutorial/02-button/button.rb +64 -0
- data/tutorial/03-potentiometer/potentiometer.fzz +0 -0
- data/tutorial/03-potentiometer/potentiometer.pdf +0 -0
- data/tutorial/03-potentiometer/potentiometer.rb +62 -0
- 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 +66 -0
- 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 +58 -0
- data/tutorial/05-rgb_led/rgb_mapping.rb +76 -0
- data/vendor/board-maps/.gitignore +56 -0
- data/vendor/board-maps/.gitmodules +21 -0
- data/vendor/board-maps/BoardMap.h +1364 -0
- data/vendor/board-maps/README.md +51 -0
- data/vendor/board-maps/lib/boards_parser.rb +66 -0
- data/vendor/board-maps/lib/header_parser.rb +164 -0
- data/vendor/board-maps/run.rb +47 -0
- data/vendor/board-maps/yaml/0XCB_HELIOS.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2.yml +25 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_REVTFT.yml +25 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S2_TFT.yml +27 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3.yml +29 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_NOPSRAM.yml +29 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_REVTFT.yml +25 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32S3_TFT.yml +27 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_ESP32_V2.yml +30 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_CAN.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_DVI.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_PROP_MAKER.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_RFM.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_SCORPIO.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_THINKINK.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_FEATHER_RP2040_USB_HOST.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_ESP32.yml +24 -0
- data/vendor/board-maps/yaml/ADAFRUIT_ITSYBITSY_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_KB2040_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_MACROPAD_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_MATRIXPORTAL_ESP32S3.yml +16 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32C3.yml +12 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S2.yml +22 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32S3_NOPSRAM.yml +20 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_ESP32_PICO.yml +27 -0
- data/vendor/board-maps/yaml/ADAFRUIT_QTPY_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_STEMMAFRIEND_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ADAFRUIT_TRINKEYQT_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/ALKS.yml +34 -0
- data/vendor/board-maps/yaml/AMPERKA_WIFI_SLOT.yml +16 -0
- data/vendor/board-maps/yaml/AVR_ADK.yml +24 -0
- data/vendor/board-maps/yaml/AVR_BT.yml +16 -0
- data/vendor/board-maps/yaml/AVR_CIRCUITPLAY.yml +14 -0
- data/vendor/board-maps/yaml/AVR_DUEMILANOVE.yml +16 -0
- data/vendor/board-maps/yaml/AVR_ESPLORA.yml +20 -0
- data/vendor/board-maps/yaml/AVR_ETHERNET.yml +16 -0
- data/vendor/board-maps/yaml/AVR_FIO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_GEMMA.yml +6 -0
- data/vendor/board-maps/yaml/AVR_INDUSTRIAL101.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LEONARDO.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LEONARDO_ETH.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LILYPAD.yml +16 -0
- data/vendor/board-maps/yaml/AVR_LILYPAD_USB.yml +20 -0
- data/vendor/board-maps/yaml/AVR_LININO_ONE.yml +20 -0
- data/vendor/board-maps/yaml/AVR_MEGA.yml +24 -0
- data/vendor/board-maps/yaml/AVR_MEGA2560.yml +24 -0
- data/vendor/board-maps/yaml/AVR_MICRO.yml +20 -0
- data/vendor/board-maps/yaml/AVR_MINI.yml +16 -0
- data/vendor/board-maps/yaml/AVR_NANO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_NANO_EVERY.yml +22 -0
- data/vendor/board-maps/yaml/AVR_NG.yml +16 -0
- data/vendor/board-maps/yaml/AVR_PRO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_ROBOT_CONTROL.yml +22 -0
- data/vendor/board-maps/yaml/AVR_ROBOT_MOTOR.yml +19 -0
- data/vendor/board-maps/yaml/AVR_UNO.yml +16 -0
- data/vendor/board-maps/yaml/AVR_UNO_WIFI_DEV_ED.yml +16 -0
- data/vendor/board-maps/yaml/AVR_UNO_WIFI_REV2.yml +22 -0
- data/vendor/board-maps/yaml/AVR_YUN.yml +20 -0
- data/vendor/board-maps/yaml/AVR_YUNMINI.yml +20 -0
- data/vendor/board-maps/yaml/AirM2M_CORE_ESP32C3.yml +14 -0
- data/vendor/board-maps/yaml/BEE_DATA_LOGGER.yml +39 -0
- data/vendor/board-maps/yaml/BPI_BIT.yml +9 -0
- data/vendor/board-maps/yaml/BPI_LEAF_S3.yml +31 -0
- data/vendor/board-maps/yaml/BRIDGETEK_IDM2040-7A.yml +48 -0
- data/vendor/board-maps/yaml/BeeMotionS3.yml +40 -0
- data/vendor/board-maps/yaml/Bee_Motion.yml +27 -0
- data/vendor/board-maps/yaml/Bee_Motion_Mini.yml +1 -0
- data/vendor/board-maps/yaml/Bee_S3.yml +38 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_LORA_RP2040.yml +39 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_LTE_RP2040.yml +38 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_NFC_RP2040.yml +32 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_SDRTC_RP2040.yml +36 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_SUBGHZ_RP2040.yml +39 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_UWB_RP2040.yml +39 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_BLE_RP2040.yml +42 -0
- data/vendor/board-maps/yaml/CHALLENGER_2040_WIFI_RP2040.yml +38 -0
- data/vendor/board-maps/yaml/CHALLENGER_NB_2040_WIFI_RP2040.yml +38 -0
- data/vendor/board-maps/yaml/CRABIK_SLOT_ESP32_S3.yml +19 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_FEATHER_AIOT_S3.yml +26 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_NANO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CYTRON_MAKER_PI_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/CoreESP32.yml +49 -0
- data/vendor/board-maps/yaml/D1_MINI32.yml +36 -0
- data/vendor/board-maps/yaml/D1_UNO32.yml +28 -0
- data/vendor/board-maps/yaml/DATANOISETV_PICOADK.yml +48 -0
- data/vendor/board-maps/yaml/DENKY.yml +26 -0
- data/vendor/board-maps/yaml/DENKY_PICOV3.yml +26 -0
- data/vendor/board-maps/yaml/DENKY_WROOM32.yml +26 -0
- data/vendor/board-maps/yaml/DEPARTMENT_OF_ALCHEMY_MINIMAIN_ESP32S2.yml +26 -0
- data/vendor/board-maps/yaml/DFROBOT_BEETLE_ESP32_C3.yml +14 -0
- data/vendor/board-maps/yaml/DFROBOT_BEETLE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32E.yml +44 -0
- data/vendor/board-maps/yaml/DFROBOT_FIREBEETLE_2_ESP32S3.yml +38 -0
- data/vendor/board-maps/yaml/DFROBOT_ROMEO_ESP32S3.yml +7 -0
- data/vendor/board-maps/yaml/DPU_ESP32.yml +26 -0
- data/vendor/board-maps/yaml/DYDK.yml +38 -0
- data/vendor/board-maps/yaml/DYDK1A.yml +37 -0
- data/vendor/board-maps/yaml/DYDK1Av2.yml +45 -0
- data/vendor/board-maps/yaml/DYG.yml +20 -0
- data/vendor/board-maps/yaml/DYM.yml +40 -0
- data/vendor/board-maps/yaml/DYMv2.yml +39 -0
- data/vendor/board-maps/yaml/D_Duino_32.yml +29 -0
- data/vendor/board-maps/yaml/ELECTRONICCATS_HUNTERCAT_NFC.yml +44 -0
- data/vendor/board-maps/yaml/ESP320.yml +8 -0
- data/vendor/board-maps/yaml/ESP32C3_DEV.yml +14 -0
- data/vendor/board-maps/yaml/ESP32C3_M1_I_KIT.yml +13 -0
- data/vendor/board-maps/yaml/ESP32S2_DEV.yml +33 -0
- data/vendor/board-maps/yaml/ESP32S2_THING_PLUS.yml +34 -0
- data/vendor/board-maps/yaml/ESP32S2_USB.yml +33 -0
- data/vendor/board-maps/yaml/ESP32S3_CAM_LCD.yml +7 -0
- data/vendor/board-maps/yaml/ESP32S3_DEV.yml +38 -0
- data/vendor/board-maps/yaml/ESP32_DEV.yml +26 -0
- data/vendor/board-maps/yaml/ESP32_DEVKIT_LIPO.yml +26 -0
- data/vendor/board-maps/yaml/ESP32_EVB.yml +7 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY_C.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY_E.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_GATEWAY_F.yml +13 -0
- data/vendor/board-maps/yaml/ESP32_IOT_REDBOARD.yml +27 -0
- data/vendor/board-maps/yaml/ESP32_MICROMOD.yml +24 -0
- data/vendor/board-maps/yaml/ESP32_PICO.yml +26 -0
- data/vendor/board-maps/yaml/ESP32_POE.yml +7 -0
- data/vendor/board-maps/yaml/ESP32_POE_ISO.yml +7 -0
- data/vendor/board-maps/yaml/ESP32_S3_BOX.yml +16 -0
- data/vendor/board-maps/yaml/ESP32_S3_USB_OTG.yml +11 -0
- data/vendor/board-maps/yaml/ESP32_THING.yml +27 -0
- data/vendor/board-maps/yaml/ESP32_THING_PLUS.yml +30 -0
- data/vendor/board-maps/yaml/ESP32_THING_PLUS_C.yml +30 -0
- data/vendor/board-maps/yaml/ESP32_WROOM_DA.yml +26 -0
- data/vendor/board-maps/yaml/ESP32_WROVER_KIT.yml +26 -0
- data/vendor/board-maps/yaml/ESP8266_ADAFRUIT_HUZZAH.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_AGRUMINO_LEMON_V4.yml +8 -0
- data/vendor/board-maps/yaml/ESP8266_ARDUINO_PRIMO.yml +7 -0
- data/vendor/board-maps/yaml/ESP8266_ARDUINO_STAR_OTTO.yml +7 -0
- data/vendor/board-maps/yaml/ESP8266_ARDUINO_UNOWIFI.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESP01.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESP07.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_ESP12.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_ESP13.yml +17 -0
- data/vendor/board-maps/yaml/ESP8266_ESP210.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPECTRO_CORE.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP12.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPINO_ESP13.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V1.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_ESPRESSO_LITE_V2.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_GENERIC.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_INVENT_ONE.yml +22 -0
- data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_NODEMCU_ESP12E.yml +20 -0
- data/vendor/board-maps/yaml/ESP8266_OAK.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_PHOENIX_V1.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_PHOENIX_V2.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SCHIRMILABS_EDUINO_WIFI.yml +25 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_BASIC.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_S20.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_SV.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_SONOFF_TH.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_THING.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_THING_DEV.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINI.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINILITE.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1MINIPRO.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1R1.yml +25 -0
- data/vendor/board-maps/yaml/ESP8266_WEMOS_D1WROOM02.yml +18 -0
- data/vendor/board-maps/yaml/ESP8266_WIO_LINK.yml +9 -0
- data/vendor/board-maps/yaml/ESP8266_XINABOX_CW01.yml +9 -0
- data/vendor/board-maps/yaml/ESPECTRO32.yml +27 -0
- data/vendor/board-maps/yaml/ESPea32.yml +27 -0
- data/vendor/board-maps/yaml/ESPino32.yml +27 -0
- data/vendor/board-maps/yaml/ET-Board.yml +26 -0
- data/vendor/board-maps/yaml/EXTREMEELEXTRONICS_RC2040.yml +46 -0
- data/vendor/board-maps/yaml/Edgebox-ESP-100.yml +7 -0
- data/vendor/board-maps/yaml/FEATHERS2.yml +33 -0
- data/vendor/board-maps/yaml/FEATHERS2NEO.yml +30 -0
- data/vendor/board-maps/yaml/FEATHERS3.yml +29 -0
- data/vendor/board-maps/yaml/FEATHER_ESP32.yml +28 -0
- data/vendor/board-maps/yaml/FLYBOARD2040_CORE.yml +48 -0
- data/vendor/board-maps/yaml/FRANZININHO_WIFI.yml +33 -0
- data/vendor/board-maps/yaml/FRANZININHO_WIFI_MSC.yml +33 -0
- data/vendor/board-maps/yaml/FROG_ESP32.yml +26 -0
- data/vendor/board-maps/yaml/FUNHOUSE_ESP32S2.yml +22 -0
- data/vendor/board-maps/yaml/GEN4_IOD.yml +9 -0
- data/vendor/board-maps/yaml/GENERIC_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/HEALTHYPI_4.yml +27 -0
- data/vendor/board-maps/yaml/HONEYLEMON.yml +27 -0
- data/vendor/board-maps/yaml/HORNBILL_ESP32_DEV.yml +27 -0
- data/vendor/board-maps/yaml/HORNBILL_ESP32_MINIMA.yml +16 -0
- data/vendor/board-maps/yaml/ILABS_2040_RPICO32_RP2040.yml +47 -0
- data/vendor/board-maps/yaml/IMBRIOS_LOGSENS_V1P1.yml +19 -0
- data/vendor/board-maps/yaml/INTOROBOT_ESP32_DEV.yml +34 -0
- data/vendor/board-maps/yaml/LILYGO_T_DISPLAY_S3.yml +26 -0
- data/vendor/board-maps/yaml/LOLIN32.yml +27 -0
- data/vendor/board-maps/yaml/LOLIN32_LITE.yml +27 -0
- data/vendor/board-maps/yaml/LOLIN_C3_MINI.yml +14 -0
- data/vendor/board-maps/yaml/LOLIN_D32.yml +27 -0
- data/vendor/board-maps/yaml/LOLIN_D32_PRO.yml +27 -0
- data/vendor/board-maps/yaml/LOLIN_S2_MINI.yml +34 -0
- data/vendor/board-maps/yaml/LOLIN_S2_PICO.yml +34 -0
- data/vendor/board-maps/yaml/LOLIN_S3.yml +32 -0
- data/vendor/board-maps/yaml/LOLIN_S3_MINI.yml +32 -0
- data/vendor/board-maps/yaml/LOLIN_S3_PRO.yml +32 -0
- data/vendor/board-maps/yaml/Lion_Bit_Dev_Board.yml +18 -0
- data/vendor/board-maps/yaml/LoPy.yml +27 -0
- data/vendor/board-maps/yaml/LoPy4.yml +27 -0
- data/vendor/board-maps/yaml/M5STACK_CORES3.yml +8 -0
- data/vendor/board-maps/yaml/M5STACK_Core2.yml +9 -0
- data/vendor/board-maps/yaml/M5STACK_FIRE.yml +10 -0
- data/vendor/board-maps/yaml/M5Stack-Timer-CAM.yml +10 -0
- data/vendor/board-maps/yaml/M5Stack_ATOM.yml +10 -0
- data/vendor/board-maps/yaml/M5Stack_ATOMS3.yml +7 -0
- data/vendor/board-maps/yaml/M5Stack_CoreInk.yml +9 -0
- data/vendor/board-maps/yaml/M5Stack_Core_ESP32.yml +10 -0
- data/vendor/board-maps/yaml/M5Stack_Station.yml +10 -0
- data/vendor/board-maps/yaml/M5Stick_C.yml +10 -0
- data/vendor/board-maps/yaml/MAGTAG29_ESP32S2.yml +21 -0
- data/vendor/board-maps/yaml/MELOPERO_COOKIE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/MELOPERO_SHAKE_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/METRO_ESP32S2.yml +34 -0
- data/vendor/board-maps/yaml/MGBOT_IOTIK32A.yml +27 -0
- data/vendor/board-maps/yaml/MGBOT_IOTIK32B.yml +27 -0
- data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32DEVKIT.yml +27 -0
- data/vendor/board-maps/yaml/MH_ET_LIVE_ESP32MINIKIT.yml +27 -0
- data/vendor/board-maps/yaml/MICROS2.yml +34 -0
- data/vendor/board-maps/yaml/MOD_WIFI_ESP8266.yml +9 -0
- data/vendor/board-maps/yaml/Metro.yml +8 -0
- data/vendor/board-maps/yaml/NANO32.yml +27 -0
- data/vendor/board-maps/yaml/NANO_RP2040_CONNECT.yml +35 -0
- data/vendor/board-maps/yaml/NEBULAS3.yml +33 -0
- data/vendor/board-maps/yaml/NEKOSYSTEMS_BL2040_MINI.yml +48 -0
- data/vendor/board-maps/yaml/NULLBITS_BIT_C_PRO.yml +48 -0
- data/vendor/board-maps/yaml/Node32s.yml +27 -0
- data/vendor/board-maps/yaml/NodeMCU_32S.yml +27 -0
- data/vendor/board-maps/yaml/ODROID_ESP32.yml +10 -0
- data/vendor/board-maps/yaml/ONEHORSE_ESP32_DEV.yml +24 -0
- data/vendor/board-maps/yaml/OROCA_EDUBOT.yml +33 -0
- data/vendor/board-maps/yaml/PIMORONI_PGA2040.yml +48 -0
- data/vendor/board-maps/yaml/PROS3.yml +28 -0
- data/vendor/board-maps/yaml/PYCOM_GPY.yml +27 -0
- data/vendor/board-maps/yaml/Piranha.yml +16 -0
- data/vendor/board-maps/yaml/Pocket32.yml +27 -0
- data/vendor/board-maps/yaml/QUANTUM.yml +26 -0
- data/vendor/board-maps/yaml/RASPBERRY_PI_PICO.yml +48 -0
- data/vendor/board-maps/yaml/RASPBERRY_PI_PICO_W.yml +48 -0
- data/vendor/board-maps/yaml/REDPILL_ESP32S3.yml +32 -0
- data/vendor/board-maps/yaml/RMP.yml +33 -0
- data/vendor/board-maps/yaml/SAMD_CIRCUITPLAYGROUND_EXPRESS.yml +12 -0
- data/vendor/board-maps/yaml/SAMD_MKR1000.yml +20 -0
- data/vendor/board-maps/yaml/SAMD_MKRFox1200.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_MKRGSM1400.yml +15 -0
- data/vendor/board-maps/yaml/SAMD_MKRNB1500.yml +15 -0
- data/vendor/board-maps/yaml/SAMD_MKRVIDOR4000.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_MKRWAN1300.yml +18 -0
- data/vendor/board-maps/yaml/SAMD_MKRWAN1310.yml +18 -0
- data/vendor/board-maps/yaml/SAMD_MKRWIFI1010.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_MKRZERO.yml +19 -0
- data/vendor/board-maps/yaml/SAMD_NANO_33_IOT.yml +13 -0
- data/vendor/board-maps/yaml/SAMD_TIAN.yml +15 -0
- data/vendor/board-maps/yaml/SAMD_ZERO.yml +14 -0
- data/vendor/board-maps/yaml/SAM_DUE.yml +26 -0
- data/vendor/board-maps/yaml/SAM_ZERO.yml +15 -0
- data/vendor/board-maps/yaml/SEEED_INDICATOR_RP2040.yml +47 -0
- data/vendor/board-maps/yaml/SEEED_XIAO_RP2040.yml +29 -0
- data/vendor/board-maps/yaml/SOLDERPARTY_RP2040_STAMP.yml +48 -0
- data/vendor/board-maps/yaml/SONOFF_DUALR3.yml +26 -0
- data/vendor/board-maps/yaml/SPARKFUN_PROMICRO_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/SPARKFUN_THINGPLUS_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/STAMP_S3.yml +4 -0
- data/vendor/board-maps/yaml/TAMC_TERMOD_S3.yml +31 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1262.yml +23 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1268.yml +23 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1276.yml +23 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1278.yml +23 -0
- data/vendor/board-maps/yaml/TBEAM_USE_RADIO_SX1280.yml +23 -0
- data/vendor/board-maps/yaml/TBeam.yml +23 -0
- data/vendor/board-maps/yaml/TINYPICO.yml +26 -0
- data/vendor/board-maps/yaml/TINYS2.yml +33 -0
- data/vendor/board-maps/yaml/TINYS3.yml +25 -0
- data/vendor/board-maps/yaml/TTGO-T-OI-PLUS_DEV.yml +11 -0
- data/vendor/board-maps/yaml/TTGO_LoRa32_V1.yml +28 -0
- data/vendor/board-maps/yaml/TTGO_LoRa32_V2.yml +28 -0
- data/vendor/board-maps/yaml/TTGO_LoRa32_v21new.yml +28 -0
- data/vendor/board-maps/yaml/TTGO_T1.yml +27 -0
- data/vendor/board-maps/yaml/TTGO_T7_V13_Mini32.yml +27 -0
- data/vendor/board-maps/yaml/TTGO_T7_V14_Mini32.yml +27 -0
- data/vendor/board-maps/yaml/TWATCH_2020_V1.yml +10 -0
- data/vendor/board-maps/yaml/TWATCH_2020_V2.yml +10 -0
- data/vendor/board-maps/yaml/TWATCH_2020_V3.yml +10 -0
- data/vendor/board-maps/yaml/TWATCH_BASE.yml +10 -0
- data/vendor/board-maps/yaml/TWatch.yml +10 -0
- data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver.yml +18 -0
- data/vendor/board-maps/yaml/Trueverit_ESP32_Universal_IoT_Driver_MK_II.yml +18 -0
- data/vendor/board-maps/yaml/UBLOX_NINA_W10.yml +48 -0
- data/vendor/board-maps/yaml/UBLOX_NORA_W10.yml +43 -0
- data/vendor/board-maps/yaml/UPESY_RP2040_DEVKIT.yml +48 -0
- data/vendor/board-maps/yaml/VALTRACK_V4_MFW_ESP32_C3.yml +23 -0
- data/vendor/board-maps/yaml/VALTRACK_V4_VTS_ESP32_C3.yml +23 -0
- data/vendor/board-maps/yaml/VIYALAB_MIZU_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/WATCHY.yml +7 -0
- data/vendor/board-maps/yaml/WATCHY_V10.yml +7 -0
- data/vendor/board-maps/yaml/WATCHY_V15.yml +7 -0
- data/vendor/board-maps/yaml/WATCHY_V20.yml +7 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_0_96.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_LCD_1_28.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_ONE.yml +47 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_PLUS.yml +48 -0
- data/vendor/board-maps/yaml/WAVESHARE_RP2040_ZERO.yml +47 -0
- data/vendor/board-maps/yaml/WESP32.yml +17 -0
- data/vendor/board-maps/yaml/WIDORA_AIR.yml +34 -0
- data/vendor/board-maps/yaml/WIFIDUINO_ESP8266.yml +23 -0
- data/vendor/board-maps/yaml/WIFINFO.yml +20 -0
- data/vendor/board-maps/yaml/WIPY3.yml +27 -0
- data/vendor/board-maps/yaml/WIZNET_5100S_EVB_PICO.yml +48 -0
- data/vendor/board-maps/yaml/WIZNET_5500_EVB_PICO.yml +48 -0
- data/vendor/board-maps/yaml/WIZNET_WIZFI360_EVB_PICO.yml +48 -0
- data/vendor/board-maps/yaml/WT32_ETH01.yml +8 -0
- data/vendor/board-maps/yaml/WiFiduino32S3.yml +27 -0
- data/vendor/board-maps/yaml/WiFiduinoV2.yml +27 -0
- data/vendor/board-maps/yaml/Wifiduino32.yml +40 -0
- data/vendor/board-maps/yaml/XIAO_ESP32C3.yml +22 -0
- data/vendor/board-maps/yaml/XIAO_ESP32S3.yml +36 -0
- data/vendor/board-maps/yaml/YD_RP2040.yml +48 -0
- data/vendor/board-maps/yaml/atmegazero_esp32s2.yml +30 -0
- data/vendor/board-maps/yaml/connaxio_espoir.yml +18 -0
- data/vendor/board-maps/yaml/esp32vn_iot_uno.yml +22 -0
- data/vendor/board-maps/yaml/fm_devkit.yml +15 -0
- data/vendor/board-maps/yaml/heltec_wifi_32_lora_V3.yml +31 -0
- data/vendor/board-maps/yaml/heltec_wifi_kit_32.yml +28 -0
- data/vendor/board-maps/yaml/heltec_wifi_kit_32_V3.yml +32 -0
- data/vendor/board-maps/yaml/heltec_wifi_lora_32.yml +27 -0
- data/vendor/board-maps/yaml/heltec_wifi_lora_32_V2.yml +27 -0
- data/vendor/board-maps/yaml/heltec_wireless_stick.yml +27 -0
- data/vendor/board-maps/yaml/heltec_wireless_stick_LITE.yml +27 -0
- data/vendor/board-maps/yaml/openkb.yml +27 -0
- data/vendor/board-maps/yaml/roboheart_hercules.yml +17 -0
- data/vendor/board-maps/yaml/sensesiot_weizen.yml +26 -0
- data/vendor/board-maps/yaml/uPesy_WROOM.yml +27 -0
- data/vendor/board-maps/yaml/uPesy_WROVER.yml +27 -0
- data/vendor/board-maps/yaml/unphone8.yml +32 -0
- data/vendor/board-maps/yaml/unphone9.yml +32 -0
- data/vendor/board-maps/yaml/wifi_kit_8.yml +15 -0
- metadata +800 -0
data/DEPS_IDE.md
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
### Install Arduino Dependencies for Denko (IDE)
|
2
|
+
|
3
|
+
### Installing Cores
|
4
|
+
|
5
|
+
Some microcontroller platforms require board manager cores that do not come with the IDE. To install a core:
|
6
|
+
* Open the Preferences window of the IDE, and find "Additional boards manager URLS:". Click the button next to it.
|
7
|
+
* In the editor that opens, paste the given URL on a new line at the end (if it doesn't already exist).
|
8
|
+
* Confirm and exit Preferences. Wait for the IDE to finish downloading indexes from the new URL.
|
9
|
+
* Click on Tools > Board > Board Manager.
|
10
|
+
* Search for the platform you are installing by name, and click Install, optionally selecting a version.
|
11
|
+
|
12
|
+
### Installing Libraries
|
13
|
+
|
14
|
+
All platforms will require libraries to be installed. To install a library do the following:
|
15
|
+
* Click on Tools > Manage Libraries.
|
16
|
+
* Search for the library you are installing by name, and click Install, optionally selecting a version.
|
17
|
+
|
18
|
+
### Platforms:
|
19
|
+
|
20
|
+
**Note:** Always install the latest version of a package unless its version number is specified
|
21
|
+
|
22
|
+
**Install Everything:**
|
23
|
+
* Board Manager URLs:
|
24
|
+
````
|
25
|
+
https://arduino.esp8266.com/stable/package_esp8266com_index.json
|
26
|
+
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
27
|
+
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
|
28
|
+
````
|
29
|
+
* Boards:
|
30
|
+
````
|
31
|
+
Arduino megaAVR Boards
|
32
|
+
Arduino SAM Boards (32-bits ARM Cortex-M3)
|
33
|
+
Arduino SAMD Boards (32-bits ARM Cortex-M0+)
|
34
|
+
ESP8266 Boards
|
35
|
+
ESP32 Boards
|
36
|
+
````
|
37
|
+
* Libraries:
|
38
|
+
````
|
39
|
+
Servo by Michael Margolis, Arduino
|
40
|
+
Ethernet by Various
|
41
|
+
WiFi by Arduino
|
42
|
+
IRremote @ v4.0.0 by shirriff, z3to, ArminJo
|
43
|
+
IRremoteESP82666 @ v2.8.4 by David Conran, Sebastien Warin
|
44
|
+
ESP32Servo by Kevin Harrington, John K. Bennett
|
45
|
+
Adafruit NeoPixel by Adafruit
|
46
|
+
````
|
47
|
+
|
48
|
+
**AVR-based Arduinos & Clones Only:**
|
49
|
+
* Boards:
|
50
|
+
````
|
51
|
+
Arduino megaAVR Boards (only for Atmega4809 / Nano Every)
|
52
|
+
````
|
53
|
+
* Libraries:
|
54
|
+
````
|
55
|
+
Servo by Michael Margolis, Arduino
|
56
|
+
Ethernet by Various
|
57
|
+
WiFi by Arduino
|
58
|
+
IRremote @ v4.0.0 by shirriff, z3to, ArminJo
|
59
|
+
Adafruit NeoPixel by Adafruit
|
60
|
+
````
|
61
|
+
|
62
|
+
**ARM-based Arduinos & Clones Only:**
|
63
|
+
* Boards:
|
64
|
+
````
|
65
|
+
Arduino SAM Boards (32-bits ARM Cortex-M3)
|
66
|
+
Arduino SAMD Boards (32-bits ARM Cortex-M0+)
|
67
|
+
````
|
68
|
+
* Libraries:
|
69
|
+
````
|
70
|
+
Servo by Michael Margolis, Arduino
|
71
|
+
Ethernet by Various
|
72
|
+
WiFi by Arduino
|
73
|
+
IRremote @ v4.0.0 by shirriff, z3to, ArminJo
|
74
|
+
Adafruit NeoPixel by Adafruit
|
75
|
+
````
|
76
|
+
|
77
|
+
**ESP8266 Only:**
|
78
|
+
* Board Manager URLs:
|
79
|
+
````
|
80
|
+
https://arduino.esp8266.com/stable/package_esp8266com_index.json
|
81
|
+
````
|
82
|
+
* Boards:
|
83
|
+
````
|
84
|
+
ESP8266 Boards
|
85
|
+
````
|
86
|
+
* Libraries:
|
87
|
+
````
|
88
|
+
IRremoteESP82666 @ v2.8.4 by David Conran, Sebastien Warin
|
89
|
+
Adafruit NeoPixel by Adafruit
|
90
|
+
````
|
91
|
+
|
92
|
+
**ESP32 Only:**
|
93
|
+
* Board Manager URLs:
|
94
|
+
````
|
95
|
+
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
96
|
+
````
|
97
|
+
* Boards (latest version unless specified):
|
98
|
+
````
|
99
|
+
ESP32 Boards
|
100
|
+
````
|
101
|
+
* Libraries (latest version unless specified):
|
102
|
+
````
|
103
|
+
IRremoteESP82666 @ v2.8.4 by David Conran, Sebastien Warin
|
104
|
+
ESP32Servo by Kevin Harrington, John K. Bennett
|
105
|
+
Adafruit NeoPixel by Adafruit
|
106
|
+
````
|
107
|
+
|
108
|
+
**RP2040 Only:**
|
109
|
+
* Board Manager URLs:
|
110
|
+
````
|
111
|
+
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
|
112
|
+
````
|
113
|
+
* Boards:
|
114
|
+
````
|
115
|
+
Raspberry Pi Pico/RP2040
|
116
|
+
````
|
117
|
+
* Libraries:
|
118
|
+
````
|
119
|
+
IRremote @ v4.0.0 by shirriff, z3to, ArminJo
|
120
|
+
````
|
data/Gemfile
ADDED
data/HARDWARE.md
ADDED
@@ -0,0 +1,195 @@
|
|
1
|
+
# 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
|
+
### Microchip/Atmel Chips in Arduino Products (and Compatibles)
|
6
|
+
[![AVR Build Status](https://github.com/denko-rb/denko/actions/workflows/build_avr.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_avr.yml) [![MegaAVR Build Status](https://github.com/denko-rb/denko/actions/workflows/build_megaavr.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_megaavr.yml) [![SAM3X Build Satus](https://github.com/denko-rb/denko/actions/workflows/build_sam3x.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_sam3x.yml) [![SAMD Build Satus](https://github.com/denko-rb/denko/actions/workflows/build_samd.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_samd.yml)
|
7
|
+
|
8
|
+
| Chip | Status | Products | Notes |
|
9
|
+
| :-------- | :------: | :--------------- |------ |
|
10
|
+
| ATmega168 | :green_heart: | Duemilanove, Diecimila, Pro | Features omitted to save memory. `denko targets` for more info.
|
11
|
+
| ATmega328 | :green_heart: | Uno, Nano, Fio, Pro |
|
12
|
+
| ATmega32u4 | :green_heart: | Leonardo, Micro, Leonardo ETH, Esplora, LilyPad USB |
|
13
|
+
| ATmega1280 | :green_heart: | Mega |
|
14
|
+
| ATmega2560 | :green_heart: | Mega2560, Arduino Mega ADK |
|
15
|
+
| ATmega4809 | :question: | Nano Every, Uno WiFi Rev2 | No hardware to test, but should work
|
16
|
+
| ATSAM3X8E | :yellow_heart: | Due | Native USB port. Tone, and IR Out don't work.
|
17
|
+
| ATSAMD21 | :green_heart: | Zero, M0, M0 Pro | Native USB port. I2C seems stuck on 100 kHz.
|
18
|
+
|
19
|
+
**Note:** Only USB boards listed. Any board with a supported chip should work, once you can flash it and connect to serial.
|
20
|
+
|
21
|
+
### Arduino Accessories
|
22
|
+
|
23
|
+
| Chip | Status | Product | Notes |
|
24
|
+
| :-------- | :------: | :--------------- |------ |
|
25
|
+
| Wiznet W5100/5500 | :green_heart: | Ethernet Shield | Wired Ethernet for Uno/Mega pin-compatibles
|
26
|
+
| HDG204 + AT32UC3 | :question: | WiFi Shield | WiFi for Uno. No hardware to test, but compiles
|
27
|
+
| ATWINC1500 | :question: | WiFi Shield 101 | Same as above, high memory use, Mega only
|
28
|
+
|
29
|
+
### Espressif Chips with Built-In WiFi
|
30
|
+
[![ESP8266 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp8266.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp8266.yml) [![ESP32 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_esp32.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_esp32.yml)
|
31
|
+
|
32
|
+
| Chip | Status | Board Tested | Notes |
|
33
|
+
| :-------- | :------: | :--------------- |------ |
|
34
|
+
| ESP8266 | :green_heart: | NodeMCU |
|
35
|
+
| ESP8285 | :question: | DOIT ESP-Mx DevKit | Should be identical to 8266. Not tested in hardware.
|
36
|
+
| ESP32 | :green_heart: | DOIT ESP32 DevKit V1 |
|
37
|
+
| ESP32-S2 | :green_heart: | LOLIN S2 Pico | Native USB
|
38
|
+
| ESP32-S3 | :green_heart: | LOLIN S3 V1.0.0 | Native USB
|
39
|
+
| ESP32-C3 | :green_heart: | LOLIN C3 Mini V2.1.0 | Native USB
|
40
|
+
|
41
|
+
**Note:** For ESP32 chips using native USB, 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.
|
42
|
+
|
43
|
+
### Raspberry Pi Microcontrollers
|
44
|
+
[![RP2040 Build Status](https://github.com/denko-rb/denko/actions/workflows/build_rp2040.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/build_rp2040.yml)
|
45
|
+
|
46
|
+
| Chip | Status | Board Tested | Notes |
|
47
|
+
| :-------- | :------: | :--------------- |------ |
|
48
|
+
| RO2040 | :green_heart: | Raspberry Pi Pico (W) | WiFi only on W version. No WS1812 LED support.
|
49
|
+
|
50
|
+
# Single Board Computers
|
51
|
+
|
52
|
+
### Raspberry Pi Single Board Computers
|
53
|
+
**Note:** See the [denko-piboard](https://github.com/denko-rb/denko-piboard) extension to this gem. It uses the peripheral classes from this gem, but swaps out `Board` for `PiBoard`, which uses the Raspberry Pi's built-in GPIPO interface. This is still a work-in-progress.
|
54
|
+
|
55
|
+
| Chip | Status | Products | Notes |
|
56
|
+
| :-------- | :------: | :--------------- |------ |
|
57
|
+
| BCM2835 | :yellow_heart: | Pi 1, Pi Zero (W) |
|
58
|
+
| BCM2836/7 | :question: | Pi 2 |
|
59
|
+
| BCM2837A0/B0 | :yellow_heart: | Pi 3 |
|
60
|
+
| BCM2711 | :question: | Pi 4, Pi 400 |
|
61
|
+
| BCM2710A1 | :question: | Pi Zero 2W |
|
62
|
+
|
63
|
+
# Peripherals
|
64
|
+
|
65
|
+
:green_heart: Full support :yellow_heart: Partial support :heart: Planned. No support yet
|
66
|
+
|
67
|
+
### Basic GPIO Interface
|
68
|
+
|
69
|
+
| Name | Status | Component Class | Notes |
|
70
|
+
| :--------------- | :------: | :------ | :---- |
|
71
|
+
| Digital Out | :green_heart: | `DigitalIO::Output` | - |
|
72
|
+
| Digital In | :green_heart: | `DigitalIO::Input` | 1ms - 128ms (4ms default) listen, poll, or read
|
73
|
+
| PWM Out | :green_heart: | `PulseIO::PWMOutput` |
|
74
|
+
| Analog Out (DAC) | :green_heart: | `AnalogIO::Output` | On SAM3X, SAMD21 and some ESP32
|
75
|
+
| Analog In (ADC) | :green_heart: | `AnalogIO::Input` | 1ms - 128ms (16ms default) listen, poll, or read
|
76
|
+
| Tone Out (Square Wave)| :green_heart: | `PulseIO::Buzzer` | Doesn't work on Due (SAM3X)
|
77
|
+
|
78
|
+
**Note:** When listening, the board checks the pin's value every **_2^n_** milliseconds (**_n_** from **_0_** to **_7_**), without further commands.
|
79
|
+
Polling and reading follow a call and response pattern.
|
80
|
+
|
81
|
+
### Advanced Interfaces
|
82
|
+
|
83
|
+
| Name | Status | SW/HW | Component Class | Notes |
|
84
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
85
|
+
| I2C | :green_heart: | Hardware | `I2C::Bus` | Hardware I2C on predefined pins
|
86
|
+
| SPI | :green_heart: | Hardware | `SPI::Bus` | Hardware SPI on prefedined pins
|
87
|
+
| SPI Bit Bang | :green_heart: | Software | `SPI::BitBang` | Bit Bang SPI on any pins
|
88
|
+
| UART | :green_heart: | Hardware | `UART::Hardware` | R/W support for UART1..3 when available
|
89
|
+
| UART Bit Bang | :green_heart: | Software | `UART::BitBang` | R/W support for a single UART. Only ATmega chips
|
90
|
+
| Maxim OneWire | :green_heart: | Software | `OneWire::Bus` | No overdrive support
|
91
|
+
| Infrared Emitter | :green_heart: | Software | `PulseIO::IRTransmitter` | Library on Board
|
92
|
+
| Infrared Receiver| :heart: | Software | `PulseIO::IRReceiver` | Doable with existing library
|
93
|
+
|
94
|
+
### Generic Peripherals
|
95
|
+
|
96
|
+
| Name | Status | Interface | Component Class | Notes |
|
97
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
98
|
+
| Board EEPROM | :green_heart: | Built-In | `EEPROM::BuiltIn` | Not all boards have EEPROM
|
99
|
+
| Led | :green_heart: | Digi/Ana Out | `LED::Base` |
|
100
|
+
| RGBLed | :green_heart: | Digi/Ana Out | `LED::RGB` |
|
101
|
+
| Relay | :green_heart: | Digital Out | `DigitalIO::Relay` |
|
102
|
+
| 7 Segment Display| :yellow_heart: | Digital Out | `LED::SevenSegment` | No decimal point
|
103
|
+
| Button | :green_heart: | Digital In | `DigitalIO::Button` |
|
104
|
+
| Rotary Encoder | :green_heart: | Digital In | `DigitalIO::RotaryEncoder` | Listens every 1ms
|
105
|
+
| PIR Sensor | :yellow_heart: | Digital In | `DigitalIO::Input` | Needs class. HC-SR501
|
106
|
+
| Analog Sensor | :green_heart: | Analog In | `AnalogIO::Sensor` |
|
107
|
+
| Potentiometer | :green_heart: | Analog In | `AnalogIO::Potentiometer` | Smoothing on by default
|
108
|
+
| Piezo Buzzer | :green_heart: | Tone Out | `PulseIO::Buzzer` | Frequency > 30Hz
|
109
|
+
| Input Register | :green_heart: | SPI | `SPI::InputRegister` | Tested on CD4021B
|
110
|
+
| Output Register | :green_heart: | SPI | `SPI::OutputRegister` | Tested on 74HC595
|
111
|
+
|
112
|
+
**Note:** Most Digital In and Out peripherals can be used seamlessley through Input and Output Registers respectively.
|
113
|
+
|
114
|
+
### Motors / Motor Drivers
|
115
|
+
|
116
|
+
| Name | Status | Interface | Component Class | Notes |
|
117
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
118
|
+
| Servo | :green_heart: | PWM + Library | `Motor::Servo` | Maximum of 6 on ATmega168, 16 on ESP32 and 12 otherwise
|
119
|
+
| L298N | :green_heart: | Digi + PWM Out | `Motor::L298` | H-Bridge DC motor driver
|
120
|
+
| A3967 | :green_heart: | Digital Out | `Motor::Stepper` | 1ch microstepper (EasyDriver)
|
121
|
+
| PCA9685 | :heart: | I2C | `PulseIO::PCA9685` | 16ch 12-bit PWM for servo or LED
|
122
|
+
|
123
|
+
### Displays
|
124
|
+
|
125
|
+
| Name | Status | Interface | Component Class | Notes |
|
126
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
127
|
+
| HD44780 LCD | :green_heart: | Digital Out, Output Register | `Display::HD44780` |
|
128
|
+
| SSD1306 OLED | :yellow_heart: | I2C | `Display::SSD1306` | 1 font, some graphics
|
129
|
+
|
130
|
+
### Addressable LEDs
|
131
|
+
|
132
|
+
| Name | Status | Interface | Component Class | Notes |
|
133
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
134
|
+
| Neopixel / WS2812B | :yellow_heart: | Adafruit Library | `LED::WS2812` | Not working on RP2040 |
|
135
|
+
| Dotstar / APA102 | :green_heart: | SPI | `LED::APA102` |
|
136
|
+
|
137
|
+
### I/O Expansion
|
138
|
+
|
139
|
+
| Name | Status | Interface | Component Class | Notes |
|
140
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
141
|
+
| PCF8574 Expander | :heart: | I2C | `DigitalIO::PCF8574` | 8ch bi-directional digital I/O
|
142
|
+
| ADS1115 ADC | :heart: | I2C | `AnalogIO::ADS1115` | 15-bit +/- 4ch ADC
|
143
|
+
| ADS1118 ADC | :green_heart: | SPI | `AnalogIO::ADS1118` | 15-bit +/- 4ch ADC, and temperature
|
144
|
+
| PCF8591 ADC/DAC | :heart: | I2C | `AnalogIO::PCF8591` | 4ch ADC + 1ch DAC, 8-bit resolution
|
145
|
+
|
146
|
+
### Environmental Sensors
|
147
|
+
|
148
|
+
| Name | Status | Interface | Component Class | Notes |
|
149
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
150
|
+
| DHT 11/21/22 | :green_heart: | Digi In/Out | `Sensor::DHT` | Temp/RH
|
151
|
+
| DS18B20 | :green_heart: | OneWire | `Sensor::DS18B20` | Temp
|
152
|
+
| BME280 | :green_heart: | I2C | `Sensor::BME280` | Temp/RH/Press
|
153
|
+
| BMP280 | :green_heart: | I2C | `Sensor::BMP280` | Temp/Press
|
154
|
+
| HTU21D | :green_heart: | I2C | `Sensor::HTU21D` | Temp/RH. Locks I2C bus during read. No user register read.
|
155
|
+
| HTU31D | :yellow_heart: | I2C | `Sensor::HTU31D` | Temp/RH. No diagnostic read yet.
|
156
|
+
| AHT10/15 | :green_heart: | I2C | `Sensor::AHT10` | Temp/RH. Always uses calibrated mode.
|
157
|
+
| AHT20/21/25 | :green_heart: | I2C | `Sensor::AHT20` | Temp/RH. Always uses calibrated mode and CRC.
|
158
|
+
| MAX31850 | :heart: | OneWire | `Sensor::MAX31850` | Thermocouple Amplifier
|
159
|
+
| ENS160 | :heart: | I2C | `Sensor::ENS160` | CO2e/TVOC/AQI
|
160
|
+
| AGS02MA | :heart: | I2C | `Sensor::AGS02MA` | TVOC
|
161
|
+
|
162
|
+
### Light Sensors
|
163
|
+
|
164
|
+
| Name | Status | Interface | Component Class | Notes |
|
165
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
166
|
+
| APDS9960 | :heart: | I2C | `Sensor::APDS9960`| Proximity, RGB, Gesture
|
167
|
+
|
168
|
+
### Distance Sensors
|
169
|
+
|
170
|
+
| Name | Status | Interface | Component Class | Notes |
|
171
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
172
|
+
| HC-SR04 | :heart: | Direct | `Sensor::HCSR04` | Ultrasonic, 20-4000mm
|
173
|
+
| VL53L0X | :heart: | I2C | `Sensor::VL53L0X` | Laser, 30 - 1000mm
|
174
|
+
| GP2Y0E03 | :heart: | I2C | `Sensor::GP2Y0E03` | Infrared, 40 - 500mm
|
175
|
+
|
176
|
+
### Motion Sensors
|
177
|
+
|
178
|
+
| Name | Status | Interface | Component Class | Notes |
|
179
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
180
|
+
| ADXL345 | :heart: | I2C | `Sensor::ADXL345` | 3-axis Accelerometer
|
181
|
+
| IT3205 | :heart: | I2C | `Sensor::IT3205` | 3-axis Gyroscope
|
182
|
+
| HMC5883L | :heart: | I2C | `Sensor::HMC5883L` | 3-axis Compass
|
183
|
+
|
184
|
+
### Real Time Clock
|
185
|
+
|
186
|
+
| Name | Status | Interface | Component Class | Notes |
|
187
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
188
|
+
| DS1302 | :heart: | I2C | `RTC::DS1302` |
|
189
|
+
| DS3221 | :yellow_heart: | I2C | `RTC::DS3231` | Only set and get time implemented
|
190
|
+
|
191
|
+
### Miscellaneous
|
192
|
+
|
193
|
+
| Name | Status | Interface | Component Class | Notes |
|
194
|
+
| :--------------- | :------: | :-------- | :--------------- |------ |
|
195
|
+
| MFRC522 | :heart: | SPI/I2C | `DigitalIO::MFRC522` | RFID tag reader / writer
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Austin
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,152 @@
|
|
1
|
+
# Denko 0.13.0 [![Test Status](https://github.com/denko-rb/denko/actions/workflows/ruby.yml/badge.svg)](https://github.com/denko-rb/denko/actions/workflows/ruby.yml)
|
2
|
+
### Ruby Meets Microcontrollers
|
3
|
+
Denko gives you a high-level Ruby interface to low-level hardware, without writing microcontroller code. Use LEDs, buttons, sensors and more, just as easily as any Ruby object:
|
4
|
+
|
5
|
+
````ruby
|
6
|
+
led.blink 0.5
|
7
|
+
|
8
|
+
lcd.print "Hello World!"
|
9
|
+
|
10
|
+
reading = sensor.read
|
11
|
+
|
12
|
+
button.down do
|
13
|
+
puts "Button pressed!"
|
14
|
+
end
|
15
|
+
````
|
16
|
+
|
17
|
+
Denko doesn't run Ruby on the microcontroller (see the [mruby-dino](#mruby) project). It runs a C++ firmware that exposes as much low-level I/O as possible, so we can use it in Ruby. It becomes a peripheral for your computer.
|
18
|
+
|
19
|
+
High-level abstraction in Ruby makes hardware classes easy to implement, with intuitive interfaces. They multitask a single core microcontroller, with thread-safe state, and callbacks for inputs, but no "task" priority. If you need more I/O, integration is seamless. Connect another board and instantiate it in Ruby.
|
20
|
+
|
21
|
+
Each peripheral connected to your microcontroller(s) maps to a Ruby object you can use directly. You get to think about your hardware and appplication logic, not everything in between.
|
22
|
+
|
23
|
+
### Supported Hardware
|
24
|
+
|
25
|
+
See a full list of supported mircocontroller platforms, interfaces, and peripherals [here](HARDWARE.md).
|
26
|
+
|
27
|
+
## Getting Started
|
28
|
+
|
29
|
+
**Note:** If using Ruby in WSL on Windows, you can follow the Mac/Linux instructions, but it is not recommended. Serial (COM port) forwarding isn't currently working on WSL2, which would make it impossible to communicate with the microcontroller. There are workarounds, and you might get it working by switching to WSL1, but the [RubyInstaller for Windows](https://rubyinstaller.org/) and Arduino IDE are recommended instead.
|
30
|
+
|
31
|
+
#### 1. Install the Gem
|
32
|
+
```shell
|
33
|
+
gem install denko
|
34
|
+
```
|
35
|
+
|
36
|
+
Before using the microcontroller in Ruby, we need to flash it with the denko firmware (or "sketch" in Arduino lingo). This is needed **once** for each board, but future denko versions may need reflashing to add functionality.
|
37
|
+
|
38
|
+
#### 2. Install the Arduino IDE OR CLI
|
39
|
+
|
40
|
+
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.
|
41
|
+
|
42
|
+
**CLI Installation with Homebrew on Mac or Linux:**
|
43
|
+
````shell
|
44
|
+
brew update
|
45
|
+
brew install arduino-cli
|
46
|
+
````
|
47
|
+
|
48
|
+
#### 3. Install Arduino Dependencies
|
49
|
+
Denko uses Arduino cores, which add support for microcontrollers, and a few libraries. Install only the ones for your microcontroller, or install everything. There are no conflcits. Instructions for supported microcontrollers:
|
50
|
+
* [Install Dependencies in IDE](DEPS_IDE.md)
|
51
|
+
* [Install Dependencies in CLI](DEPS_CLI.md)
|
52
|
+
|
53
|
+
#### 4. Generate the Arduino Sketch
|
54
|
+
The `denko` command is included with the gem. It will make the Arduino sketch folder for you, and configure it.
|
55
|
+
|
56
|
+
**For ATmega boards, Serial over USB:** (Arduino Uno, Nano, Mega, Leonardo, Micro)
|
57
|
+
```shell
|
58
|
+
denko sketch serial
|
59
|
+
````
|
60
|
+
|
61
|
+
**For ESP8266, Serial over USB:**
|
62
|
+
```shell
|
63
|
+
denko sketch serial --target esp8266
|
64
|
+
````
|
65
|
+
|
66
|
+
**For ESP8266 or ESP32 over WiFi (2.4Ghz and DHCP Only):**
|
67
|
+
```shell
|
68
|
+
denko sketch wifi --target esp8266 --ssid YOUR_SSID --password YOUR_PASSWORD
|
69
|
+
denko sketch wifi --target esp32 --ssid YOUR_SSID --password YOUR_PASSWORD
|
70
|
+
````
|
71
|
+
|
72
|
+
**Note:** [This example](examples/connection/tcp.rb) shows how to connect to a board with a TCP socket, but the WiFi & Ethernet sketches fall back to the serial interface when no TCP client is connected.
|
73
|
+
|
74
|
+
#### 5a) IDE Flashing
|
75
|
+
|
76
|
+
* Connect the board to your computer with a USB cable.
|
77
|
+
* Open the .ino file inside your sketch folder with the IDE.
|
78
|
+
* Open the dropdown menu at the top of the IDE window, and select your board.
|
79
|
+
* Press the Upload :arrow_right: button. This will compile the sketch, and flash it to the board.
|
80
|
+
|
81
|
+
**Troubleshooting:**
|
82
|
+
* If your serial port is in the list, but the board is wrong, select the serial port anyway, then you will be asked to manually select a board.
|
83
|
+
* 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.
|
84
|
+
|
85
|
+
#### 5b) CLI Flashing
|
86
|
+
|
87
|
+
* The path output by `denko sketch` earlier is your sketch folder. Keep it handy.
|
88
|
+
* Connect the board to your computer with a USB cable.
|
89
|
+
* Check if the CLI recognizes it:
|
90
|
+
|
91
|
+
````shell
|
92
|
+
arduino-cli board list
|
93
|
+
````
|
94
|
+
|
95
|
+
* Using the Port and FQBN (Fully Qualified Board Name) shown, compile and upload the sketch:
|
96
|
+
````shell
|
97
|
+
arduino-cli compile -b YOUR_FQBN YOUR_SKETCH_FOLDER
|
98
|
+
arduino-cli upload -v -p YOUR_PORT -b YOUR_FQBN YOUR_SKETCH_FOLDER
|
99
|
+
````
|
100
|
+
|
101
|
+
**Troubleshooting:**
|
102
|
+
* Follow the same steps as the IDE method above. List all FQBNs using:
|
103
|
+
````shell
|
104
|
+
arduino-cli board listall
|
105
|
+
````
|
106
|
+
|
107
|
+
#### 6) Test It
|
108
|
+
|
109
|
+
Most boards have a regular LED on-board. Test it with the [blink](examples/led/builtin_blink.rb) example. If you have an on-board WS2812 LED, use the [WS2812 blink](examples/led/ws2812_builtin_blink.rb) example instead. If it starts blinking, you're ready for Ruby!
|
110
|
+
|
111
|
+
## Examples and Tutorials
|
112
|
+
|
113
|
+
#### Tutorial
|
114
|
+
|
115
|
+
- [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:
|
116
|
+
* 1 compatible microcontroller (see [supported hardware](HARDWARE.md))
|
117
|
+
* 1 button or momentary switch
|
118
|
+
* 1 potentiometer (any value)
|
119
|
+
* 1 external RGB LED (4 legs common cathode, not a Neopixel or individually addressable)
|
120
|
+
* 1 external LED (any color, or use one color from the RGB LED)
|
121
|
+
* Current limiting resistors for LEDs
|
122
|
+
* Breadboard
|
123
|
+
* Jumper wires
|
124
|
+
|
125
|
+
**Tip:** Kits are a cost-effective way to get started. They will almost certainly include these parts, plus more, getting you well beyond the tutorial.
|
126
|
+
|
127
|
+
#### Included Examples
|
128
|
+
|
129
|
+
- The [examples](examples) folder contains at least one example per supported peripheral, demonstrating its interface, and a few that use multiple peripherals together.
|
130
|
+
- Each example should incldue a wiring diagram alongside its code (still incomplete).
|
131
|
+
|
132
|
+
#### More Examples
|
133
|
+
|
134
|
+
- Try [Getting Started with Arduino and Denko](http://tutorials.jumpstartlab.com/projects/arduino/introducing_arduino.html) from [Jumpstart Lab](http://jumpstartlab.com) (_ignore old install instructions_).
|
135
|
+
- An example [rails app](https://github.com/denko-rb/denko_rails_example) using Denko and Pusher.
|
136
|
+
- For a Sinatra example, look at the [site](https://github.com/denko-rb/denko_cannon) used to shoot the cannon at RubyConf2012.
|
137
|
+
|
138
|
+
## Explanatory Talks
|
139
|
+
|
140
|
+
- "Arduino the Ruby Way" at RubyConf 2012
|
141
|
+
- [Video by ConFreaks](https://www.youtube.com/watch?v=oUIor6GK-qA)
|
142
|
+
- [Slides on SpeakerDeck](https://speakerdeck.com/austinbv/arduino-the-ruby-way)
|
143
|
+
|
144
|
+
## mruby Port
|
145
|
+
|
146
|
+
A single-board computer plus microcontroller can be a great standalone solution, especially if your project needs the computer anyway. For example, a Raspberry Pi Zero and Arduino Nano combo, running CRuby, Denko and other software.
|
147
|
+
|
148
|
+
But what if you want to be _really_ small? Building on the [mruby-esp32](https://github.com/mruby-esp32/mruby-esp32) project, Denko is being ported to run directly on the ESP32 here: [mruby-dino-template](https://github.com/denko-rb/mruby-dino-template).
|
149
|
+
|
150
|
+
## denko-piboard
|
151
|
+
|
152
|
+
There's an add-on for this gem, [denko-piboard](https://github.com/denko-rb/denko-piboard), in early development, which adds support for the Raspberry Pi's built in GPIO interface as a class-compatible "board". This allows you to connect peripherals directly to the Pi, without a microcontroller, and use the denko peripherals classes as-is.
|
data/Rakefile
ADDED
data/bin/denko
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
# Find myself
|
5
|
+
require "pathname"
|
6
|
+
bin_file = Pathname.new(__FILE__).realpath
|
7
|
+
|
8
|
+
# Find everything else
|
9
|
+
src_dir = bin_file.to_s.chomp("/bin/denko") + "/src"
|
10
|
+
lib_dir = bin_file.to_s.chomp("/bin/denko") + "/lib"
|
11
|
+
cli_dir = bin_file.to_s.chomp("/bin/denko") + "/lib/denko_cli"
|
12
|
+
working_dir = Dir.pwd
|
13
|
+
|
14
|
+
# Make sure denko is in the load path
|
15
|
+
$:.unshift lib_dir
|
16
|
+
|
17
|
+
# Start the CLI
|
18
|
+
require "denko_cli"
|
19
|
+
DenkoCLI.start working_dir: working_dir,
|
20
|
+
src_dir: src_dir,
|
21
|
+
cli_dir: cli_dir,
|
22
|
+
args: ARGV
|
data/build
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
require "pathname"
|
5
|
+
require "yaml"
|
6
|
+
|
7
|
+
# Find myself.
|
8
|
+
build_file = Pathname.new(__FILE__).realpath
|
9
|
+
|
10
|
+
# Find the target details.
|
11
|
+
target_file = build_file.to_s.chomp("build") + "target.yml"
|
12
|
+
target = YAML.load_file(target_file)
|
13
|
+
|
14
|
+
# Generate sketch.
|
15
|
+
bin_file = build_file.to_s.chomp("build") + "bin/denko"
|
16
|
+
sketch_folder = `#{bin_file} sketch serial --target #{target["name"]}`
|
17
|
+
|
18
|
+
# Compile it.
|
19
|
+
compile_successful = system "arduino-cli compile -b #{target["fqbn"]} #{sketch_folder}"
|
20
|
+
|
21
|
+
# Upload it.
|
22
|
+
if compile_successful
|
23
|
+
system "arduino-cli upload -v -p #{target["port"]} -b #{target["fqbn"]} #{sketch_folder}"
|
24
|
+
end
|
25
|
+
|
26
|
+
# Delete it.
|
27
|
+
system "rm -r #{sketch_folder}"
|
data/denko.gemspec
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/denko/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["vickash, Austinbv"]
|
6
|
+
gem.email = ["mail@vickash.com"]
|
7
|
+
gem.description = %q{GPIO library for Ruby}
|
8
|
+
gem.summary = %q{Use GPIO, I2C, SPI, UART and more on a connected microcontroller}
|
9
|
+
gem.homepage = 'https://github.com/denko-rb/denko'
|
10
|
+
gem.files = `git ls-files`.split($\)
|
11
|
+
gem.licenses = ['MIT']
|
12
|
+
|
13
|
+
# Copy full submodule contents into the gem when building.
|
14
|
+
# Credit:
|
15
|
+
# https://gist.github.com/mattconnolly/5875987#file-gem-with-git-submodules-gemspec
|
16
|
+
#
|
17
|
+
# get an array of submodule dirs by executing 'pwd' inside each submodule
|
18
|
+
gem_dir = File.expand_path(File.dirname(__FILE__)) + "/"
|
19
|
+
`git submodule --quiet foreach pwd`.split($\).each do |submodule_path|
|
20
|
+
# Fix submodule paths on Windows.
|
21
|
+
if RUBY_PLATFORM.match(/mswin|mingw/i)
|
22
|
+
submodule_path = `cygpath -m #{submodule_path}`.strip
|
23
|
+
end
|
24
|
+
|
25
|
+
Dir.chdir(submodule_path) do
|
26
|
+
submodule_relative_path = submodule_path.sub gem_dir, ""
|
27
|
+
# issue git ls-files in submodule's directory and
|
28
|
+
# prepend the submodule path to create absolute file paths
|
29
|
+
`git ls-files`.split($\).each do |filename|
|
30
|
+
gem.files << "#{submodule_relative_path}/#{filename}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
36
|
+
gem.name = "denko"
|
37
|
+
gem.require_paths = ["lib"]
|
38
|
+
gem.version = Denko::VERSION
|
39
|
+
gem.executables = ["denko"]
|
40
|
+
|
41
|
+
gem.add_dependency 'rubyserial', '~> 0.6'
|
42
|
+
gem.add_dependency 'bcd', '~> 1'
|
43
|
+
|
44
|
+
gem.add_development_dependency 'rake', '~> 13'
|
45
|
+
gem.add_development_dependency 'minitest', '~> 5'
|
46
|
+
gem.add_development_dependency 'simplecov', '~> 0.22'
|
47
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#
|
2
|
+
# Example using a rotary encoder to control audio output volume on a Mac.
|
3
|
+
#
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'denko'
|
6
|
+
|
7
|
+
board = Denko::Board.new(Denko::Connection::Serial.new)
|
8
|
+
encoder = Denko::DigitalIO::RotaryEncoder.new board: board,
|
9
|
+
pins:{ clock: 4, data: 5 },
|
10
|
+
divider: 1, # (default) read approx every divider ms
|
11
|
+
steps_per_revolution: 30 # (default)
|
12
|
+
|
13
|
+
# Set up a pseudo terminal with osascript (AppleScript) in interactive mode.
|
14
|
+
# Calling a separate script each update is too slow.
|
15
|
+
class AppleVolumeWrapper
|
16
|
+
require 'pty'
|
17
|
+
require 'expect'
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@in, @out, pid = PTY.spawn('osascript -i')
|
21
|
+
@in.expect(/>> /) # Terminal ready.
|
22
|
+
end
|
23
|
+
|
24
|
+
def get
|
25
|
+
@out.write("output volume of (get volume settings)\r\n")
|
26
|
+
@in.expect(/=> (\d+)\r\n/)[1].to_i
|
27
|
+
end
|
28
|
+
|
29
|
+
def set(value)
|
30
|
+
@out.write("set volume output volume #{value}\r\n")
|
31
|
+
@in.expect(/>> /)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
volume = AppleVolumeWrapper.new
|
36
|
+
puts "Current volume: #{volume.get}%"
|
37
|
+
|
38
|
+
encoder.add_callback do |update|
|
39
|
+
# Increase by 2% for every step so it responds faster.
|
40
|
+
value = (volume.get + (update[:change] * 2))
|
41
|
+
value = 0 if value < 0
|
42
|
+
value = 100 if value > 100
|
43
|
+
volume.set(value)
|
44
|
+
current_volume = volume.get
|
45
|
+
puts "Current volume: #{current_volume}%"
|
46
|
+
end
|
47
|
+
|
48
|
+
sleep
|