#include  // LED 모듈 라이브러리
#include  // 컬러 센서 라이브러리
#include              // 서보모터 라이브러리 불러오기
#include               // I2C 통신에 사용되는 라이브러리

/* 상수 선언 : 핀 번호, 속도제어, 서보모터의 각도*/
#define PIN_DC_DIRECTION 13  // DC모터(레일) 방향을 정하는 핀(현재 B모터 사용)
#define PIN_DC_SPEED 11      // DC모터(레일) 속도를 정하는 핀(현재 B모터 사용)
#define PIN_SERVO 9          // 서보모터 연결 핀
#define PIN_LED 5            // LED 연결 핀
#define PIN_IR A0            // 적외선 IR센서 연결 핀

#define POS_RED 35   // 빨간 색 제품을 분류할 서보모터의 각도
#define POS_GREEN 57  // 초록 색 제품을 분류할 서보모터의 각도
#define POS_BLUE 2    // 파란 색 제품을 분류할 서보모터의 각도
#define NUM_PIXELS 3  // 네오픽셀의 픽셀 수: 3

/* 변수 선언 : HW객체, 측정값, 기타 변수, ...*/
Adafruit_TCS34725 TCS = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
Servo servo;
Adafruit_NeoPixel pixels(NUM_PIXELS, PIN_LED, NEO_GRB + NEO_KHZ800);

uint16_t clear, red, green, blue;  // 색상 값을 저장할 unsigned short int형 변수 선언
int r, g, b, sum;                  // 색상 값을 사용하기 위한 변환값
int railSpeed = 120;               // 레일 기본 속도, 초기값은 160

void setup() {
  /* 모터 설정 */
  pinMode(PIN_DC_DIRECTION, OUTPUT);     // dc모터의 방향을 제어하는 핀을 output으로 설정
  digitalWrite(PIN_DC_DIRECTION, HIGH);  // 방향은 전진. 의도한 방향과 반대일 경우 HIGH -> LOW로 변경
  analogWrite(PIN_DC_SPEED, railSpeed);  // 레일 작동 시작
  servo.attach(PIN_SERVO);               // 서보모터를 아두이노와 연결
  servo.write(2);                        // 초기 서보모터가 가리키는 각도는 0도
  delay(500);                            // 서보모터가 완전히 동작을 끝낸 후 detach를 위해 delay를 부여
  servo.detach();                        // 서보모터와 아두이노 분리

  /* 적외선 센서 설정 */
  pinMode(PIN_IR, INPUT);  // 적외선 센서 핀을 INPUT으로 설정

  /* 컬러 센서 설정 */
  TCS.begin();  // 컬러 센서 작동 시작

  /* LED 모듈 설정 */
  pixels.begin();             // LED 모듈 작동 시작
  pixels.setBrightness(255);  // 밝기(0~255) 설정. 최대 밝기로 출력
}

void loop() {

}

0 Reviews
댓글작성