개요
햄스터 로봇의 밝기 센서와 확장 키트의 포토레지스터를 사용하여 빛을 비추는 방향으로 햄스터 로봇을 움직여 봅시다.
부품 연결
- 포토레지스터를 A5-1과 A5-2에 연결합니다.
포토레지스터는 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 10 킬로오옴(kΩ) 저항을 A5-3과 A5-4에 연결합니다.
저항은 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
코드 작성
설명
- 포트 A의 모드를 아날로그 입력(ADC)으로 설정합니다.
- 보통 상태에서 입력 A의 값은 30 ~ 40 정도의 값을 가집니다. (주변 밝기에 따라 다름)
- 후레쉬 또는 후레쉬 앱으로 포토레지스터에 빛을 비추면 입력 A의 값이 커지고, 비추지 않으면 입력 A의 값이 작아집니다.
즉, 포토레지스터 주변이 밝아지면 입력 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() {
while(true) {
if(hamster.light() > 180) { // 햄스터 로봇의 밝기 센서 값이 크면
hamster.wheels(30); // 앞으로 이동한다.
} else if(hamster.inputA() > 100) { // 확장 보드의 CdS 센서 값이 크면
hamster.wheels(-30); // 뒤로 이동한다.
} else {
hamster.stop(); // 정지한다.
}
delay(20); // 너무 빨리 반복하지 않도록 한다.
}
}
파이썬
from roboid import *
hamster = Hamster()
# 포트 A를 아날로그 입력으로 설정한다.
hamster.io_mode_a(Hamster.IO_MODE_ANALOG_INPUT)
while True:
if hamster.light() > 180: # 햄스터 로봇의 밝기 센서 값이 크면
hamster.wheels(30) # 앞으로 이동한다.
elif hamster.input_a() > 100: # 확장 보드의 CdS 센서 값이 크면
hamster.wheels(-30) # 뒤로 이동한다.
else:
hamster.stop() # 정지한다.
wait(20) # 너무 빨리 반복하지 않도록 한다.
자바스크립트
var hamster = Hamster.create();
// 포트 A를 아날로그 입력으로 설정한다.
hamster.ioModeA(Hamster.IO_MODE_ANALOG_INPUT);
function execute() {
if(hamster.light() > 180) { // 햄스터 로봇의 밝기 센서 값이 크면
hamster.wheels(30); // 앞으로 이동한다.
} else if(hamster.inputA() > 100) { // 확장 보드의 CdS 센서 값이 크면
hamster.wheels(-30); // 뒤로 이동한다.
} else {
hamster.stop(); // 정지한다.
}
}
C 언어
#include "roboid.h"
int main(int argc, char *argv[]) {
hamster_create();
// 포트 A를 아날로그 입력으로 설정한다.
hamster_io_mode_a("analog input");
while(1) {
if(hamster_light() > 180) { // 햄스터 로봇의 밝기 센서 값이 크면
hamster_wheels(30, 30); // 앞으로 이동한다.
} else if(hamster_input_a() > 100) { // 확장 보드의 CdS 센서 값이 크면
hamster_wheels(-30, -30); // 뒤로 이동한다.
} else {
hamster_stop(); // 정지한다.
}
wait(20); // 너무 빨리 반복하지 않도록 한다.
}
return 0;
}
자바 언어
import org.roboid.hamster.Hamster;
import org.roboid.runtime.Runner;
public class Controller {
public static void main(String[] args) {
Hamster hamster = new Hamster();
// 포트 A를 아날로그 입력으로 설정한다.
hamster.ioModeA(Hamster.IO_MODE_ANALOG_INPUT);
while(true) {
if(hamster.light() > 180) { // 햄스터 로봇의 밝기 센서 값이 크면
hamster.wheels(30, 30); // 앞으로 이동한다.
} else if(hamster.inputA() > 100) { // 확장 보드의 CdS 센서 값이 크면
hamster.wheels(-30, -30); // 뒤로 이동한다.
} else {
hamster.stop(); // 정지한다.
}
Runner.wait(20); // 너무 빨리 반복하지 않도록 한다.
}
}
}
추가 활동
- 포토레지스터를 사용하여 햄스터 로봇이 어두운 곳에 들어가면 무서워서 비명을 지르도록(삐 소리를 내도록) 해봅시다.
- 포트 B에 빨간색 LED를 연결한 후 포토레지스터를 손으로 가리면(어두워지면) 빨간색 LED가 켜지고 손을 치우면 꺼지도록 해봅시다.
포트 B에 연결하는 방법
- 포토레지스터를 B5-1과 B5-2에 연결합니다.
포토레지스터는 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
- 10 킬로오옴(kΩ) 저항을 B5-3과 B5-4에 연결합니다.
저항은 방향성이 없기 때문에 방향을 맞추어 꽂을 필요는 없습니다.
목차
Copyright 로봇SW교육원 All rights reserved.
어려운 일이 있으면 광운대학교 로봇학부 박광현 교수(
akaii@kw.ac.kr)에게 연락하세요.