개요
온도가 높으면 빨간색으로, 온도가 낮으면 파란색으로, 보통이면 노란색으로 햄스터 로봇의 LED 불을 표시해 봅시다.
부품 연결
- 서미스터를 A5-1과 A5-2에 연결합니다.
서미스터는 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 1 킬로오옴(kΩ) 저항을 A5-3과 A5-4에 연결합니다.
저항은 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 서미스터를 종이컵에 닿게한 후 종이컵에 차가운 물과 뜨거운 물을 채우면서 햄스터 로봇의 양쪽 LED 색깔을 관찰합니다.
코드 작성
- 포트 A의 모드를 아날로그 입력(ADC)으로 설정합니다.
- 보통 상태에서 입력 A의 값은 125 ~ 130 정도의 값을 가집니다. (255의 중간 정도)
- 온도가 올라가면 입력 A의 값이 커지고, 온도가 내려가면 입력 A의 값이 작아집니다.
- 실험을 하기 전에 우선 보통 상태일 때, 컵의 온도가 뜨거울 때, 컵의 온도가 차가울 때 각각에 대해 입력 A의 값을 관찰합니다.
- 뜨거울 때와 보통일 때를 구분하기 위한 경계 값은 관찰된 두 개의 값(뜨거울 때, 보통일 때)의 중간 값으로 합니다.
- 차가울 때와 보통일 때를 구분하기 위한 경계 값은 관찰된 두 개의 값(차가울 때, 보통일 때)의 중간 값으로 합니다.
import org.roboid.runtime.*;
import org.roboid.hamster.*;
import org.roboid.robot.*;
Hamster hamster;
void setup() {
hamster = Hamster.create(this);
// 포트 A를 아날로그 입력으로 설정한다.
hamster.ioModeA(Hamster.IO_MODE_ANALOG_INPUT);
}
void draw() {
}
void run() {
int temperature;
while(true) {
temperature = hamster.inputA(); // 포트 A의 입력
println(temperature);
if(temperature > 135) { // 온도가 높으면
hamster.leds(Hamster.LED_RED); // 양쪽 LED를 빨간색으로 켠다.
} else if(temperature < 120) { // 온도가 낮으면
hamster.leds(Hamster.LED_BLUE); // 양쪽 LED를 파란색으로 켠다.
} else { // 온도가 중간이면
hamster.leds(Hamster.LED_YELLOW); // 양쪽 LED를 노란색으로 켠다.
}
delay(20); // 너무 빨리 반복하지 않도록 한다.
}
}
추가 활동
- 서미스터를 손으로 잡으면 햄스터 로봇이 앞으로 달려가고 손을 떼면 정지하도록 해봅시다.
- 포트 B에 빨간색 LED를 연결한 후 서미스터를 손으로 잡으면 빨간색 LED가 켜지고 손을 떼면 꺼지도록 해봅시다.
포트 B에 연결하는 방법
- 서미스터를 B5-1과 B5-2에 연결합니다.
서미스터는 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 1 킬로오옴(kΩ) 저항을 B5-3과 B5-4에 연결합니다.
저항은 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
목차
수업 자료 내려 받기
- 원본 그림 2017.01.16 버전 (34.7 MB)
햄스터 고급
- 행위 기반의 로봇 제어
- 경로 탐색
- 자리 바꾸기
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(
akaii@kw.ac.kr)에게 연락하세요.