개요
LED 두 개를 연결하고 햄스터 로봇을 좌우로 기울이면 기울어진 쪽의 LED가 켜지도록 해봅시다.
부품 연결
- 220 오옴(Ω) 저항을 A4-5와 A4-6에 연결합니다.
- 빨간색 LED의 양극(+, 다리가 긴 쪽)을 A4-7에, 음극(-, 다리가 짧은 쪽)을 A4-8에 연결합니다.
- 또 다른 220 오옴(Ω) 저항을 B4-5와 B4-6에 연결합니다.
- 초록색 LED의 양극(+, 다리가 긴 쪽)을 B4-7에, 음극(-, 다리가 짧은 쪽)을 B4-8에 연결합니다.
코드 작성
설명
- 포트 A와 포트 B의 모드를 디지털 출력으로 설정합니다.
- 출력 A의 값이 1이면 빨간색 LED가 켜지고, 0이면 꺼집니다.
- 출력 B의 값이 1이면 초록색 LED가 켜지고, 0이면 꺼집니다.
스크래치
엔트리
파이썬
from roboid.hamster import *
robot = Hamster()
robot.write(Hamster.IO_MODE_A, Hamster.IO_MODE_DO)
robot.write(Hamster.IO_MODE_B, Hamster.IO_MODE_DO)
while True:
if robot.read(Hamster.ACCELERATION, 1) > 10000:
robot.write(Hamster.OUTPUT_A, 1)
else:
robot.write(Hamster.OUTPUT_A, 0)
if robot.read(Hamster.ACCELERATION, 1) < -10000:
robot.write(Hamster.OUTPUT_B, 1)
else:
robot.write(Hamster.OUTPUT_B, 0)
자바스크립트
var hamster = Hamster.create();
hamster.ioModeA(Hamster.IO_MODE_DIGITAL_OUTPUT);
hamster.ioModeB(Hamster.IO_MODE_DIGITAL_OUTPUT);
function execute() {
if(hamster.accelerationY() > 10000) {
hamster.outputA(1);
} else {
hamster.outputA(0);
}
if(hamster.accelerationY() < -10000) {
hamster.outputB(1);
} else {
hamster.outputB(0);
}
}
C 언어
#include "hamster.h"
int main(int argc, char *argv[]) {
hamster_create();
hamster_write(HAMSTER_IO_MODE_A, HAMSTER_IO_MODE_DO);
hamster_write(HAMSTER_IO_MODE_B, HAMSTER_IO_MODE_DO);
while(1) {
if(hamster_read_at(HAMSTER_ACCELERATION, 1) > 10000)
hamster_write(HAMSTER_OUTPUT_A, 1);
else
hamster_write(HAMSTER_OUTPUT_A, 0);
if(hamster_read_at(HAMSTER_ACCELERATION, 1) < -10000)
hamster_write(HAMSTER_OUTPUT_B, 1);
else
hamster_write(HAMSTER_OUTPUT_B, 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_DO);
robot.write(Hamster.IO_MODE_B, Hamster.IO_MODE_DO);
while(true) {
if(robot.read(Hamster.ACCELERATION, 1) > 10000)
robot.write(Hamster.OUTPUT_A, 1);
else
robot.write(Hamster.OUTPUT_A, 0);
if(robot.read(Hamster.ACCELERATION, 1) < -10000)
robot.write(Hamster.OUTPUT_B, 1);
else
robot.write(Hamster.OUTPUT_B, 0);
}
}
}
추가 활동
- 햄스터 로봇의 앞면에 있는 왼쪽/오른쪽 근접 센서를 사용하여 손을 가져간 쪽의 LED가 켜지도록 해봅시다.
- 흰색 종이 위에 검은색 선을 굵게 긋고 햄스터 로봇이 달려가게 한 후, 햄스터 로봇의 왼쪽/오른쪽 바닥 센서가 검은색 선을 만나면 해당 방향의 LED가 켜지도록 해봅시다.
- LED 두 개 모두 끄기, 초록색 LED만 켜기, 빨간색 LED만 켜기, LED 두 개 모두 켜기 순서대로 하여 숫자 0, 1, 2, 3을 2진수로 표현해 봅시다.
- 0 ~ 3까지의 숫자를 무작위로(난수) 얻어서 빨간색 LED와 초록색 LED로 2진수를 표현합니다. 이를 일정 시간마다 계속 반복하다가 햄스터 로봇의 앞에 손을 가져가면 멈추는 제비 뽑기(또는 주사위)를 만들어 봅시다.
목차
Copyright Robot Software Education Institute. All rights reserved.
Please contact prof. Kwang-Hyun Park (
akaii@kw.ac.kr) if you have any problem.