코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-11-28 08:52:16
NO | 부품명 | 수량 | 상세설명 |
1 | 아두이노 | 1 | 오렌지보드 |
2 | voice recognition v2 | 1 | 음성인식 |
2 | 모터연동 가변저항 | 2 | 모터연동 가변저항 |
3 | 모터 쉴드 | 1 | 모터 쉴드 |
4 | 12-24v 외부 전원 | 1 | 외부 전원 |
5 | 서보모터 | 1 | 서보모터 |
6 | 점퍼케이블 | 10~15 | '암-수' 핀 점퍼케이블 필요 |
부품명 | 오렌지 보드 | voice recognition v2 | 모터 쉴드 | 모터 연동 가변저항 | 12-24v 외부 전원 |
파트 |
부품명 | 서보모터 | 점퍼케이블 |
파트 |
/*www.kocoafab.cc*/ #include <Servo.h>
//모터 핀번호 선언. 방향을 제어할때 사용 int motor1 = 12; int motor2 = 13;
//속도를 제어하는 핀번호 선언. int speed1= 3; int speed2 = 11; Servo myservo; byte com = 0; //음성인식에 필요한 변수 void setup(){ Serial.begin(9600); //시리얼 통신 설정
//모든 핀모드를 OUTPUT으로 설정 pinMode(motor1, OUTPUT); pinMode(motor2, OUTPUT); pinMode(speed1, OUTPUT); pinMode(speed2, OUTPUT);
//compact모드 전환 Serial.write(0xAA); Serial.write(0x37); delay(1000);
//특정 그룹 사용준비 Serial.write(0xAA); Serial.write(0x22); delay(1000);
//서보모터의 핀번호 설정. 초기각도를 0도로 설정 myservo.attach(4); myservo.write(0); } void loop(){ com = Serial.read(); //음성 인식을 통해 Switch문으로 여러 분기로 나눈다
//음성 인식의 종류에 따라 setMotor의 인자값이 바뀌게된다. switch (com) { case 0x21: //6인식 Serial.println("6"); setMotors(0,255, 0,61 ); break; case 0x22: //7인식 Serial.println("7"); setMotors(255,255,200, 61); break; case 0x23: //8인식 Serial.println("8"); setMotors(0,255, 0, 35); break; case 0x24: //9인식 Serial.println("9"); setMotors(255,255, 200, 35); break; case 0x25: //10인식 Serial.println("10"); setMotors(0,0, 0, 0); break; } }
//모터의 움직이는 방향, 속도를 제어하는 함수
//velo값은 속도를 나타내고, delay값을 통해 모터의 움직임을 제한한다.
//delay가 클수록 모터는 많이 움직이게 되고, 짧을 수록 적은 거리를 이동하게 된다. void setMotors(int velo1,int velo2, int delay1, int delay2) { //motor1 제어 digitalWrite(motor1, LOW); analogWrite(speed1, velo1); delay(delay1); analogWrite(speed1, 0); delay(100); //motor2 제어 digitalWrite(motor2, LOW); analogWrite(speed2, velo2); delay(delay2); analogWrite(speed2, 0); delay(500); turn(); returnSet(); } void returnSet() //다시 제자리로 돌아가는 함수 { digitalWrite(motor1, HIGH); analogWrite(speed1, 255); digitalWrite(motor2, HIGH); analogWrite(speed2, 255); delay(1000); analogWrite(speed1, 0); analogWrite(speed2, 0); } void turn() //서보모터를 움직여 서랍을 밀어내는 함수 { myservo.write(100); //서보모터의 각도를 100도로 지정 delay(1000); myservo.write(0); //1초뒤 다시 0도로 지정 }
수박쨈