개요
햄스터 로봇의 밝기 센서와 확장 키트의 포토레지스터를 사용하여 빛을 비추는 방향으로 햄스터 로봇을 움직여 봅시다.
부품 연결
- 포토레지스터를 A5-1과 A5-2에 연결합니다.
포토레지스터는 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 10 킬로오옴(kΩ) 저항을 A5-3과 A5-4에 연결합니다.
저항은 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
코드 작성
설명
- 포트 A의 모드를 아날로그 입력(ADC)으로 설정합니다.
- 보통 상태에서 입력 A의 값은 30 ~ 40 정도의 값을 가집니다. (주변 밝기에 따라 다름)
- 후레쉬 또는 후레쉬 앱으로 포토레지스터에 빛을 비추면 입력 A의 값이 커지고, 비추지 않으면 입력 A의 값이 작아집니다.
즉, 포토레지스터 주변이 밝아지면 입력 A의 값이 커지고, 어두워지면 입력 A의 값이 작아집니다.
- 실험을 하기 전에 우선 보통 상태일 때와 포토레지스터에 후레쉬 빛을 비추었을 때 각각에 대해 입력 A의 값을 관찰합니다.
- 또한, 햄스터 로봇의 밝기 센서에 대해서도 보통 상태일 때와 후레쉬 빛을 비추었을 때 각각에 대해 밝기 값을 관찰합니다.
- 햄스터 로봇의 밝기 센서는 앞면의 동그란 구멍 속에 들어 있습니다.
- 햄스터 로봇의 밝기 센서에 빛을 비추면 앞으로 이동하고, 확장 보드의 포토레지스터에 빛을 비추면 뒤로 이동하도록 합시다.
스크래치
엔트리
파이썬
from roboid.hamster import *
robot = Hamster()
robot.write(Hamster.IO_MODE_A, Hamster.IO_MODE_ADC)
while True:
if robot.read(Hamster.LIGHT) > 180:
robot.write(Hamster.LEFT_WHEEL, 30)
robot.write(Hamster.RIGHT_WHEEL, 30)
elif robot.read(Hamster.INPUT_A) > 180:
robot.write(Hamster.LEFT_WHEEL, -30)
robot.write(Hamster.RIGHT_WHEEL, -30)
else:
robot.write(Hamster.LEFT_WHEEL, 0)
robot.write(Hamster.RIGHT_WHEEL, 0)
자바스크립트
var hamster = Hamster.create();
hamster.ioModeA(Hamster.IO_MODE_ANALOG_INPUT);
function execute() {
if(hamster.light() > 180) {
hamster.wheels(30, 30);
} else if(hamster.inputA() > 100) {
hamster.wheels(-30, -30);
} else {
hamster.wheels(0, 0);
}
}
C 언어
#include "hamster.h"
int main(int argc, char *argv[]) {
hamster_create();
hamster_write(HAMSTER_IO_MODE_A, HAMSTER_IO_MODE_ADC);
while(1) {
if(hamster_read(HAMSTER_LIGHT) > 180) {
hamster_write(HAMSTER_LEFT_WHEEL, 30);
hamster_write(HAMSTER_RIGHT_WHEEL, 30);
} else if(hamster_read(HAMSTER_INPUT_A) > 180) {
hamster_write(HAMSTER_LEFT_WHEEL, -30);
hamster_write(HAMSTER_RIGHT_WHEEL, -30);
} else {
hamster_write(HAMSTER_LEFT_WHEEL, 0);
hamster_write(HAMSTER_RIGHT_WHEEL, 0);
}
}
return 0;
}
자바
import roboid.hamster.Hamster;
public class Test {
public static void main(String[] args) {
Hamster robot = new Hamster();
robot.write(Hamster.IO_MODE_A, Hamster.IO_MODE_ADC);
while(true) {
if(robot.read(Hamster.LIGHT) > 180) {
robot.write(Hamster.LEFT_WHEEL, 30);
robot.write(Hamster.RIGHT_WHEEL, 30);
} else if(robot.read(Hamster.INPUT_A) > 180) {
robot.write(Hamster.LEFT_WHEEL, -30);
robot.write(Hamster.RIGHT_WHEEL, -30);
} else {
robot.write(Hamster.LEFT_WHEEL, 0);
robot.write(Hamster.RIGHT_WHEEL, 0);
}
}
}
}
추가 활동
- 포토레지스터를 사용하여 햄스터 로봇이 어두운 곳에 들어가면 무서워서 비명을 지르도록(삐 소리를 내도록) 해봅시다.
- 포트 B에 빨간색 LED를 연결한 후 포토레지스터를 손으로 가리면(어두워지면) 빨간색 LED가 켜지고 손을 치우면 꺼지도록 해봅시다.
포트 B에 연결하는 방법
- 포토레지스터를 B5-1과 B5-2에 연결합니다.
포토레지스터는 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 10 킬로오옴(kΩ) 저항을 B5-3과 B5-4에 연결합니다.
저항은 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
목차
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (
akaii@kw.ac.kr) if you have any problem.