아두이노 나노 v3.0 이고, 아래의 셋팅으로 진행함
 
라이브러리 매니저에서 servo / arduino 를 설치하고
 
귀찮으니 D5/D6/D9/D10 옮겨가며 해보는걸로 하고, 일단은 날로 먹기 모드 ㅋㅋ
 
아래 코드를 대충 작성해서 넣어주면
#include <Servo.h>
Servo myservo[4];
String inputString = "";
bool stringComplete = false; 
unsigned char pwm_ch[4] = {5,6,9,10};
unsigned char pwm_val[4] = {127,127,127,127};
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Hello");
  
  inputString.reserve(200);
  for(int idx = 0;idx < 4;idx++)
  {
      myservo[idx].attach(pwm_ch[idx]);
      myservo[idx].write(pwm_val[idx]);
  }
}
void loop() {
  // put your main code here, to run repeatedly:
  if (stringComplete) {
    char data[64] = "";
    inputString.toCharArray(data, inputString.length());
    sscanf(data, "%d,%d,%d,%d\n",
      &(pwm_val[0]),
      &(pwm_val[1]),
      &(pwm_val[2]),
      &(pwm_val[3]));
    char res[64] = "";
    sprintf(res, "get %d %d %d %d\n", pwm_val[0], pwm_val[1], pwm_val[2], pwm_val[3]);
    Serial.print(res);
    Serial.print(inputString);
    // clear the string:
    inputString = "";
    stringComplete = false;
    for(int idx = 0;idx < 4;idx++)
    {
      if(pwm_val[idx] > 255) pwm_val[idx] = 255;
      if(pwm_val[idx] < 1) pwm_val[idx] = 1;
      myservo[idx].write(pwm_val[idx]); 
    }
  }
}
void serialEvent()
{
  while(Serial.available())
  {
    char inChar = (char)Serial.read();
    inputString += inChar;
    if (inChar == '\n')
    {
      stringComplete = true; 
    }
  }
} 
최초 구동시 Hello가 나오고
콤마로 4개의 값을 넣어주면 된다. 개별 범위는 0~255
[링크 : https://docs.arduino.cc/learn/electronics/servo-motors/ ]
 
그나저나 pinMode 설정과 analogWrite() 로는 정상적으로 작동하지 않네.. 머가 문제일까?
int ledPin = 9;      // LED connected to digital pin 9 pinMode OUTPUT analogWrite  
 
 
[링크 : https://support.arduino.cc/hc/en-us/articles/9350537961500-Use-PWM-output-with-Arduino ]
 
그래서 찾아보니
servo는 대부분 pwm이 아니라는 이야기. 아.. 그렇지! pwm이 아니지?!
[링크 : https://forum.arduino.cc/t/analogwrite-vs-servo-write/370486/3 ]
[링크 : https://forum.arduino.cc/t/servo-with-analogwrite/438505/7 ]