From 3c7aea15a90eae1b2168056b19e48a840f475b67 Mon Sep 17 00:00:00 2001 From: Mathis Date: Fri, 8 Dec 2023 09:45:07 +0100 Subject: [PATCH] [ServoMotor] - rework servoMotor for adding speed and easing for movement --- include/Program.h | 2 ++ .../src/ServoMotorComponent.cpp | 26 ++++++++++++++++--- .../src/ServoMotorComponent.h | 5 ++++ src/Program.cpp | 25 +++++------------- 4 files changed, 36 insertions(+), 22 deletions(-) diff --git a/include/Program.h b/include/Program.h index b4f30bb..4ceb880 100644 --- a/include/Program.h +++ b/include/Program.h @@ -4,6 +4,7 @@ #include "Arduino.h" #include "DolibarrClient.h" #include +#include "ServoMotorComponent.h" class Program { public: @@ -18,6 +19,7 @@ public: void loop(); private: DolibarrClient *client; + ServoMotorComponent *servo; }; #endif diff --git a/lib/ServoMotorComponent/src/ServoMotorComponent.cpp b/lib/ServoMotorComponent/src/ServoMotorComponent.cpp index fef7531..4a67a25 100644 --- a/lib/ServoMotorComponent/src/ServoMotorComponent.cpp +++ b/lib/ServoMotorComponent/src/ServoMotorComponent.cpp @@ -2,23 +2,25 @@ ServoMotorComponent::ServoMotorComponent(int PIN) { this->PIN = PIN; - this->position = 0; + this->position = 30; + this->speed = 100; + this->easing = 0.5; this->myservo.attach(PIN); } void ServoMotorComponent::goLeft() { - this->myservo.write(this->PIN, 0); + this->myservo.write(this->PIN, 52, this->speed, this->easing); this->position = 0; } void ServoMotorComponent::goRight() { - this->myservo.write(this->PIN, 180); + this->myservo.write(this->PIN, 18, this->speed, this->easing); this->position = 180; } void ServoMotorComponent::goMiddle() { - this->myservo.write(this->PIN, 90); + this->myservo.write(this->PIN, 32, this->speed, this->easing); this->position = 90; } @@ -29,4 +31,20 @@ int ServoMotorComponent::getPosition() { void ServoMotorComponent::setPin(int PIN) { this->PIN = PIN; this->myservo.attach(PIN); + return; +} + +void ServoMotorComponent::setSpeed(int speed) { + this->speed = speed; + return; +} + +void ServoMotorComponent::pause() { + this->myservo.pause(); + return; +} + +void ServoMotorComponent::setEasing(float easing) { + this->easing = easing; + return; } diff --git a/lib/ServoMotorComponent/src/ServoMotorComponent.h b/lib/ServoMotorComponent/src/ServoMotorComponent.h index c5a08c1..3d74c92 100644 --- a/lib/ServoMotorComponent/src/ServoMotorComponent.h +++ b/lib/ServoMotorComponent/src/ServoMotorComponent.h @@ -13,10 +13,15 @@ public: void goMiddle(); int getPosition(); void setPin(int PIN); + void pause(); + void setSpeed(int speed); + void setEasing(float easing); private: int PIN; int position; + int speed; + float easing; Servo myservo; }; diff --git a/src/Program.cpp b/src/Program.cpp index 8454899..3d7ebe7 100644 --- a/src/Program.cpp +++ b/src/Program.cpp @@ -2,28 +2,17 @@ #include "Arduino.h" #include "DolibarrClient.h" -int initialize_wifi(WifiConfig wifi) { - WiFiClass::mode(WIFI_STA); //Optional - WiFi.setSleep(false); - WiFi.begin(wifi.ssid, wifi.password); - Serial.print("Connecting "); - while(WiFiClass::status() != WL_CONNECTED){ - delay(WAITING_WIFI_DELAY); - Serial.print("."); - } - Serial.println("Connected to the WiFi network"); - return 0; -} - Program::Program() { - Serial.begin(MONITOR_SPEED); - struct WifiConfig wifi_c = {WIFI_SSID, WIFI_PASSWORD}; - struct DolibarrConfig dolibarr = {DOLIBARR_URL, DOLIBARR_API_TOKEN}; - initialize_wifi(wifi_c); - this->client = new DolibarrClient(dolibarr); + this->servo = new ServoMotorComponent(2); } void Program::loop() { + // this->servo->goLeft(); + // delay(3000); + this->servo->goMiddle(); + // delay(3000); + // this->servo->goRight(); + // delay(3000); }