코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-11-24 16:00:00
NO | 부품명 | 수량 | 상세 설명 |
1 | 오렌지 보드 | 1 | 아두이노 호환 보드 |
2 | 모터 쉴드 | 1 | Arduino Motor SHIELD |
3 | TCRT5000 | 3 | Infrared Photo Reflective Sensor |
4 | DC 모터 | 2 | DC 모터 |
5 | 4.7kΩ 저항 | 3 | 저항 |
6 | 100Ω 저항 | 3 | 저항 |
7 | 1.5V AA 전지 | 4 | 직렬 연결(6V) |
8 | 브레드보드 | 1 | 브레드보드 |
9 | 점퍼케이블 | 16 | 점퍼케이블 |
부품명 | 오렌지 보드 | TCRT5000 | 모터 실드 | DC 모터 |
파트 |
부품명 | 4.7kΩ 저항 | 100Ω 저항 | 1.5V AA전지 | 브레드보드 | 점퍼케이블 |
파트 |
void setup() { Serial.begin(9600); //모터쉴드의 A & B채널 설정 pinMode(12, OUTPUT); //Motor 채널 A pin을 출력으로 설정합니다. pinMode(9, OUTPUT); //Brake 채널 A pin을 출력으로 설정합니다. pinMode(13, OUTPUT); //Motor 채널 B pin을 출력으로 설정합니다. pinMode(8, OUTPUT); //Brake 채널 B pin을 출력으로 설정합니다. } void loop() {
// A2 : 왼쪽, A3 : 가운데, A4 : 오른쪽 센서와 연결되어 있습니다.
if(analogRead(A4) > 800 && analogRead(A3) > 800 && analogRead(A2) > 800){
// 3개의 센서가 모두 인식이 됬을 경우는 멈춰있습니다. analogWrite(3, 0); analogWrite(11, 0); } else if(analogRead(A2) > 800 && analogRead(A3) < 800 && analogRead(A4) < 800){
// 왼쪽 센서만 인식했을 경우 왼쪽으로 이동합니다. turn_left(); } else if(analogRead(A4) > 800 && analogRead(A3) < 800 &&analogRead(A2) < 800){
// 오른쪽 센서만 인식했을 경우 오른쪽으로 이동합니다, turn_right(); } else if(analogRead(A3) > 800){
// 가운데 센서가 인식 했을 경우 앞으로 이동합니다. forward(); } } void forward() { //전진모드에 대한 설정입니다. digitalWrite(12, LOW); // 12번 핀과 연결된 채널 A 모터의 방향을 설정합니다. digitalWrite(9, LOW); // 9번 핀과 연결된 채널 A 모터의 브레이크를 해제합니다. analogWrite(3, 255); // 3번 핀과 연결된 채널 A 모터의 속도를 최대값(255)로 설정합니다. digitalWrite(13, LOW); // 13번 핀과 연결된 채널 B 모터의 방향을 역방향으로 설정합니다. digitalWrite(8, LOW); // 8번 핀과 연결된 채널 B 모터의 브레이크를 해제합니다. analogWrite(11, 255); // 11번 핀과 연결된 채널 B 모터의 속도를 최대값(255)로 설정합니다. delay(10); // 0.01초(10밀리초)동안 유지합니다. } void turn_right() { //우회전에 대한 설정입니다. digitalWrite(12, LOW); // 12번 핀과 연결된 채널 A 모터의 방향을 역방향으로 설정합니다. digitalWrite(9, LOW); // 9번 핀과 연결된 채널 A 모터의 브레이크를 해제합니다. analogWrite(3, 255); // 3번 핀과 연결된 채널 A 모터의 속도를 최대값(255)로 설정합니다. digitalWrite(13, HIGH); // 13번 핀과 연결된 채널 B 모터의 방향을 정방향으로 설정합니다. digitalWrite(8, LOW); // 8번 핀과 연결된 채널 B 모터의 브레이크를 해제합니다. analogWrite(11, 255); // 11번 핀과 연결된 채널 B 모터의 속도를 최대값(255)로 설정합니다. delay(10); // 0.01초(10밀리초)동안 유지합니다. } void turn_left() { //우회전에 대한 설정입니다. digitalWrite(12, HIGH); // 12번 핀과 연결된 채널 A 모터의 방향을 정방향으로 설정합니다. digitalWrite(9, LOW); // 9번 핀과 연결된 채널 A 모터의 브레이크를 해제합니다. analogWrite(3, 255); // 3번 핀과 연결된 채널 A 모터의 속도를 최대값(255)로 설정합니다. digitalWrite(13, LOW); // 13번 핀과 연결된 채널 B 모터의 방향을 역방향으로 설정합니다. digitalWrite(8, LOW); // 8번 핀과 연결된 채널 B 모터의 브레이크를 해제합니다. analogWrite(11, 255); // 11번 핀과 연결된 채널 B 모터의 속도를 최대값(255)로 설정합니다. delay(10); //0.01초(10밀리초)동안 유지합니다. }
void turn_right() { //우회전에 대한 설정입니다. digitalWrite(12, LOW); // 12번 핀과 연결된 채널 A 모터의 방향을 역방향으로 설정합니다. digitalWrite(9, LOW); // 9번 핀과 연결된 채널 A 모터의 브레이크를 해제합니다. analogWrite(3, 255); // 3번 핀과 연결된 채널 A 모터의 속도를 최대값(255)로 설정합니다. digitalWrite(13, HIGH); // 13번 핀과 연결된 채널 B 모터의 방향을 정방향으로 설정합니다. digitalWrite(8, LOW); // 8번 핀과 연결된 채널 B 모터의 브레이크를 해제합니다. analogWrite(11, 255); // 11번 핀과 연결된 채널 B 모터의 속도를 최대값(255)로 설정합니다. delay(10); // 0.01초(10밀리초)동안 유지합니다. } void turn_left() { //우회전에 대한 설정입니다. digitalWrite(12, HIGH); // 12번 핀과 연결된 채널 A 모터의 방향을 정방향으로 설정합니다. digitalWrite(9, LOW); // 9번 핀과 연결된 채널 A 모터의 브레이크를 해제합니다. analogWrite(3, 255); // 3번 핀과 연결된 채널 A 모터의 속도를 최대값(255)로 설정합니다. digitalWrite(13, LOW); // 13번 핀과 연결된 채널 B 모터의 방향을 역방향으로 설정합니다. digitalWrite(8, LOW); // 8번 핀과 연결된 채널 B 모터의 브레이크를 해제합니다. analogWrite(11, 255); // 11번 핀과 연결된 채널 B 모터의 속도를 최대값(255)로 설정합니다. delay(10); //0.01초(10밀리초)동안 유지합니다. }
RC카를 회전하게 하는 코드 입니다. 한쪽 바퀴는 정방향으로, 반대쪽 바퀴는 역방향으로 돌려 역방향으로 도는 바퀴 쪽으로 회전하게 합니다.
왼쪽으로 이동시 왼쪽 바퀴는 역방향으로 주고, 오른쪽 바퀴는 정방향으로 돌리면 됩니다.(반대로 이동시는 바퀴 방향을 반대로 돌리면 됩니다.)
모터쉴드 DC모터와 연결하는 곳의 핀배치 입니다.(Current Sensing때문에 A0, A1번핀을 사용하지 못하므로 A2~A4번핀을 TCRT5000 센서 핀으로 사용했습니다.)
Fuction | Ch.A | Ch.B |
Direction(방향) | D12 | D13 |
PWM(속도) | D3 | D11 |
Brake(강제 정지) | D9 | D8 |
Current Sensing | A0 | A1 |
판다마니아