[ServoMotor] - rework servoMotor for adding speed and easing for movement

This commit is contained in:
Mathis 2023-12-08 09:45:07 +01:00
parent 027015b33b
commit 9a8a84a59e
4 changed files with 36 additions and 22 deletions

View File

@ -4,6 +4,7 @@
#include "Arduino.h" #include "Arduino.h"
#include "DolibarrClient.h" #include "DolibarrClient.h"
#include <M5Stack.h> #include <M5Stack.h>
#include "ServoMotorComponent.h"
class Program { class Program {
public: public:
@ -18,6 +19,7 @@ public:
void loop(); void loop();
private: private:
DolibarrClient *client; DolibarrClient *client;
ServoMotorComponent *servo;
}; };
#endif #endif

View File

@ -2,23 +2,25 @@
ServoMotorComponent::ServoMotorComponent(int PIN) { ServoMotorComponent::ServoMotorComponent(int PIN) {
this->PIN = PIN; this->PIN = PIN;
this->position = 0; this->position = 30;
this->speed = 100;
this->easing = 0.5;
this->myservo.attach(PIN); this->myservo.attach(PIN);
} }
void ServoMotorComponent::goLeft() { void ServoMotorComponent::goLeft() {
this->myservo.write(this->PIN, 0); this->myservo.write(this->PIN, 52, this->speed, this->easing);
this->position = 0; this->position = 0;
} }
void ServoMotorComponent::goRight() { void ServoMotorComponent::goRight() {
this->myservo.write(this->PIN, 180); this->myservo.write(this->PIN, 18, this->speed, this->easing);
this->position = 180; this->position = 180;
} }
void ServoMotorComponent::goMiddle() { void ServoMotorComponent::goMiddle() {
this->myservo.write(this->PIN, 90); this->myservo.write(this->PIN, 32, this->speed, this->easing);
this->position = 90; this->position = 90;
} }
@ -29,4 +31,20 @@ int ServoMotorComponent::getPosition() {
void ServoMotorComponent::setPin(int PIN) { void ServoMotorComponent::setPin(int PIN) {
this->PIN = PIN; this->PIN = PIN;
this->myservo.attach(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;
} }

View File

@ -13,10 +13,15 @@ public:
void goMiddle(); void goMiddle();
int getPosition(); int getPosition();
void setPin(int PIN); void setPin(int PIN);
void pause();
void setSpeed(int speed);
void setEasing(float easing);
private: private:
int PIN; int PIN;
int position; int position;
int speed;
float easing;
Servo myservo; Servo myservo;
}; };

View File

@ -2,28 +2,17 @@
#include "Arduino.h" #include "Arduino.h"
#include "DolibarrClient.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() { Program::Program() {
Serial.begin(MONITOR_SPEED); this->servo = new ServoMotorComponent(2);
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);
} }
void Program::loop() { void Program::loop() {
// this->servo->goLeft();
// delay(3000);
this->servo->goMiddle();
// delay(3000);
// this->servo->goRight();
// delay(3000);
} }