无法配备和使用A2212(1000kv)电机与wemos d1 mini和30A ESC


#include <Servo.h>
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
Servo bldc;
double roll,pitch,yaw,thr;
char packet[255];
struct __attribute__((packed)) JoyStick {
double yaw;
double thr;
double pitch;
double roll;
int32_t mode;
double array[9]; 
};
#define WIFI_SSID "K.G.F - 2"
#define WIFI_PASS "assafkhan92786"
#define UDP_PORT 4210
//----------------------------------------
WiFiUDP UDP;
void setup() {
Serial.begin(115200); //115200
//-----------------------------
WiFi.begin(WIFI_SSID, WIFI_PASS);
Serial.print("Connecting to ");
Serial.print(WIFI_SSID);
while (WiFi.status() != WL_CONNECTED)
{
delay(100);
Serial.print(".");
}
// Connected to WiFi
Serial.println();
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());

// Begin listening to UDP port
UDP.begin(UDP_PORT);
Serial.print("Listening on UDP port ");
Serial.println(UDP_PORT);
//---------------------------- 
bldc.attach(D5,1000,2000);

}
void udp_rcv()
{
int packetSize = UDP.parsePacket();
JoyStick myJoystick; 
if (packetSize) {
//Serial.printf("Received %d bytesn", packetSize);
if (UDP.read(packet, packetSize) > 0) {                           
memcpy(&myJoystick, packet, packetSize);  //copy packet array to the a struct     
//Serial.print(myJoystick.roll,HEX);
yaw=myJoystick.yaw;
thr=myJoystick.thr;
pitch=myJoystick.pitch;
roll=myJoystick.roll;                    
}
}
}
void loop()
{
udp_rcv();
Serial.println(thr);// the received values are in range from 0 to 1023
bldc.writeMicroseconds(thr);
}

我想控制一个1000千伏无刷直流电机(A2212)使用esp8266 30 ESC,但我完全丢失,我无法臂电机和控制它,虽然我行业输入通过UDP从我的笔记本电脑,请指导我如何手臂ESC/电机,并控制它的速度使用esp8266 (wemos D1迷你)我也使用了d5 wemos_d1_mini d6销,所以请让我知道我可以使用其他别针。

这个解决方案对我来说很好,最后我弄清楚了,似乎很容易,你只需要发送最小油门等待2秒,然后发送最大油门(脉冲);臂架ESC现已校准。

#include <Servo.h>
// ------------------------------------------------------------------------
// Customize here pulse lengths as needed
#define MIN_PULSE_LENGTH 1000 // Minimum pulse length in µs
#define MAX_PULSE_LENGTH 2000 // Maximum pulse length in µs
// ---------------------------------------------------------------------------
Servo mot;
char data;
// ---------------------------------------------------------------------------
/**
* Initialisation routine
*/
void setup() {
Serial.begin(9600);
mot.attach(D5, MIN_PULSE_LENGTH, MAX_PULSE_LENGTH);
delay(5000);
//-------------------------------------
Serial.println("Sending minimum throttle");
mot.writeMicroseconds(MIN_PULSE_LENGTH);
delay(2500);
//-------------------------------------
Serial.println("Sending maximum throttle");
mot.writeMicroseconds(MAX_PULSE_LENGTH);
//-------------------------------------
}
void loop()
{
test();
}
void test()
{
for (int i = MIN_PULSE_LENGTH; i <= MAX_PULSE_LENGTH; i += 5) {
Serial.print("Pulse length = ");
Serial.println(i);

mot.writeMicroseconds(i);

delay(200);
}
Serial.println("STOP");
mot.writeMicroseconds(MIN_PULSE_LENGTH);
}

最新更新