//RobotControl.ino
//copyright 2022 https://robot-creation-diary.com/
//データサイズを24->48に拡大
#include <Wire.h> // ライブラリのインクルード
#include <Adafruit_PWMServoDriver.h>
#include "ServoSupport.h"
CServoSupport gServoSupport;
unsigned long g_time_data;
void setup() {
Serial.begin( 115200 ); // シリアル通信を初期化する。通信速度は9600bps
g_time_data = millis();
gServoSupport.SetSerialDataSize(52);
Serial.println( "Servo Controler" ); // 最初に1回だけメッセージを表示する
gServoSupport.SetAllWeakness();
}
void loop() {
unsigned char key; // 受信データを格納するchar型の変数
int i;
// 受信データがあった時だけ、処理を行う
if ( Serial.available() ) { // 受信データがあるか?
key = Serial.read();
Serial.write( key ); // 1文字送信。受信データをそのまま送り返す。
Serial.print(":");
switch (gServoSupport.SetRecievedData(key)){
case 1:
Serial.println( "Start." );
break;
case 20:
Serial.println( "sucsessd." );
Serial.print( gServoSupport.GetRecievedDataSize(),DEC);
gServoSupport.SetSerovoData();
g_time_data = millis();
break;
case 21:
Serial.println( "GetIndexData Out Of Range." );
Serial.print( gServoSupport.GetRecievedDataSize(),DEC);
break;
case 22:
Serial.println( "AddData Out Of Range." );
break;
case 23:
Serial.println( "SetDataPosition Out Of Range." );
break;
case 24:
Serial.println( "CheckError Data is small.");
Serial.print( gServoSupport.GetRecievedDataSize(),DEC);
break;
case 25:
Serial.println( "CheckError Deta size Error." );
Serial.print( gServoSupport.GetRecievedDataSize(),DEC);
break;
case 26:
Serial.println( "CheckError Start Flag Error." );
break;
case 27:
Serial.println( "CheckError End Flag Error." );
break;
case 28:
Serial.println( "__CheckChecksum Data is small." );
break;
case 29:
Serial.println( "__CheckChecksum Checksum Error." );
break;
default:
break;
}
}else{
if (50 < millis() - g_time_data){
//Serial.println( "Serial Not Available." );
g_time_data = millis();
delay(1);
}
}
if (50 < millis() - g_time_data){
//Serial.println( "Serial Not Available." );
g_time_data = millis();
//gServoSupport.SetSerovoData();
}else{
}
}