/* Description: Use GoPLUS Module for four-channel servo test and three-channel ADC test. */ #include #include #include "GoPlus.h" GoPlus goPlus; #define X_LOCAL 40 #define Y_LOCAL 30 #define X_OFFSET 160 #define Y_OFFSET 23 // Print the header for a display screen void header(const char *string, uint16_t color) { M5.Lcd.fillScreen(color); M5.Lcd.setTextSize(1); M5.Lcd.setTextColor(TFT_MAGENTA, TFT_BLUE); M5.Lcd.fillRect(0, 0, 320, 30, TFT_BLUE); M5.Lcd.setTextDatum(TC_DATUM); M5.Lcd.drawString(string, 160, 3, 4); } void Motor(void){ goPlus.Motor_write_speed(MOTOR_NUM0, (uint8_t)0x80, 250); goPlus.Motor_write_speed(MOTOR_NUM1, (uint8_t)0x80, 250); delay(500); goPlus.Motor_write_speed(MOTOR_NUM0, (uint8_t)0x80, 0); goPlus.Motor_write_speed(MOTOR_NUM1, (uint8_t)0x00, 0); delay(500); goPlus.Motor_write_speed(MOTOR_NUM1, (uint8_t)0x00, 250); goPlus.Motor_write_speed(MOTOR_NUM0, (uint8_t)0x00, 250); delay(500); goPlus.Motor_write_speed(MOTOR_NUM0, (uint8_t)0x80, 0); goPlus.Motor_write_speed(MOTOR_NUM1, (uint8_t)0x00, 0); delay(500); } void setup() { // put your setup code here, to run once: M5.begin(); M5.Power.begin(); goPlus.begin(); header("G O P L U S",TFT_BLACK); M5.Lcd.setTextColor(TFT_MAGENTA, TFT_BLACK); M5.Lcd.setCursor(X_LOCAL, Y_LOCAL, 2); M5.Lcd.printf("Read analog\n"); M5.Lcd.setCursor(X_LOCAL+X_OFFSET, Y_LOCAL, 2); M5.Lcd.printf("Test Servo\n"); M5.Lcd.setCursor(X_OFFSET-60, Y_LOCAL+Y_OFFSET*5, 2); M5.Lcd.printf("Test MoTor\n"); M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); pinMode(13,OUTPUT); } uint8_t a = 20; uint16_t adInValue[6] = {0}; int led = 0; void loop() { // put your main code here, to run repeatedly: digitalWrite(13, led); goPlus.Servo_write_angle(SERVO_NUM0, a); delay(100); goPlus.Servo_write_angle(SERVO_NUM1 , a); delay(100); goPlus.Servo_write_angle(SERVO_NUM2 , a); delay(100); goPlus.Servo_write_angle(SERVO_NUM3 , a); delay(100); if (a > 180) { a = 10; } a = a + 170; M5.Lcd.fillRect(X_LOCAL+X_OFFSET, Y_LOCAL+Y_OFFSET, 100, 23, TFT_BLACK); M5.Lcd.setCursor(X_LOCAL+X_OFFSET, Y_LOCAL+Y_OFFSET, 2); M5.Lcd.printf("Angle:%d",a); adInValue[0] = goPlus.hub1_d_read_value(HUB_NUM0); delay(50); M5.Lcd.fillRect(X_LOCAL, Y_LOCAL+Y_OFFSET*1, 100, 23, TFT_BLACK); M5.Lcd.setCursor(X_LOCAL, Y_LOCAL+Y_OFFSET*1, 2); M5.Lcd.printf("A0:%d",adInValue[0]); adInValue[1] = goPlus.hub2_d_read_value(HUB_NUM0); delay(50); M5.Lcd.fillRect(X_LOCAL, Y_LOCAL+Y_OFFSET*2, 100, 23, TFT_BLACK); M5.Lcd.setCursor(X_LOCAL, Y_LOCAL+Y_OFFSET*2, 2); M5.Lcd.printf("A1:%d",adInValue[1]); adInValue[2] = goPlus.hub3_d_read_value(HUB_NUM0); delay(50); M5.Lcd.fillRect(X_LOCAL, Y_LOCAL+Y_OFFSET*3, 100, 23, TFT_BLACK); M5.Lcd.setCursor(X_LOCAL, Y_LOCAL+Y_OFFSET*3, 2); M5.Lcd.printf("A2:%d",adInValue[2]); led = !led; Motor(); }