SERVO.ino 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. Description: Use SERVO Module to control the rotation of 12-channel servo.
  3. */
  4. #include <Arduino.h>
  5. #include <M5Stack.h>
  6. #include <Wire.h>
  7. #define SERVO_ADDR 0x53
  8. void setup() {
  9. M5.begin(true, false, true);
  10. M5.Power.begin();
  11. M5.Lcd.setTextFont(4);
  12. M5.Lcd.setCursor(70, 100);
  13. M5.Lcd.print("Servo Example");
  14. Wire.begin(21, 22, 100000);
  15. // put your setup code here, to run once:
  16. }
  17. // addr 0x01 mean control the number 1 servo by us
  18. void Servo_write_us(uint8_t number, uint16_t us) {
  19. Wire.beginTransmission(SERVO_ADDR);
  20. Wire.write(0x00 | number);
  21. Wire.write(us & 0x00ff);
  22. Wire.write(us >> 8 & 0x00ff);
  23. Wire.endTransmission();
  24. }
  25. // addr 0x11 mean control the number 1 servo by angle
  26. void Servo_write_angle(uint8_t number, uint8_t angle) {
  27. Wire.beginTransmission(SERVO_ADDR);
  28. Wire.write(0x10 | number);
  29. Wire.write(angle);
  30. Wire.endTransmission();
  31. }
  32. void loop() {
  33. for(uint8_t i = 0; i < 12; i++){
  34. Servo_write_us(i, 700);
  35. // Servo_write_angle(i, 0);
  36. }
  37. delay(1000);
  38. for(uint8_t i = 0; i < 12; i++){
  39. Servo_write_us(i, 2300);
  40. // Servo_write_angle(i, 180);
  41. }
  42. delay(1000);
  43. }