-
버튼과 눌림에 따라 서보 모터의 각도 조절하기(추가로 LED까지)Arduino/서보 모터(Servo motor) 2020. 10. 28. 19:05
서보 모터의 연결은 아래를 보도록 하자.
designatedroom87.tistory.com/247
버튼은 풀업 저항으로 연결을 한다.
두 선만 있으면 된다. 파란선은 GND에 연결되고, 초록색 선은 아두이노의 13번핀에 연결된다.
아래의 예제는 버튼이 한 번씩 누를 때마다 서보 모터의 각도가 0도 혹은 180도로 설정하는 예제이다.
소스 코드
#include <Servo.h> Servo servo; void setup() { // put your setup code here, to run once: pinMode(13,INPUT_PULLUP); // 버튼을 13번핀으로 연결 Serial.begin(9600); servo.attach(6); // 6번핀을 서보 모터와 연결 servo.write(0); // 서보 모터 초기화 } bool buttonPressed = false; // 버튼이 눌려진 상태 bool servoState = false; // 서보 모터의 상태에 따라 각도를 0도 혹은 180도로 설정 void loop() { Serial.println("버튼이 동작하지 않은 상태"); // 버튼이 눌러졌으면 if (!digitalRead(13)) { buttonPressed = true; // true 상태로 변경 while (buttonPressed) { Serial.println("버튼이 동작하는 상태"); // 버튼이 눌려진 상태에서 떼어지면 while 루프를 빠져나옴. if (digitalRead(13)) {buttonPressed = false;} } // 실행할 코드를 삽입 if (servoState) { servo.write(0); servoState = false; } else { servo.write(180); servoState = true; } } delay(100); }
아래는 추가로 LED를 연결하자.
서보 모터가 0도 혹은 180도가 될 때 LED를 켜거나 끄도록 만들자.
LED는 4번핀과 연결하고, 저항은 220옴을 쓴다.
소스 코드
#include <Servo.h> Servo servo; void setup() { // put your setup code here, to run once: pinMode(13,INPUT_PULLUP); // 버튼을 13번핀으로 연결 Serial.begin(9600); servo.attach(6); servo.write(0); pinMode(4,OUTPUT); // LED를 4번핀으로 연결 digitalWrite(4,LOW); // LED 초기화 } bool buttonPressed = false; // 버튼이 눌려진 상태 bool servoState = false; void loop() { Serial.println("버튼이 동작하지 않은 상태"); // 버튼이 눌러졌으면 if (!digitalRead(13)) { buttonPressed = true; // true 상태로 변경 while (buttonPressed) { Serial.println("버튼이 동작하는 상태"); // 버튼이 눌려진 상태에서 떼지면 if (digitalRead(13)) {buttonPressed = false;} } // 실행할 코드를 삽입 if (servoState) { servo.write(0); servoState = false; digitalWrite(4,LOW); // LED Off } else { servo.write(180); servoState = true; digitalWrite(4,HIGH); // LED On } } delay(100); }
'Arduino > 서보 모터(Servo motor)' 카테고리의 다른 글
포텐시오미터의 입력 값에 따라 서보 모터의 각도 조절하기 (0) 2020.10.28 서보 모터의 기본적인 연결 및 동작 (0) 2020.10.28