이번 학기 희수는 학급의 1인 1역에서 복도를 청소하는 역할을 맡았다. 청소용 빗자루를 이용하여 청소를 하고 있는데, 먼지가 날리고 모아 놓은 쓰레기를 쓰레받기로 담아야 하는 번거로움이 있었다. 매일 하는 청소에 회의감에 빠진 희수는 ‘이렇게 단순한 일을 좀 더 쉽게 할 수 있는 방법이 무엇일까’ 라고 생각하다가 문득 집에 있는 무선 청소기와 예전에 뉴스에서 보았던 자 율주행 자동차가 떠올랐다. 즉, 자율주행 자동차에 무선 청소기를 달아 스스로 복도를 왕복 주행하면, 청소를 쉽게 할 수 있다는 아이디어였다. 여기서 자율주행 자동차는 무선 청소기의 윗부분을 실을 수 있는 작은 사이즈의 자동차이다. 여러분이 희수라고 가정해 보고 이 문제를 해결할 수 있는 방법을 탐색해 보자.
주어진 재료를 이용하여 ‘ㄹ’자 코스를 왕복하는 자동차를 제작한다.
제작할 자동차의 외관은 자율적으로 구성한다.
‘ㄹ’자 코스의 보다 구체적인 주행 방법 및 제한 시간은 체험 당일 공지한다.
프로그래밍 방법은 ‘step 5. 프로그래밍 방법 탐색하기’에서 소개된 방법에서 자유롭게 선택할 수 있으나, 제한된 시간 내에 프로그래밍을 완성한다.
#define A1 2
#define A2 3
#define B1 11
#define B2 12
void setup() {
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(B1, OUTPUT);
pinMode(B2, OUTPUT);
digitalWrite(A1, 1);
digitalWrite(A2, 0);
digitalWrite(B1, 1);
digitalWrite(B2, 0);
delay(1000);
digitalWrite(A1, 1);
digitalWrite(A2, 0);
digitalWrite(B1, 0);
digitalWrite(B2, 1);
delay(700);
digitalWrite(A1, 1);
digitalWrite(A2, 0);
digitalWrite(B1, 1);
digitalWrite(B2, 0);
delay(1000);
digitalWrite(A1, 0);
digitalWrite(A2, 0);
digitalWrite(B1, 0);
digitalWrite(B2, 0);
}
void loop() {
}
#define A1 2
#define A2 3
#define B1 11
#define B2 12
void forward() {
digitalWrite(A1, 1);
digitalWrite(A2, 0);
digitalWrite(B1, 1);
digitalWrite(B2, 0);
delay(1000);
}
void backward() {
digitalWrite(A1, 0);
digitalWrite(A2, 1);
digitalWrite(B1, 0);
digitalWrite(B2, 1);
delay(1000);
}
void left() {
digitalWrite(A1, 1);
digitalWrite(A2, 0);
digitalWrite(B1, 0);
digitalWrite(B2, 1);
delay(700);
}
void right() {
digitalWrite(A1, 0);
digitalWrite(A2, 1);
digitalWrite(B1, 1);
digitalWrite(B2, 0);
delay(700);
}
void stop2() {
digitalWrite(A1, 0);
digitalWrite(A2, 0);
digitalWrite(B1, 0);
digitalWrite(B2, 0);
}
void setup() {
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(B1, OUTPUT);
pinMode(B2, OUTPUT);
forward();
left();
forward();
stop2();
}
void loop() {
}
#define A1 2
#define A2 3
#define B1 11
#define B2 12
void forward(int a) {
digitalWrite(A1, 1);
digitalWrite(A2, 0);
digitalWrite(B1, 1);
digitalWrite(B2, 0);
delay(a);
}
void backward(int b) {
digitalWrite(A1, 0);
digitalWrite(A2, 1);
digitalWrite(B1, 0);
digitalWrite(B2, 1);
delay(b);
}
void left(int c) {
digitalWrite(A1, 1);
digitalWrite(A2, 0);
digitalWrite(B1, 0);
digitalWrite(B2, 1);
delay(c);
}
void right(int d) {
digitalWrite(A1, 0);
digitalWrite(A2, 1);
digitalWrite(B1, 1);
digitalWrite(B2, 0);
delay(d);
}
void stop2() {
digitalWrite(A1, 0);
digitalWrite(A2, 0);
digitalWrite(B1, 0);
digitalWrite(B2, 0);
}
void setup() {
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(B1, OUTPUT);
pinMode(B2, OUTPUT);
forward(1000);
left(700);
forward(1000);
stop2();
}
void loop() {
}