diff --git a/.github/workflows/arduino-esp-v2-build-check.yml b/.github/workflows/arduino-esp-v2-build-check.yml index 07f389d..92f3f0b 100644 --- a/.github/workflows/arduino-esp-v2-build-check.yml +++ b/.github/workflows/arduino-esp-v2-build-check.yml @@ -81,6 +81,23 @@ jobs: archi: - esp32 + include: + # Specific sketches for m5stack-core-esp32 only + - sketch: SimpleDisplay + platform-url: https://espressif.github.io/arduino-esp32/package_esp32_index.json + platform: esp32 + archi: esp32 + platform-version: 2.0.17 + board: m5stack-core-esp32 + unit: UnitToF + - sketch: SimpleDisplay + platform-url: https://espressif.github.io/arduino-esp32/package_esp32_index.json + platform: esp32 + archi: esp32 + platform-version: 2.0.17 + board: m5stack-core-esp32 + unit: UnitToF4M + steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/arduino-esp-v3-build-check.yml b/.github/workflows/arduino-esp-v3-build-check.yml index 5e3f352..e66709b 100644 --- a/.github/workflows/arduino-esp-v3-build-check.yml +++ b/.github/workflows/arduino-esp-v3-build-check.yml @@ -97,6 +97,24 @@ jobs: archi: - esp32 + include: + # Specific sketches for m5stack-core-esp32 only + - sketch: SimpleDisplay + platform-url: https://espressif.github.io/arduino-esp32/package_esp32_index.json + platform-version: 3.0.4 + platform: esp32 + archi: esp32 + board: m5stack_core + unit: UnitToF + - sketch: SimpleDisplay + platform-url: https://espressif.github.io/arduino-esp32/package_esp32_index.json + platform-version: 3.0.4 + platform: esp32 + archi: esp32 + board: m5stack_core + unit: UnitToF4M + + steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/arduino-m5-build-check.yml b/.github/workflows/arduino-m5-build-check.yml index 5c87bd2..952839f 100644 --- a/.github/workflows/arduino-m5-build-check.yml +++ b/.github/workflows/arduino-m5-build-check.yml @@ -99,6 +99,23 @@ jobs: archi: - esp32 + include: + # Specific sketches for m5stack-core-esp32 only + - sketch: SimpleDisplay + platform-url: https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json + platform-version: 2.1.2 + platform: m5stack + archi: esp32 + board: m5stack_core + unit: UnitToF + - sketch: SimpleDisplay + platform-url: https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json + platform-version: 2.1.2 + platform: m5stack + archi: esp32 + board: m5stack_core + unit: UnitToF4M + steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/platformio-build-check.yml b/.github/workflows/platformio-build-check.yml index 011ee73..65c3dad 100644 --- a/.github/workflows/platformio-build-check.yml +++ b/.github/workflows/platformio-build-check.yml @@ -113,6 +113,20 @@ jobs: # - board: Paper # espressif32: '4_4_0' + + include: + # Specific sketches for m5stack-core-esp32 only + - example: SimpleDisplay + unit: UnitToF + board: Core + framework: Arduino + espressif32: latest + - example: SimpleDisplay + unit: UnitToF4M + board: Core + framework: Arduino + espressif32: latest + steps: - name: Checkout uses: actions/checkout@v4 diff --git a/examples/UnitUnified/UnitToF/SimpleDisplay/SimpleDisplay.ino b/examples/UnitUnified/UnitToF/SimpleDisplay/SimpleDisplay.ino new file mode 100644 index 0000000..0e0462b --- /dev/null +++ b/examples/UnitUnified/UnitToF/SimpleDisplay/SimpleDisplay.ino @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD + * + * SPDX-License-Identifier: MIT + */ +/* + Example using M5UnitUnified for UnitToF +*/ +#include "main/SimpleDisplay.cpp" diff --git a/examples/UnitUnified/UnitToF/SimpleDisplay/main/SimpleDisplay.cpp b/examples/UnitUnified/UnitToF/SimpleDisplay/main/SimpleDisplay.cpp new file mode 100644 index 0000000..a5c7d79 --- /dev/null +++ b/examples/UnitUnified/UnitToF/SimpleDisplay/main/SimpleDisplay.cpp @@ -0,0 +1,67 @@ +/* + * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD + * + * SPDX-License-Identifier: MIT + */ +/* + Example using M5UnitUnified for UnitToF +*/ +#include +#include +#include +#include + +namespace { +auto& lcd = M5.Display; +m5::unit::UnitUnified Units; +m5::unit::UnitToF unit; +int16_t lastRange{}; +} // namespace + +void setup() +{ + M5.begin(); + // The screen shall be in landscape mode if exists + if (lcd.height() > lcd.width()) { + lcd.setRotation(1); + } + + auto pin_num_sda = M5.getPin(m5::pin_name_t::port_a_sda); + auto pin_num_scl = M5.getPin(m5::pin_name_t::port_a_scl); + Wire.begin(pin_num_sda, pin_num_scl, 400 * 1000U); + + if (!Units.add(unit, Wire) || !Units.begin()) { + M5_LOGE("Failed to begin"); + lcd.clear(TFT_RED); + while (true) { + m5::utility::delay(10000); + } + } + + M5_LOGI("M5UnitUnified has been begun"); + M5_LOGI("%s", Units.debugInfo().c_str()); + + lcd.setTextColor(TFT_ORANGE); + lcd.setFont(&fonts::Orbitron_Light_32); + lcd.setTextDatum(middle_center); + float scale = lcd.width() / (32 * 4.0f); + lcd.setTextSize(scale, scale); + + lcd.startWrite(); + lcd.clear(); +} + +void loop() +{ + M5.update(); + Units.update(); + + if (unit.updated()) { + auto range = unit.range(); + if (range > 0 && range != lastRange) { + lcd.fillRect(0, lcd.height() / 2 - lcd.fontHeight() / 2, lcd.width(), lcd.fontHeight(), TFT_BLACK); + lcd.drawString(m5::utility::formatString("%d", range).c_str(), lcd.width() / 2, lcd.height() / 2); + lastRange = range; + } + } +} diff --git a/examples/UnitUnified/UnitToF4M/SimpleDisplay/SimpleDisplay.ino b/examples/UnitUnified/UnitToF4M/SimpleDisplay/SimpleDisplay.ino new file mode 100644 index 0000000..cec0be3 --- /dev/null +++ b/examples/UnitUnified/UnitToF4M/SimpleDisplay/SimpleDisplay.ino @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD + * + * SPDX-License-Identifier: MIT + */ +/* + Example using M5UnitUnified for UnitToF4M +*/ +#include "main/SimpleDisplay.cpp" diff --git a/examples/UnitUnified/UnitToF4M/SimpleDisplay/main/SimpleDisplay.cpp b/examples/UnitUnified/UnitToF4M/SimpleDisplay/main/SimpleDisplay.cpp new file mode 100644 index 0000000..d9e8ad2 --- /dev/null +++ b/examples/UnitUnified/UnitToF4M/SimpleDisplay/main/SimpleDisplay.cpp @@ -0,0 +1,67 @@ +/* + * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD + * + * SPDX-License-Identifier: MIT + */ +/* + Example using M5UnitUnified for UnitToF4M +*/ +#include +#include +#include +#include + +namespace { +auto& lcd = M5.Display; +m5::unit::UnitUnified Units; +m5::unit::UnitToF4M unit; +int16_t lastRange{}; +} // namespace + +void setup() +{ + M5.begin(); + // The screen shall be in landscape mode if exists + if (lcd.height() > lcd.width()) { + lcd.setRotation(1); + } + + auto pin_num_sda = M5.getPin(m5::pin_name_t::port_a_sda); + auto pin_num_scl = M5.getPin(m5::pin_name_t::port_a_scl); + Wire.begin(pin_num_sda, pin_num_scl, 400 * 1000U); + + if (!Units.add(unit, Wire) || !Units.begin()) { + M5_LOGE("Failed to begin"); + lcd.clear(TFT_RED); + while (true) { + m5::utility::delay(10000); + } + } + + M5_LOGI("M5UnitUnified has been begun"); + M5_LOGI("%s", Units.debugInfo().c_str()); + + lcd.setTextColor(TFT_ORANGE); + lcd.setFont(&fonts::Orbitron_Light_32); + lcd.setTextDatum(middle_center); + float scale = lcd.width() / (32 * 4.0f); + lcd.setTextSize(scale, scale); + + lcd.startWrite(); + lcd.clear(); +} + +void loop() +{ + M5.update(); + Units.update(); + + if (unit.updated()) { + auto range = unit.range(); + if (range > 0 && range != lastRange) { + lcd.fillRect(0, lcd.height() / 2 - lcd.fontHeight() / 2, lcd.width(), lcd.fontHeight(), TFT_BLACK); + lcd.drawString(m5::utility::formatString("%d", range).c_str(), lcd.width() / 2, lcd.height() / 2); + lastRange = range; + } + } +} diff --git a/platformio.ini b/platformio.ini index f82d773..0950df2 100644 --- a/platformio.ini +++ b/platformio.ini @@ -515,3 +515,17 @@ build_src_filter = +<*> -<.git/> -<.svn/> +<../examples/UnitUnified/UnitToF/Plot [env:UnitToF_PlotToSerial_CoreInk_Arduino_latest] extends=CoreInk, option_release, arduino_latest build_src_filter = +<*> -<.git/> -<.svn/> +<../examples/UnitUnified/UnitToF/PlotToSerial> + +; +; For the following samples, please refer to PlotToSerial to create env for your own environment +; 以下のサンプルは、PlotToSerial を参考にして、自分の環境にあった env を作成してください +; +;SimpleDisplay (ToF) +[env:UnitToF_SimpleDisplay_Core_Arduino_latest] +extends=Core, option_release, arduino_latest +build_src_filter = +<*> -<.git/> -<.svn/> +<../examples/UnitUnified/UnitToF/SimpleDisplay> + +;SimpleDisplay (ToF4M) +[env:UnitToF4M_SimpleDisplay_Core_Arduino_latest] +extends=Core, option_release, arduino_latest +build_src_filter = +<*> -<.git/> -<.svn/> +<../examples/UnitUnified/UnitToF4M/SimpleDisplay>