개요
온도가 높으면 빨간색으로, 온도가 낮으면 파란색으로, 보통이면 노란색으로 햄스터 로봇의 LED 불을 표시해 봅시다.
부품 연결
- 서미스터를 A5-1과 A5-2에 연결합니다.
서미스터는 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 1 킬로오옴(kΩ) 저항을 A5-3과 A5-4에 연결합니다.
저항은 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 서미스터를 종이컵에 닿게한 후 종이컵에 차가운 물과 뜨거운 물을 채우면서 햄스터 로봇의 양쪽 LED 색깔을 관찰합니다.
코드 작성
- 포트 A의 모드를 아날로그 입력(ADC)으로 설정합니다.
- 보통 상태에서 입력 A의 값은 125 ~ 130 정도의 값을 가집니다. (255의 중간 정도)
- 온도가 올라가면 입력 A의 값이 커지고, 온도가 내려가면 입력 A의 값이 작아집니다.
- 실험을 하기 전에 우선 보통 상태일 때, 컵의 온도가 뜨거울 때, 컵의 온도가 차가울 때 각각에 대해 입력 A의 값을 관찰합니다.
- 뜨거울 때와 보통일 때를 구분하기 위한 경계 값은 관찰된 두 개의 값(뜨거울 때, 보통일 때)의 중간 값으로 합니다.
- 차가울 때와 보통일 때를 구분하기 위한 경계 값은 관찰된 두 개의 값(차가울 때, 보통일 때)의 중간 값으로 합니다.
#include <stdio.h>
#include "roboid.h"
int main(int argc, char *argv[]) {
int temperature;
hamster_create();
// 포트 A를 아날로그 입력으로 설정한다.
hamster_io_mode_a("analog input");
while(1) {
temperature = hamster_input_a(); // 포트 A의 입력
printf("%d\n", temperature);
if(temperature > 135) { // 온도가 높으면
hamster_leds("red", "red"); // 양쪽 LED를 빨간색으로 켠다.
} else if(temperature < 120) { // 온도가 낮으면
hamster_leds("blue", "blue"); // 양쪽 LED를 파란색으로 켠다.
} else { // 온도가 중간이면
hamster_leds("yellow", "yellow"); // 양쪽 LED를 노란색으로 켠다.
}
wait(20); // 너무 빨리 반복하지 않도록 한다.
}
return 0;
}
추가 활동
- 서미스터를 손으로 잡으면 햄스터 로봇이 앞으로 달려가고 손을 떼면 정지하도록 해봅시다.
- 포트 B에 빨간색 LED를 연결한 후 서미스터를 손으로 잡으면 빨간색 LED가 켜지고 손을 떼면 꺼지도록 해봅시다.
포트 B에 연결하는 방법
- 서미스터를 B5-1과 B5-2에 연결합니다.
서미스터는 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 1 킬로오옴(kΩ) 저항을 B5-3과 B5-4에 연결합니다.
저항은 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
목차
고급
- 행위 기반의 로봇 제어
- 경로 탐색
- 자리 바꾸기
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(
akaii@kw.ac.kr)에게 연락하세요.