Skip to content

아두이노 로봇팔(robot arm) 소스 및 문제점 정리

 

 

소스의 본문에서 디지털 13번 핀의 입력값이 LOW 이어야 정상적으로 모터가 선택이 된다.

어쨋건 저항 4개를 달아 개별 작동이 되게 했다.

 

저항4래를 맘대로 조종할 수 있도록 스위치 문구는 뺄 것이다.

 

 

 

void loop() {

  if (digitalRead(switchPin) == LOW) { // 의아하다. 왜 high일 경우 버튼을 누르기도 전에 계속 모터가 번갈아가면서 선택되는데 low일때 버튼을 누르면 모터가 하나씩 선택될까?

 

  #include <Servo.h> //서보 라이브러리를 불러옵니다.

 

Servo servo1;

Servo servo2;

Servo servo3;

Servo servo4;

 

int potentiometerPin1 = 0;//가변저항기에 연결한 아날로그 핀의 번호를 설정합니다.

int potentiometerPin2 = 1;//가변저항기에 연결한 아날로그 핀의 번호를 설정합니다.

int potentiometerPin3 = 2;//가변저항기에 연결한 아날로그 핀의 번호를 설정합니다.

int potentiometerPin4 = 3;//가변저항기에 연결한 아날로그 핀의 번호를 설정합니다.

int switchPin = 12;

int buttonPresses = 0;

 

 

 

 

void setup() {

 

  Serial.begin(9600);

  Serial.println("hello arduino!");

 

  pinMode(switchPin, INPUT_PULLUP);

 

  pinMode(potentiometerPin1, INPUT);

  pinMode(potentiometerPin2, INPUT);

  pinMode(potentiometerPin3, INPUT);

  pinMode(potentiometerPin4, INPUT);

 

  servo1.attach(2); // 서보를 사용하는 핀으로 디지털 핀2번을 설정합니다.

  servo2.attach(3); // 서보를 사용하는 핀으로 디지털 핀2번을 설정합니다.

  servo3.attach(4); // 서보를 사용하는 핀으로 디지털 핀2번을 설정합니다.

  servo4.attach(5); // 서보를 사용하는 핀으로 디지털 핀2번을 설정합니다.

 

}

 

 

void loop() {

 

  if (digitalRead(switchPin) == LOW) { // 의아하다. 왜 high일 경우 버튼을 누르기도 전에 계속 모터가 번갈아가면서 선택되는데 low일때 버튼을 누르면 모터가 하나씩 선택될까?

 

    buttonPresses++;

 

    Serial.println("on");

    Serial.print ("버튼 수 = ");          // out to serial

    Serial.println(buttonPresses, DEC);

 

    delay(2000);

    delay(50);

  }

 

 

 

  if (buttonPresses == 1) {

    int value = analogRead(potentiometerPin1); //가변저항의 값을 읽어들입니다.

    int angle = map(value, 0, 1023, 1, 175); //읽어 들인 값을 0에서 179까지 변환 합니다.

    servo1.write(angle); //서보의 각도를 설정합니다.

 

    Serial.print("서보로봇1 각도=");

    Serial.print(angle);        //각도 값 출력

    delay(200); // 서보가 지정한 각도까지 움직이는 동안 대기

  }

 

 

 

  if (buttonPresses == 2) {

    int value = analogRead(potentiometerPin2); //가변저항의 값을 읽어들입니다.

    int angle = map(value, 0, 1023, 1, 175); //읽어 들인 값을 0에서 179까지 변환 합니다.

    servo2.write(angle); //서보의 각도를 설정합니다.

 

    Serial.print("서보로봇2 각도=");

    Serial.print(angle);        //각도 값 출력

    delay(200); // 서보가 지정한 각도까지 움직이는 동안 대기

  }

 

 

  if (buttonPresses == 3) {

    int value = analogRead(potentiometerPin3); //가변저항의 값을 읽어들입니다.

    int angle = map(value, 0, 1023, 1, 175); //읽어 들인 값을 0에서 179까지 변환 합니다.

    servo3.write(angle); //서보의 각도를 설정합니다.

 

    Serial.print("서보로봇3 각도=");

    Serial.print(angle);        //각도 값 출력

    delay(200); // 서보가 지정한 각도까지 움직이는 동안 대기

  }

 

 

 

  if (buttonPresses == 4) {

    int value = analogRead(potentiometerPin4); //가변저항의 값을 읽어들입니다.

    int angle = map(value, 0, 1023, 1, 175); //읽어 들인 값을 0에서 179까지 변환 합니다.

    servo4.write(angle); //서보의 각도를 설정합니다.

 

    Serial.print("서보로봇4 각도=");

    Serial.print(angle);        //각도 값 출력

    delay(200); // 서보가 지정한 각도까지 움직이는 동안 대기

  }

 

 

 

  if (buttonPresses == 5) {

    buttonPresses = 1;

  }

}

 

#아두이노 #로봇팔 #robot #arm #소스 #문제점 #정리

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소