SERVO.ino 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. *******************************************************************************
  3. * Copyright (c) 2022 by M5Stack
  4. * Equipped with M5Core sample source code
  5. * 配套 M5Core 示例源代码
  6. * Visit the website for more
  7. information: https://docs.m5stack.com/en/module/servo
  8. * 获取更多资料请访问: https://docs.m5stack.com/zh_CN/module/servo
  9. *
  10. * Describe: SERVO.
  11. * Date: 2021/9/2
  12. *******************************************************************************
  13. Use SERVO Module to control the rotation of 12-channel servo.
  14. 使用 SERVO 模块控制 12 通道舵机的旋转。
  15. */
  16. #include <Arduino.h>
  17. #include <M5Stack.h>
  18. #include <Wire.h>
  19. #define SERVO_ADDR 0x53
  20. void setup() {
  21. M5.begin(true, false, true);
  22. M5.Power.begin();
  23. M5.Lcd.setTextFont(4);
  24. M5.Lcd.setCursor(70, 100);
  25. M5.Lcd.print("Servo Example");
  26. Wire.begin(21, 22, 100000UL);
  27. // addr 0x01 mean control the number 1 servo by us
  28. void Servo_write_us(uint8_t number, uint16_t us) {
  29. Wire.beginTransmission(SERVO_ADDR);
  30. Wire.write(0x00 | number);
  31. Wire.write(us & 0x00ff);
  32. Wire.write(us >> 8 & 0x00ff);
  33. Wire.endTransmission();
  34. }
  35. // addr 0x11 mean control the number 1 servo by angle
  36. void Servo_write_angle(uint8_t number, uint8_t angle) {
  37. Wire.beginTransmission(SERVO_ADDR);
  38. Wire.write(0x10 | number);
  39. Wire.write(angle);
  40. Wire.endTransmission();
  41. }
  42. void loop() {
  43. for (uint8_t i = 0; i < 12; i++) {
  44. Servo_write_us(i, 700);
  45. // Servo_write_angle(i, 0);
  46. }
  47. delay(1000);
  48. for (uint8_t i = 0; i < 12; i++) {
  49. Servo_write_us(i, 2300);
  50. // Servo_write_angle(i, 180);
  51. }
  52. delay(1000);
  53. }