• 검색 결과가 없습니다.

Software – Integrated Development Enviroment(IDE)

Integrated Development Enviroment(IDE)는 Arduino를 프로그래밍 할 수 있는 개발 프로 그램입니다. Arduino가 어떤 신호를 받았을 때 어떻게 움직여라, 혹은 일정 시간마다 신호 를 내보내라 등, Arduino를 조종하는 프로그램을 작성할 수 있습니다. 사용자는 Arduino가 수행하고자 하는 동작을 C언어 기반으로 작성하여 입력할 수 있습니다. 이 소프트웨어는 Arduino.cc에서 무료로 다운받을 수 있습니다.

그림. Arduino IDE

[Development example]

Hardware 와 Software를 이용하여 Arduino를 조종해 봅시다. 우리는 지금부터 Arduino를 사용하여 서보모터와 초음파센서를 제어할 것입니다. 아래는 제어하고자 하는 시스템의 전체 구성도 입니다.

- Arduino : Arduino는 Target system에 명령을 내리는 역할을 수행합니다.

- Breadboard : Breadboard는 각종 전선들을 쉽게 연결할 수 있는 보드입니다. 원래는 납땜 으로 전선을 연결해야 하지만, Breadboard는 그러한 작업없이 전선을 쉽게 연결하고 분리 할 수 있도록 도와줍니다.

- Target system : Target system은 제어하고자 하는 시스템입니다. 일반적으로 로봇의 경우 센서와 모터로 이루어져 있습니다. 이외에도, 모터를 이용하는 각종 제품, 엘리베이터, 믹 서기, 선풍기 등의 시스템이 있습니다.

그림. Arduino를 이용한 실험 구성

- Servo motor : 서보모터는 일정 각도 안에서 움직이는 모터입니다. Arduino를 이용하여 모터에 신호를 넣어주면 모터는 들어오는 신호에 맞는 각도로 움직입니다.

- Ultrasonic Sensor(초음파센서) : 초음파센서는 센서 앞쪽의 물체와의 거리를 측정할 수 있 습니다. Arduino는 초음파센서를 작동시켜 초음파를 발사한 뒤, 들어오는 신호를 받아서 거리를 읽어낼 수 있습니다.

그림. Target 시스템 구성

[제공되는 모듈 프로그래밍 및 간단한 함수 소개]

C언어라 함은 컴퓨터 언어로 사람과 컴퓨터가 소통을 하기 위한 언어라고 생각하면 됩니 다. 0과 1만 존재하는 디지털 세계에 사는 컴퓨터의 언어는 사람이 이해할 수 없으며, 반대 로 사람의 말을 컴퓨터가 이해할 수는 없습니다. 이때 C언어라는 하나의 통합된 언어체계를 사용하여 사람은 컴퓨터에게 명령을 할 수 있습니다. 사람이 C언어를 이용하여 프로그램을 작성하면, 컴퓨터는 맨 위의 줄부터 차례대로 명령을 수행합니다. C언어는 ‘좌항 = 우항’의 형태로 구성되어 있는데, 사람이 받아들이기에는 ‘좌항과 우항이 같다’는 의미의지만, 컴퓨터 에서는 ‘우항의 값을 좌항으로 넣어라’라는 명령으로 해석됩니다. 다음과 같은 예를 살펴봅 시다.

Ex)

int A, B, C;

B=3;

C=5;

A = B + C;

위의 코드를 실행하면 컴퓨터는 맨 처음 줄부터 명령을 수행하게 됩니다. 각 줄의 끝에는

‘;’ 기호를 보실 수 있는데요, 이 기호는 마침표와 같은 뜻으로, 명령의 끝이라는 뜻입니다.

int A, B, C; : 정수형 변수 A, B, C를 미리 선언합니다. 컴퓨터는 초기에 아무런 것도 알지 못 하기 때문에, 이러한 변수들이 존재한다는 것을 미리 알려줘야 합니다.

B = 3; : B라는 변수에 3이라는 숫자를 저장하라는 뜻입니다. 이후 B는 3을 의미합니다.

C = 5; : C라는 변수에 5라는 숫자를 저장하라는 뜻입니다. 이후 C는 5를 의미합니다.

A = B + C; : ‘B + C’를 수행한 후, 결과를 A에 저장하라는 의미입니다. 이 명령을 수행하

고 나면 A에는 8이 저장되게 됩니다.

자 이제 C언어를 사용하여 모터를 조종해 볼까요? 조종하고자 하는 시스템은 다음과 같 습니다.

그림. Target system 작동 모습

우리는 피카츄 형태의 인형의 꼬리에 서보모터를 달아서 동작하게 할 것입니다. 피카츄 인형의 앞에는 초음파센서가 부착되어 있습니다. 이 초음파센서는 앞쪽의 물체와의 거리를 측정합니다. 평소 피카츄의 꼬리는 쳐져 있지만, 앞쪽에 물체가 다가오게 되면 꼬리가 올라 가게 됩니다(마치 무언가 가까이 다가와서 깜짝 놀라는 것처럼 보이겠죠?). 따라서 Arduino 에는 다음과 같은 프로그램을 넣어주게 됩니다.

그림. Target system 작동 순서도

위와 같은 순서로 프로그램은 작동하게 되고, 초음파센서 앞의 물체와의 거리에 따라서 서보모터는 피카츄의 꼬리를 움직일 것입니다.

[사용된 프로그래밍의 실제]

위와 같은 순서도를 구현하기 위해서 실제 C언어로 프로그램은 어떻게 작성해야 할까요?

아래는 실제 Arduino에 들어간 프로그램입니다. 이 소스코트를 한번 살펴볼까요?

#include <Servo.h>

//서보모터를 구동하기 위한 헤더를 불러옴. 헤더는 사용자가 이용할 수 있도록 미리 작성된 함수입니다. 사용자는 필요에 따라서 각 종 헤더를 불러와서 이용할 수 있습니다.

Servo myservo;

//서보모터를 제어하기 위한 Servo라는 형태의 변수입니다.

const int EchoPin = 7;

//EchoPin 이라는 int 변수를 선언하고 7번 핀에 설정한다. 초음파센서를 연결한 Arduino 핀 을 의미합니다.

const int TrigPin = 8;

//TrigPin 이라는 int 변수를 선언하고 8번 핀에 설정한다. 초음파센서를 작동시키기 위한 핀 을 의미합니다. 자세한 내용은 초음파센서 원리를 참고하세요.

int val2;

//val2 라는 int 변수를 선언. 서보모터가 움직이는 각도 값을 저장합니다.

long duration, cm

//cm이라는 long 형 변수를 선언. 초음파센서로부터 읽어들인 값을 저장합니다.

void setup()

//작동을 위해 시스템 셋팅을 하는 코드입니다.

{

Serial.begin(9600);

//PC와 9600 bps/s 속도로 통신을 해라.

pinMode(EchoPin, INPUT);

//EchoPin으로 초음파센서 값을 받아라.

pinMode(TrigPin, OUTPUT);

//TrigPin에 초음파센서 발사 신호를 내보내라.

myservo.attach(9);

//서보모터는 9번 핀으로 조종한다.

}

void loop()

//실제 작동되는 코드입니다. 전원을 끄기 전까지 이 부분을 반복합니다.

{

digitalWrite(TrigPin, LOW);

// TrigPin에 신호를 정지 시켜라.

delayMicroseconds(2);

// 0.002초 대기하라.

digitalWrite(TrigPin, HIGH);

// TrigPin에 신호를 켜라.

delayMicroseconds(10);

// 0,01초 대기하라.

digitalWrite(TrigPin, LOW);

// TrigPin에 신호를 정지 시켜라.

delayMicroseconds(2); // 0.002초 대기하라.

duration = pulseIn(EchoPin, HIGH);

//dration이라는 변수에, EchoPin으로부터 들어오는 신호를 저장해라.

{

cm = microsecondsToCentimeters(duration);

// cm라는 변수는 duration 값을 microseconds 에서 centimeter로 변환 한 값을 저장 하라.

if (cm <4 ) // 만약 cm가 4보다 작다면 {

cm=4;

// cm는 4로 저장해라.

}

else if (cm >20)

// 만약 cm 가 20보다 크다면

{

cm=20;

// cm 는 20으로 저장해라.

}

val2 = map(cm, 4, 20, 0, 90);

// val2는 값에, cm 변수를 4~20으로 받아서 0~90의 범위로 맵핑해라.

myservo.write(val2);

// 서보모터를 val2 만큼 움직여라.

Serial.print(cm); // cm의 값을 시리얼 모니터에 출력한다.

Serial.print("cm");

// 시리얼 모니터에 cm 이라는 문자를 출력한다.

Serial.println();

// 시리얼 모니터에서 한 줄을 띄운다.

delay(50);

// 0.05초 대기하라.

} }

long microsecondsToCentimeters(long microseconds)

// long 타입의 변수로 microsecond의 값을 centimeter의 값으로 받는다.

{

return microseconds / 29 / 2;

// microseconds 값을 29로 나누고 2로 나눈다.

}

위 프로그램을 실행시키면, Arduino는 계속해서 void loop()안의 명령을 수행하게 됩니다.

동시에 사용자는 컴퓨터 통신으로 현재 초음파센서에 들어오는 값을 확인할 수가 있습니다.

내 꿈의 도우미 로봇!

(내 꿈 실현을 도와줄 로봇을 디자인으로 표현하기)

9~10 차시

중학교

[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교 교

[교사용 사용] 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용 사용]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

중학교 STEAM

내 꿈의 도우미 로봇!

(내 꿈 실현을 도와줄 로봇을 디자인으로 표현하기)

1. 주제 개요

본 차시는 축구선수가 꿈인 중학생이 열심히 훈련을 하지만 실력이 개선되지 않 아 좌절하고 힘들어 하는데, 그러한 상황을 알아챈 로봇 공학자인 아버지께서 훈련 을 도와줄 로봇을 만들어 아들의 꿈 실현을 돕는 상황을 제시하고 있다. 또한 자신 의 꿈을 실현하고자 할 때, 어려움을 자신의 힘으로 극복할 수 있는 부분도 있지만 그렇지 않은 부분에 대해서는 반드시 누군가의 도움을 받아야한다는 것을 알 수 있 도록 구성하였다.

본 수업에서는 자신의 꿈을 이루기 위해 필요한 로봇을 디자인하도록 구성하였다.

자신의 꿈과 관련하여 자신의 적성과 흥미를 알게 되고, SWOT분석을 통해 강점, 약점, 기회, 위기 등을 분석하여 보다 구체적으로 꿈에 대한 계획을 세울 수 있도록 제시하였다.

2. 학습 목표

○ 내용 목표

- 자신의 장점과 흥미 분야 발견을 통하여 자신의 진로를 탐색할 수 있다.

- 자신의 꿈을 실현하는데 필요한 노력과 능력을 분석할 수 있다.

- 꿈을 실현시키는데 도움을 줄 수 있는 로봇을 탐색해 볼 수 있다.

○ 과정 목표

- 자 신 의 꿈 에 대 해 알 고 , 자 신 의 꿈 의 실 현 을 도 와 줄 로 봇 과 관 련 된 타 이 포 그 래

피 제 작 함 으 로 써 성 취 감 을 느 낄 수 있 다 .

자기주도적 학습

 자신의 꿈을 실현하기 위한 과정을 스스로 탐색하고, 어떤 준비를 해야 하 는지 스스로 알아봄. 자신의 로봇 컨셉을 어떻게 표현하는 것이 좋은지 스 스로 생각하며 작품에 대한 연구를 할 것으로 기대됨

문제발견 및 정의

나의 꿈 실현을 도와주는 로봇을 등장시켜 다른 꿈을 가진 친구들에게 어떤 로봇이 필요한지 묻는 상황 제시

아이디어 발현

자신의 꿈의 실현을 위해 자신을 파악하고, 주변 환경 및 상황을 파악하여 로봇컨셉을 개발. 이러한 로봇 컨셉을 ‘타이포그래피’라는 형식으로 표현

학습 방법

꿈에 대한 막연한 생각이 아니라 객관적 검사와 분석을 통한 구체적인 진 로 설계, 타이포그래피라는 예술 영역에 대한 체험

과정, 활동 중심

 Flipped Learning을 이용한 각종 검사요령 및 검사결과 요약 설명, ‘폴포츠’

에 관련된 동영상을 제공하여 사전 지식을 쌓고, 스스로 SWOT분석을 하고 이러한 결과를 로봇 컨셉으로 이용하여 타이포그래피를 제작함

다양한 산출물

 자신의 꿈의 실현을 도와줄 로봇을 컨셉으로 한 다양한 타이포그래피 산출

협력 학습

학습에 참여하는 모든 인원이 가장 합리적 법률안 제정을 위하여 생산적 토론 학습을 통한 협력

3. STEAM 과목 요소

○ T:로봇 기능에 의한 작동 메커니즘 개발

○ A:자신의 꿈의 실현이라는 주제를 ‘타이포그래피’라는 방법으로 표현

4. STEAM 단계 요소

○ 상황제시

자신의 꿈을 이루기 위해서 필요한 사항에 대해 구체적으로 제시하고, 필요한 조 건을 충족시키기 위한 로봇을 디자인 해 보도록 하였다.

○ 창의적 설계

관련 문서