기록/2015-2016

아두이노로 바이킹 만들기

jangsilverbaby 2021. 5. 19. 17:36

1. 아두이노 하드웨어

2. 아두이노 코드

 

#include <Servo.h>

 

Servo servo;

int servoPin= 9;

int angle;

int greenled = 8;

int redled = 7;

 

 void setup()

 {

   Serial.begin(9600);

   servo.attach(servoPin);

   while(!Serial);

   Serial.println("Servo motor");

   pinMode(greenled, OUTPUT);

   pinMode(redled, OUTPUT);

 }

 

void loop()

  for(angle=1;angle<90;angle=angle+10)

  {

    digitalWrite(greenled, HIGH); // 바이킹이 작동할 땐 초록불이 켜진다

    digitalWrite(redled, LOW); // 바이킹이 작동할 땐 빨간불이 꺼진다

    servo.write(90+angle);

    delay(570);

    servo.write(90-angle);

    delay(570);

  }

  delay(700);

  

  for(;angle>=0;angle=angle-10)

  {

    digitalWrite(greenled, HIGH); // 바이킹이 작동할 땐 초록불이 켜진다

    digitalWrite(redled, LOW); // 바이킹이 작동할 땐 빨간불이 꺼진다

    servo.write(90+angle);

    delay(570);

    servo.write(90-angle);

    delay(570);

  }

  digitalWrite(greenled, LOW); // 바이킹이 멈추면 초록불이 꺼진다

  digitalWrite(redled, HIGH); // 바이킹이 멈추면 빨간불이 켜진다.

  delay(5000); //내리는 시간 5초

}

 

3.아두이노 디자인(초기)

4.아두이노 디자인(최종)

5. 동작 영상

6.느낀점 & 배운점

바이킹을 만드는 건 쉬웠지만 버튼 누르면 작동하기, 파란불, 빨간불이 켜지게 하는 코드를 어떤 식으로 짜야할지 모르겠어서 여러 가지 시도를 해보았다.

버튼 누르면 작동하는 것은 서보모터와 버튼을 직렬 연결하여서 해보려고 했지만 그러면 서보모터가 힘이 없어져서 버튼을 따로 연결하여 코드를 짜보려고 하였다.

 

if(btnvalue == true)

 {

  for(angle=1;angle<90;angle=angle+10)

  {

    servo.write(90+angle);

    delay(570);

    servo.write(90-angle);

    delay(570);

   }

  }

이렇게 if 제어문을 사용하려고 안에 for 제어문을 넣었더니 원하는대로 작동이 되지 않았다. 나중에는 어떻게 해야 할지를 몰라서 그냥 90도일 때 멈추는 시간을 늘렸다.

 

 

바이킹이 작동할 때는 파란불 멈출 때는 빨간불이 켜지도록 하는것도 처음부터 딱 되지 않았다.

 

처음엔 for 제어문으로

for(angle=1; angle=90; digitalWrite(redled), HIGH))

 {

  delay(5000);

 }

이렇게 만들었더니 90도에서 멈추고 움직이지를 않았다.

그래서 생각한게 for 제어문이 끝나고 5초 동안 가만히 있는 시간에 빨간불이 켜지게 하면 되겠다고 생각해서

 }

  digitalWrite(greenled, LOW);

  digitalWrite(redled, HIGH);

  delay(5000);

}

이렇게 loop 함수를 끝냈더니 90도에서 빨간불이 켜졌다.

 

이게 지금 보면 쉽지만 처음에 여러 방법을 시도해보면서 실패하고 어떻게 해야할지 모르겠을 때는 그냥 포기하고 싶었다. 하지만 끈기를 가지고 고민하다보니까 갑자기 방법이 생겼고 결국 원하던 동작을 실현할 수 있었다.

 

'기록 > 2015-2016' 카테고리의 다른 글

로봇 동아리 활동  (0) 2021.05.19
전국 여고생 프로그래밍 경진대회  (0) 2021.05.19
MIT 앱인벤터로 만든 오늘의 메뉴 앱  (0) 2021.05.19