아두이노 나노 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 int analogPin = A0; // potentiometer connected to analog pin A0 int val = 0; // variable to store the read value void setup() { pinMode(ledPin, OUTPUT); // sets the pin as output } void loop() { val = analogRead(analogPin); // read the input pin analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255 } |
[링크 : 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]
'embeded > arduino(genuino)' 카테고리의 다른 글
아두이노 시리얼 이벤트 핸들러 (0) | 2025.10.09 |
---|---|
퀄컴 아두이노 인수 (0) | 2025.10.08 |
아두이노 sd 카드 (0) | 2025.08.24 |
skt-444 콘덴서 마이크 모듈 분해 (0) | 2025.08.07 |
HW-504 이상해.. (0) | 2025.08.02 |