M5core 12 channel Server Module not work.
-
Hi Gents,
i have a Problem with my Servo module. I buy the M5Core 12 channel Servo modul, and connect my servo on Port 0 from the Modul, but the Servo not work.
I have a running example for the Arduino, which works well with the Servo. I think the problem is my logic to move the code from Arduino Uno to M5Core 12 Channel Servo modul.
That is working with Arduino Uno:
#include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX void setup() { Serial.begin(9600); mySerial.begin(115200); Serial.println("start"); } void servo(char ServoId, char Mode, char Degrees, char Speed) { // Build checksum; int sum = ServoId + Mode + Degrees + Speed; char zero = 0; while (sum > 255) { sum -= 255; } //Head (Preamble) mySerial.write(0xFA); // Byte 1: Preamble; mySerial.write(0xAF); // Byte 2: Preamble; //Data mySerial.write(ServoId); // Byte 3: ServoID (See label of servo) mySerial.write(Mode); // Byte 4: Command; for âgo to commandâ we have = 0x01; we will try to find some other commands shortly mySerial.write(Degrees); // Byte 5: position = 120 + desired position in degrees; mySerial.write(Speed); // Byte 6: duration = duration in ms / 20 mySerial.write(zero); // Byte 7: 0x00 (? we donât know what this is yet) mySerial.write(zero); // Byte 8: 0x01 (? we donât know what this is yet) //Check & End mySerial.write(sum); // checksum = sum(byte 3 through 8) mod 256 mySerial.write(0xED); // closure = 0xED (from âENDâ?) } void loop() { servo(16, 1, 45, 40); delay(2000); servo(16, 1, 0, 10); delay(2000); }And here i try move my code to M5Stack with 12 channel Servo Modul, which are not work on Port 0. Have any a idea ?
#include <Arduino.h> #include <M5Stack.h> #include <Wire.h> #define SERVO_ADDR 0x53 void setup() { M5.begin(true, false, true); M5.Power.begin(); M5.Lcd.setTextFont(4); M5.Lcd.setCursor(70, 100); M5.Lcd.print("Servo Example"); Wire.begin(21, 22, 115200); } void servo(char ServoId, char Mode, char Degrees, char Speed) { Wire.beginTransmission(SERVO_ADDR); Wire.write(0x00); // Build checksum; int sum = ServoId + Mode + Degrees + Speed; char zero = 0; while (sum > 255) { sum -= 255; } //Head (Preamble) Wire.write(0xFA); // Byte 1: Preamble; Wire.write(0xAF); // Byte 2: Preamble; Wire.write(ServoId); // Byte 3: ServoID (See label of servo) Wire.write(Mode); // Byte 4: Command; for âgo to commandâ we have = 0x01; we will try to find some other commands shortly Wire.write(Degrees); // Byte 5: position = 120 + desired position in degrees; Wire.write(Speed); // Byte 6: duration = duration in ms / 20 Wire.write(zero); // Byte 7: 0x00 (? we donât know what this is yet) Wire.write(zero); // Byte 8: 0x01 (? we donât know what this is yet) Wire.write(sum); // checksum = sum(byte 3 through 8) mod 256 Wire.write(0xED); // closure = 0xED (from âENDâ?) Wire.endTransmission(); } void loop() { servo(16, 1, 45, 40); delay(2000); servo(16, 1, 0, 10); delay(2000); }Can anyone help me, please... ?
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better đ
Register Login