-
아두이노 프로젝트 | 컨베이어 벨트Technology/Arduino 2024. 11. 17. 21:49
1. 컨베이어 벨트
생산 공장에서 쉽게 발견할 수 있는 컨베이어 벨트를 아두이노 플랫폼으로 구현해보자. 구현하고자 하는 컨베이어 벨트는 바이폴라 스텝모터와 모터를 제어하기 위한 모터 드라이버, 가변저항, 택트 스위치로 구성되어 있다. 스텝모터가 작동하여 벨트를 굴리면, 벨트 위에 놓여져 있는 물건들이 벨트를 따라 이동한다. 이때 가변저항의 저항값을 조정하면 그에 맞게 컨베이어 벨트의 속력을 조절할 수 있도록, 택트 스위치를 누르면 컨베이어 벨트의 방향이 반대가 되도록 프로그램을 작성해보자.
2. 프로젝트
2.1. 회로 구성
2.2. 프로그램 작성
#define dirPin 8 // 상수 정의 후 디지털 핀 번호 8로 초기화 #define stepPin 9 const int steps_per_rev = 200; // 정수형 변수 정의 후 200으로 초기화 int value = 0; // 정수형 변수 정의 후 0으로 초기화 #define Switch 2 volatile byte state = LOW; // 휘발성 바이트 변수 정의 후 LOW로 초기화 void setup() { pinMode(dirPin, OUTPUT); // 디지털 8번 핀을 출력(OUTPUT) 모드로 설정 pinMode(stepPin, OUTPUT); pinMode(A0, INPUT); // 아날로그 입력 A0번 핀을 입력(INPUT) 모드로 설정 pinMode(Switch, INPUT); // 디지털 인터럽트 정의 // (1) 디지털 2번 핀을 인터럽트로 사용 // (2) 인터럽트 시 changeDirection 함수 호출 // (3) 디지털 신호가 HIGH에서 LOW로 변할 때 함수 호출 attachInterrupt(digitalPinToInterrupt(Switch), changeDirection, FALLING); delay(3000); // 3000 ms 대기 } void loop() { // 컨베이어 벨트 방향 설정 digitalWrite(dirPin, state); // 디지털 8번 핀에 변수에 저장된 값을 출력 // 컨베이어 벨트 속력 설정 value = analogRead(A0); // 아날로그 입력 A0번 핀으로부터 아날로그 신호를 입력 받은 후 변수에 저장 int time = map(value, 0, 1023, 300, 150); // 아날로그 신호 변환 후 정수형 변수에 저장 // 컨베이어 벨트 가동 digitalWrite(stepPin, HIGH); delayMicroseconds(time); // 변수에 저장된 시간 만큼 대기 (단위: us) digitalWrite(stepPin, LOW); delayMicroseconds(time); } void changeDirection() { state = !state; // 변수에 저장된 논리값 반전 }
[함께 읽으면 좋은 페이지]
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 라이브러리 | 다중 스텝모터 동시 제어 (1) 2024.11.20 아두이노 | 유도형 근접 스위치 DC 5V 모듈 (0) 2024.11.19 아두이노 | 디지털 인터럽트 (1) 2024.11.15 아두이노 | 바이폴라 스텝모터 드라이버 TB6600 모듈 (4) 2024.11.14 아두이노 라이브러리 | 스텝모터 가속 제어 (3) 2024.11.13