From 50fa8e4e64388572a4f88211f067c51e2b2e3feb Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Fri, 6 Sep 2024 16:22:16 +0900 Subject: [PATCH 1/7] fix chekcTakaoBase --- src/Stackchan_Takao_Base.hpp | 38 +++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/Stackchan_Takao_Base.hpp b/src/Stackchan_Takao_Base.hpp index a86af4d..146abc0 100644 --- a/src/Stackchan_Takao_Base.hpp +++ b/src/Stackchan_Takao_Base.hpp @@ -11,24 +11,34 @@ enum PowerStatus { Battery }; -uint8_t checkTakaoBasePowerStatus(m5::Power_Class* power, StackchanSERVO* servo ) { - bool last_ext_output = power->getExtOutput(); - if (power->Axp192.getACINVoltage() > 1.0f) { +PowerStatus checkTakaoBasePowerStatus(m5::Power_Class* power, int16_t battery_threshold = 3200) { + if (!power->getExtOutput() && power->getBatteryCurrent() < 0) { + // TakaoBase使用時(ExtOutput=falseの場合)、バッテリー駆動の時はtrueに切り替える。 + // 切り替えないとサーボが動きません。 power->setExtOutput(true); + power->setLed(0); + return PowerStatus::Battery; + } + + if (power->getExtOutput() && (power->getBatteryCurrent() >= 0) { + // M5StackのUSB-C端子から給電されている状態。 power->setLed(80); - return PowerStatus::SidePower; + return PowerStatus::SidePower; } - while (servo->isMoving()) {delay(1);} // サーボが動いている間は待機(そうしないとサーボの動きが乱れる。) - power->setExtOutput(false); // 後側のUSB-Cの状態を把握するためにfalseにする必要があります。 - delay(500); - if (power->Axp192.getBatteryDischargeCurrent() > 3.0f) { - power->setExtOutput(true); - power->setLed(0); - return PowerStatus::Battery; + + if (power->getBatteryLevel() < battery_threshold) { + // Batteryの電圧が閾値よりも下がったときの処理 + power->setExtOutput(false); // 後側のUSB-Cの給電状態を把握するためにfalseにする必要があります。 + if (power->getVBUSVoltage() > 3000) { + // 後ろから給電されている状態。 + power->setLed(80); + return PowerStatus::BackPower; + } else { + // 給電されていない場合は電源OFF + M5.Power.powerOff(); + } } - power->setExtOutput(false); - power->setLed(80); - return PowerStatus::BackPower; + return PowerStatus::BackPower; } #endif // STACKCHAN_TAKAO_BASE_HPP \ No newline at end of file From 00df5e6c6de530f810fda04e5dfb56079e0acd4a Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Sun, 10 Nov 2024 23:56:57 +0900 Subject: [PATCH 2/7] add TurnFunction --- src/Stackchan_Takao_Base.hpp | 4 ++-- src/Stackchan_servo.cpp | 18 ++++++++++++++++++ src/Stackchan_servo.h | 1 + src/Stackchan_system_config.cpp | 1 + 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/Stackchan_Takao_Base.hpp b/src/Stackchan_Takao_Base.hpp index 146abc0..3f3b554 100644 --- a/src/Stackchan_Takao_Base.hpp +++ b/src/Stackchan_Takao_Base.hpp @@ -20,7 +20,7 @@ PowerStatus checkTakaoBasePowerStatus(m5::Power_Class* power, int16_t battery_th return PowerStatus::Battery; } - if (power->getExtOutput() && (power->getBatteryCurrent() >= 0) { + if (power->getExtOutput() && (power->getBatteryCurrent() >= 0)) { // M5StackのUSB-C端子から給電されている状態。 power->setLed(80); return PowerStatus::SidePower; @@ -29,7 +29,7 @@ PowerStatus checkTakaoBasePowerStatus(m5::Power_Class* power, int16_t battery_th if (power->getBatteryLevel() < battery_threshold) { // Batteryの電圧が閾値よりも下がったときの処理 power->setExtOutput(false); // 後側のUSB-Cの給電状態を把握するためにfalseにする必要があります。 - if (power->getVBUSVoltage() > 3000) { + if (power->getBatteryCurrent() > 0) { // 後ろから給電されている状態。 power->setLed(80); return PowerStatus::BackPower; diff --git a/src/Stackchan_servo.cpp b/src/Stackchan_servo.cpp index aeae838..ee7df64 100644 --- a/src/Stackchan_servo.cpp +++ b/src/Stackchan_servo.cpp @@ -230,6 +230,24 @@ void StackchanSERVO::moveXY(servo_param_s servo_param_x, servo_param_s servo_par _last_degree_y = servo_param_y.degree; } +// @uint32_t speed 0〜1000 +void StackchanSERVO::turnX(uint32_t speed, bool is_cw, uint32_t millis_for_move) { + if (speed >= 1000) { + speed = 1000; + } + if (is_cw) { + speed += 1000; // 逆回転時は+1000 + } + Serial.printf("speed: %d\n", speed); + _sc.PWMMode(1, true); // 回転モード + _isMoving = true; + _sc.WritePWM(1, speed); + vTaskDelay(millis_for_move/portTICK_PERIOD_MS); + _isMoving = false; + _sc.PWMMode(1, false); // 位置決めモードへ戻す + return; +} + void StackchanSERVO::motion(Motion motion_number) { if (motion_number == nomove) return; moveXY(90, 75, 500); diff --git a/src/Stackchan_servo.h b/src/Stackchan_servo.h index d66124d..4ddb635 100644 --- a/src/Stackchan_servo.h +++ b/src/Stackchan_servo.h @@ -81,6 +81,7 @@ class StackchanSERVO { void moveY(servo_param_s servo_param_y); void moveXY(servo_param_s servo_param_x, servo_param_s servo_param_y); void motion(Motion motion_no); + void turnX(uint32_t speed, bool is_cw, uint32_t millis_for_move); bool isMoving() { return _isMoving; } }; #endif // _STACKCHAN_SERVO_H_ \ No newline at end of file diff --git a/src/Stackchan_system_config.cpp b/src/Stackchan_system_config.cpp index ec83865..c5a814c 100644 --- a/src/Stackchan_system_config.cpp +++ b/src/Stackchan_system_config.cpp @@ -187,6 +187,7 @@ void StackchanSystemConfig::setSystemConfig(DynamicJsonDocument doc) { _servo_type = ServoType::PWM; } _secret_config_show = doc["secret_config_show"].as(); + } void StackchanSystemConfig::setSecretConfig(DynamicJsonDocument doc) { From f93d47c1b793122ee3c4a8e05c3e18ac5505e9e5 Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Tue, 18 Mar 2025 17:35:24 +0900 Subject: [PATCH 3/7] fix SCS0009 attach miss --- src/Stackchan_servo.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Stackchan_servo.cpp b/src/Stackchan_servo.cpp index ee7df64..4ed47cb 100644 --- a/src/Stackchan_servo.cpp +++ b/src/Stackchan_servo.cpp @@ -39,6 +39,7 @@ void StackchanSERVO::attachServos() { if (_servo_type == ServoType::SCS) { // SCS0009 Serial2.begin(1000000, SERIAL_8N1, _init_param.servo[AXIS_X].pin, _init_param.servo[AXIS_Y].pin); + delay(500); _sc.pSerial = &Serial2; _sc.WritePos(AXIS_X + 1, convertSCS0009Pos(_init_param.servo[AXIS_X].start_degree + _init_param.servo[AXIS_X].offset), 1000); _sc.WritePos(AXIS_Y + 1, convertSCS0009Pos(_init_param.servo[AXIS_Y].start_degree + _init_param.servo[AXIS_Y].offset), 1000); From 25830e9190a0c3a6f9e5b96c567076b1088fc18d Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Tue, 18 Mar 2025 17:35:49 +0900 Subject: [PATCH 4/7] fix CoreS3 default value wrong --- src/Stackchan_system_config.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Stackchan_system_config.cpp b/src/Stackchan_system_config.cpp index c5a814c..c376b40 100644 --- a/src/Stackchan_system_config.cpp +++ b/src/Stackchan_system_config.cpp @@ -25,6 +25,7 @@ void StackchanSystemConfig::setDefaultParameters() { case m5::board_t::board_M5StackCoreS3: _servo[AXIS_X].pin = 1; _servo[AXIS_Y].pin = 2; + break; default: M5_LOGI("UnknownBoard:%d\n", M5.getBoard()); _servo[AXIS_X].pin = 22; From 728c340ba4a1c86760a9ba29c5c662f33883f76c Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Tue, 18 Mar 2025 17:37:07 +0900 Subject: [PATCH 5/7] update libraries --- library.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library.json b/library.json index 68d6c4a..ae8e449 100644 --- a/library.json +++ b/library.json @@ -19,7 +19,7 @@ { "owner": "M5Stack", "name": "M5Unified", - "version": ">=0.1.16" + "version": "^0.2.5" }, { "owner": "madhephaestus", @@ -34,7 +34,7 @@ { "owner": "bblanchon", "name": "ArduinoJson", - "version": "^6" + "version": "^7" }, { "owner": "robotis-git", @@ -44,7 +44,7 @@ { "owner": "tobozo", "name": "YAMLDuino", - "version": "1.4.2" + "version": "1.5.0" }, { "name": "SCServo", From d4abe185500581aff992a45edda399e5625bc4c4 Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Tue, 18 Mar 2025 19:25:29 +0900 Subject: [PATCH 6/7] support CoreS3SE's default parameter --- src/Stackchan_system_config.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Stackchan_system_config.cpp b/src/Stackchan_system_config.cpp index c376b40..5e9418a 100644 --- a/src/Stackchan_system_config.cpp +++ b/src/Stackchan_system_config.cpp @@ -23,6 +23,7 @@ void StackchanSystemConfig::setDefaultParameters() { _servo[AXIS_Y].pin = 21; break; case m5::board_t::board_M5StackCoreS3: + case m5::board_t::board_M5StackCoreS3SE: _servo[AXIS_X].pin = 1; _servo[AXIS_Y].pin = 2; break; From ea0e8f4868b9d625e74916846d2d221c75a1fca6 Mon Sep 17 00:00:00 2001 From: Takao Akaki Date: Tue, 18 Mar 2025 19:56:02 +0900 Subject: [PATCH 7/7] raise version 0.0.3 --- library.json | 2 +- library.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library.json b/library.json index ae8e449..3eb3b93 100644 --- a/library.json +++ b/library.json @@ -51,7 +51,7 @@ "version": "https://github.com/mongonta0716/SCServo.git" } ], - "version": "0.0.1", + "version": "0.0.3", "frameworks": "arduino", "platforms": "espressif32" } \ No newline at end of file diff --git a/library.properties b/library.properties index 1cd8357..0e8eae8 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=stackchan-arduino -version=0.0.1 +version=0.0.3 author=Takao Akaki maintainer=Takao Akaki sentence=Stackchan library for M5Stack