산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Coin Op 개인 자동 판매기

구성품 및 소모품

FriendlyARM 1/4 합판
다이어그램에 지정된 치수로 합판 절단
× 4
3/4" 합판 차단
합판을 3/4" 너비의 스트립으로 자르고 합판을 연결하는 길이만큼 잘라냅니다(다이어그램 참조).
× 1
LAFVIN 5 세트 28BYJ-48 ULN2003 5V 스테퍼 모터 + ULN2003 드라이버 Arduino용 보드
이 모터는 기계에 넣은 어떤 간식도 밀어낼 수 있습니다.
× 1
PC 액세서리 - Connectors Pro IDC 1.27mm 피치 레인보우 컬러 플랫 리본 2.54mm 커넥터용 케이블(50P-10FT)
기계를 깨끗하고 전문적으로 만드는 데 필요
× 1
Glarks 635Pcs 듀폰 커넥터 하우징 수/암 핀 커넥터 40핀
기계를 깨끗하고 전문적으로 만드는 데 필요
× 1
Gamelec-Illuminated-Replacement-Microswitch
버튼이 있어야 함
× 1
브레드보드(일반)
솔더 보드도 잘 작동합니다.
× 1
30 PC 양면 PCB 보드 프로토타입 키트
하나 또는 두 개만 필요하지만 향후 프로젝트에 적합한 크기입니다.
× 1
Arduino Mega 2560
사용된 컨트롤러는 Mega 2560입니다.
× 1
Arduino ARM용 Tolako 5v 릴레이 모듈
모터가 과열되는 것을 방지하는 데 필요
× 1
HiLetgo 2pcs 1602 직렬 LCD 모듈 디스플레이
이 기능이 없으면 어떤 버튼을 눌렀는지 알 수 없습니다.
× 1
LED 조명 스트립
선택 사항
× 2
50피트 8게이지 솔리드 SD 베어 구리 접지선
코일을 만드는 데 사용할 것입니다.
× 1
플랫 금속 선반 칸막이
× 1

필요한 도구 및 기계

테이블 또는 전동 톱
나무를 자를 곳이 없는 한
납땜 인두(일반)
뜨거운 글루건(일반)
접착제도 잊지 마세요

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

개인 자동 판매기

이 프로젝트는 개인 자판기의 단계별 빌드입니다. 자판기에 좋아하는 간식을 채우거나 사무실로 가져와서 팀원들과 간식을 나눠먹을 수 있습니다. 살펴보시고 여러분의 생각을 알려주세요.

기계 만들기 :

이 텍스트 전체에서 기계의 다이어그램을 참조하므로 설명/이해를 위해 다이어그램을 참조하십시오.

기계의 치수는 21" W x 18" D x 24 1/4" H(박스 치수)입니다.

2 패널 18"D x 23 3/4"H(측면)

2개의 패널 21"W x 18"D(상단 및 하단)

2개의 패널 21" W x 24 1/4" H(전면 및 후면)

칸막이 벽은 18"D x 23 3/4"H입니다.

내부 선반은 13"W ​​x 12"D(2배, 상부 및 하부 선반)입니다.

선반의 간격은 8인치이며 너비는 13인치이며 깊이는 12인치입니다.

패널 다이어그램의 각 파란색 블록은 패널 깊이의 ¾”W x ¾”H 장착 지점입니다.

각 연결 지점에서 3/4" 차단을 사용하여 다이어그램과 여기에 표시된 대로 상자를 조립합니다. 측벽은 하단 플레이트의 상단과 상단 플레이트 아래에 위치한다는 점에 유의하십시오. 주변 벽은 21"W를 측정해야 합니다. 24 1/4"H.

디바이더 벽은 설치하기 전에 설정해야 합니다. 상단 16 1/4"에서 아래로 측정하고 하단 선반용 블로킹을 거기에 부착합니다. 상단에서 8 1/4"를 측정하고 상단 선반용 블로킹을 부착합니다. 상단 및 하단 선반용 차단 장치를 부착할 수 있도록 왼쪽 벽(기계 전면에서 볼 때)에서 이 단계를 완료하십시오.

**** 하단 선반을 먼저 설치해야 합니다. 그렇지 않으면 차단 장치에 고정하기가 매우 어렵습니다.

선반에 블로킹이 설치되면 13" x 12" 패널을 사용하고 각 블로킹 세트에 하나씩 설치합니다. 이렇게 하면 적절한 위치에 칸막이 벽이 자동으로 설정됩니다. 그런 다음 칸막이 벽의 오른쪽 상단과 하단에 블록을 고정하십시오. 그런 다음 상단 및 하단 패널에 고정하면 구조가 완전히 고정됩니다.

후면 패널을 설치하고 모터 설치를 준비합니다. 코일 휠이 인쇄되어 있는지 확인하여 측정하고 드릴 구멍을 설정할 수 있습니다. 바퀴를 측정하고 높이에 1/4"를 추가하여 코일이 회전할 공간을 남겨두십시오. 재료에 따라 필요에 따라 이것을 조정할 수 있습니다. 선반에서 6 1/2" 이상 측정하여 표시하십시오. 가운데. 각 선반 섹션의 중심을 찾기 위해 3 1/4" 이상 측정합니다. 드릴 포인트를 찾으려면 잠시 전에 기록한 높이 측정을 사용하십시오. 휠 샤프트가 마찰되지 않고 휠을 모터에 연결할 수 있는 구멍을 뚫습니다. 모터 장착을 완료하고 패스너를 조입니다.

모터 릴레이 설정:

다음과 같이 핀을 연결합니다. L293D 칩(왼쪽에 노치)을 사용하여(회로도에서) 릴레이를 제어할 수 있습니다. 이렇게 하면 모터를 전원에 연결할 수 있습니다.

(왼쪽에서 오른쪽으로 시작)

핀 1은 컨트롤러의 핀 소켓 10에 연결합니다(회로도에서)

Pin2는 컨트롤러의 핀 소켓 9에 연결합니다(회로도에서)

핀 3은 릴레이의 양극에 연결합니다(3개의 핀이 사용자를 향하고 핀이 왼쪽에 있음)(회로도에서)

핀 4는 브레드보드의 12V 접지에 연결합니다(회로도)

핀 5 사용되지 않음(회로도에서)

핀 6은 릴레이의 접지면에 연결합니다(3개의 핀이 사용자를 향하도록 하고 핀이 오른쪽에 있음)(회로도에서)

핀 7은 컨트롤러의 핀 소켓 8에 연결합니다(회로도에서)

핀 8은 브레드보드의 +12V에 연결합니다(회로도에서)

릴레이의 중간 핀을 브레드보드의 +12V에 연결합니다(회로도에서)

릴레이의 뒤쪽 오른쪽 핀(3개의 핀이 사용자를 향하도록 하여 오른쪽에 뒤쪽에 있음)을 모터 드라이버로 가는 양극 리드에 연결합니다(회로도에서)

스크린 &버튼 설치 :스크린 - 기계 우측(기계 정면에서 바라볼 때)의 한 지점을 선택하고 화면의 디스플레이 부분(2.53937" x 0.5708661) 버튼에 만들어야 할 구멍을 표시합니다. - 기계의 오른쪽에서 한 지점(앞에서 기계를 보며)을 선택하고 4개의 단추에 대해 만들어야 할 구멍을 표시합니다. 구멍은 1.10236"가 되어야 합니다. 부품 목록. 필요한 것보다 작은 드릴 비트와 사포를 사용하여 필요한 크기로 가져오는 것을 좋아합니다.

위의 다이어그램과 정확히 동일한 지점에 모든 연결이 있는지 확인해야 합니다. 다이어그램에 표시된 LED는 푸시 버튼에 내장된 LED입니다. 다이어그램은 이들을 개별적으로 보여주지만 이는 단지 표시를 위한 것이고 회로도를 더 쉽게 읽을 수 있도록 하기 위한 것입니다.

각 모터를 함께 제공된 드라이버에 연결하십시오. 그런 다음 다음 단계를 사용하여 각 드라이버를 컨트롤러에 연결합니다.

모터 설정:

전원은 브레드보드의 12V 쪽에 연결해야 합니다. 이 전원은 마지막에 준비할 ATX 전원 공급 장치에서 나옵니다. 그런 다음 드라이버에 있는 4개의 "in" 핀을 컨트롤러에 연결합니다. 이 핀은 다음과 같습니다.

********* 이 블록의 처음 2개 핀에 연결하지 마십시오. 5V 핀입니다. 이 프로젝트에서 사용되지 않습니다. *********

모터 1:파란색 핀 22, 24, 26, 28(회로도에서)

모터 2:노란색 핀 23, 25, 27, 29(회로도에서)

모터 3:녹색 핀 30, 32, 34, 36(회로도에서)

모터 4:빨간색 핀 31, 33, 35, 37(회로도에서)

버튼 연결:

푸시 버튼 1의 한쪽을 5v 전원에 연결하고 다른 쪽을 아날로그 핀 A0과 함께 접지된 220 저항에 연결합니다(회로도에서)

푸시 버튼 2의 한쪽을 5v 전원에 연결하고 다른 쪽을 아날로그 핀 A1과 함께 접지된 220 저항에 연결합니다(회로도)

푸시 버튼 3의 한쪽을 5v 전원에 연결하고 다른 쪽을 아날로그 핀 A2와 함께 접지된 220 저항에 연결합니다(회로도)

푸시 버튼 4의 한쪽을 전원 5v에 연결하고 다른 쪽을 아날로그 핀 A3과 함께 접지된 220 저항에 연결합니다(회로도)

LCD 화면:

전원 및 접지용 브레드보드의 5v 쪽에 화면을 연결합니다.

핀은 다음과 같습니다:

핀 1:접지에 연결(회로도에서)

핀 2:5v 전원에 연결(회로도에서)

핀 3:조정 가능한 전위차계에 연결(아래 그림 참조) 왼쪽 하단 핀은 접지, 오른쪽 하단은 전원, 상단 핀은 LCD의 핀 3(회로도에서 LCD의 대비를 설정하여 텍스트가 선명하고 선명하게 보이도록 하는 방법입니다. 깨끗함)

핀 4:컨트롤러 핀 소켓 2에 대한 첫 번째 신호 핀(회로도에서)

핀 5:접지에 연결(회로도에서)

핀 6:컨트롤러 핀 소켓 3에 대한 두 번째 신호 핀(회로도에서)

핀 7:사용되지 않음

핀 8:사용되지 않음

핀 9:사용되지 않음

핀 10:사용되지 않음

핀 11:컨트롤러 핀 소켓 4에 대한 세 번째 신호 핀(회로도에서)

핀 12:컨트롤러 핀 소켓 5에 대한 네 번째 신호 핀(회로도에서)

핀 13:컨트롤러 핀 소켓 6에 대한 다섯 번째 신호 핀(회로도에서)

핀 14:컨트롤러 핀 소켓 7에 대한 여섯 번째 신호 핀(회로도에서)

핀 15:5v 전원에 연결(회로도에서)

핀 16:접지에 연결(회로도에서)

ATX 전원 공급 장치 :

장치에 전원을 공급하는 데 필요한 전선만 절단하십시오. 다른 전선은 플라스틱 커넥터에서 더 안전하며 필요한 경우 다른 프로젝트에 사용할 수 있습니다.

ATX 핀:

(접지) 검은색 와이어 핀 3과 (Signal) 녹색 와이어 핀 16을 자르고 벗겨냅니다. 이 와이어를 스위치에 연결하여 기계를 켜고 끌 수 있도록 합니다(회로도에서).

(접지) 검은색 와이어 핀 7과 (+12V) 노란색 와이어 핀 10을 잘라 스트립합니다. 이 와이어를 노란색과 검은색 연결로 지정된 브레드보드의 12v 쪽에 연결합니다. (회로도에서)

(접지) 검은색 와이어 핀 24와 (+12V) 노란색 와이어 핀 11을 잘라내고 벗겨냅니다. 이 와이어를 호환되는 커넥터에 연결하여 Arduino 보드에 전원을 공급합니다(회로도)

(접지) 검은색 와이어 핀 19 및 (+5V) 빨간색 와이어 핀 21을 잘라 스트립합니다. 이 와이어를 브레드보드의 5V 쪽에 연결합니다(회로도에서)

선반 칸막이 및 코일:

선반과 압출기를 설치하는 방법은 다음과 같습니다.

선반 - 왼쪽 벽(앞에서 기계를 볼 때) 또는 칸막이 벽에서 중간 지점 6 1/2"에 위 단계의 표시가 있어야 합니다. 평평한 금속을 사용하여 선반 상단으로 구부립니다. 삼각형. 이렇게 생겼습니다 "^" 이것은 중간 칸막이 역할을 할 것입니다. 삼각형을 선반의 중간 표시 위에 중앙에 두십시오. 두 번째 선반에 대해 반복하십시오. 핫 글루를 사용하여 제자리에 고정하십시오. 측면에도 슬라이드를 넣지만 선택 사항입니다.

코일 - 코일을 생성하려면 먼저 1 1/2" 튜브를 찾으십시오. 파이프, 코크 튜브, 스프레이 페인트 캔 또는 이와 유사한 물체를 사용하면 됩니다. 한 가지 트릭은 고무 밴드를 길이에 따라 위에서 아래로 감는 것입니다. 튜브의 양쪽에 있는 밴드의 각 측면 아래로 직선을 추적합니다. 양쪽에 평행선이 있으면 줄자를 사용하여 다음 지점을 표시합니다. 한쪽을 선택하고 1"로 측정하고 표시합니다 , 그런 다음 거기에서 2"를 측정하고 표시하고 튜브 아래로 2" 공간을 계속 만드십시오. 이제 튜브의 다른 쪽에는 2" 간격만 표시합니다. 튜브의 1"쪽에 코일을 만들기 시작하고 코일을 계속 만들어 튜브 양쪽의 각 표시에 닿도록 합니다. 이렇게 하면 가로대 사이에 2인치 간격이 생깁니다. 대부분의 항목에 대해 충분히 커야 합니다. 캔디 바드에 사용하려는 경우 코일을 1인치로 줄이려면 위의 공식을 절반으로 줄이십시오.

코일을 3D 인쇄된 바퀴에 연결합니다. 작동하는 일부 제조된 바퀴가 있음을 명심하십시오. 아마존에서 살펴보세요.

코일의 1"면에서 이 코일을 접어 원을 만듭니다. 그런 다음 직경을 휠보다 약간 작게 줄이십시오. 코일이 준비되면 휠 가장자리 주위에 맞춥니다. 이렇게 하면 코일이 주위를 압축해야 합니다. 바퀴의 가장자리를 잡고 미끄러지지 않도록 하십시오. 딱 맞으면 뜨거운 접착제를 소량 덜어 코일 끝에 있는 바퀴에 대고 제자리에 고정합니다.

LED 스트립 조명:

포지티브 리드를 브레드 보드의 12V 쪽에 있는 +12V 핀에 연결합니다. 접지 리드를 브레드 보드의 12V 측 접지 핀에 연결합니다(그림에는 없음)

가장 쉬운 프로젝트가 될 수 있도록 업데이트를 도와드리겠습니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 자동판매기 - LED 조명을 바꾸지 않음
  • 자동 판매기 - LED 조명 변경
  • Coin Acceptor 및 완전한 copde
  • 자동 판매기 - LED 조명 교체 없이Arduino
    프로젝트를 완료하고 이해하는 데 필요한 모든 것
    // Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  / /스테퍼 모터 라이브러리 포함//릴레이 설정#define ENABLE 10#define DIRA 8#define DIRB 9//정의 "i"int i;//핀 섹션 정의//스테퍼 연결 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//스테퍼 연결 2int stepIN1Pin1 =23; int stepIN2Pin1 =25;int stepIN3Pin1 =27;int stepIN4Pin1 =29;//스테퍼 연결 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =34;int stepIN4Pin2 =36;//스테퍼 연결 =33;int stepIN3Pin3 =35;int stepIN4Pin3 =37; //정의 단계int stepsPerRevolution =2048; // 회전당 단계 수//버튼 핀 포트 정의 const int button1Pin =A0; // 푸시 버튼 1 아날로그 핀 A0const int button2Pin =A1; // 푸시 버튼 2 아날로그 핀 A1const int button3Pin =A2; // 푸시 버튼 3 아날로그 핀 A2const int button4Pin =A3; // 푸시 버튼 4 아날로그 핀 A3//각 스테퍼 정의// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1);IN stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);void setup() { // 푸시 버튼 핀 입력 할당:pinMode(button1)P 핀모드(버튼2핀, 입력); 핀모드(버튼3핀, 입력); 핀모드(버튼4핀, 입력); // 핀 출력 할당 pinMode(ENABLE, OUTPUT); 핀모드(DIRA, 출력); 핀모드(DIRB,OUTPUT); // 스테퍼 속도 할당 myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); //LCD 디스플레이 초기화 lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("아이템을 선택하세요."); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4");}void loop() { // 버튼 할당 읽기 int button1State, button2State, button3State, button4State; 버튼1상태 =디지털읽기(버튼1핀); 버튼2상태 =디지털읽기(버튼2핀); 버튼3상태 =디지털읽기(버튼3핀); 버튼4상태 =디지털읽기(버튼4핀); digitalWrite(ENABLE, HIGH);// (i=0;i<5;i++)에 대한 상태 설정; // 버튼 1을 눌렀을 때의 동작 정의 if (((button1State ==LOW) &&!(button2State ==LOW)))// 버튼 1 OR 버튼 2 {digitalWrite(DIRA,HIGH); // 릴레이 연결 digitalWrite(DIRB,LOW); lcd.clear(); lcd.setCursor(2, 0); lcd.print("배포"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); myStepper0.step(stepsPerRevolution); //모터 구동 lcd.clear(); lcd.setCursor(2, 0); lcd.print("받아주세요"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); 지연(2500); lcd.setCursor(0, 0); lcd.print("버튼 상태 1"); lcd.setCursor(2, 1); lcd.print("1 2 3 또는 4"); 디지털 쓰기(DIRA,LOW); //릴레이 해제 digitalWrite(DIRB,LOW); } // 버튼 2를 눌렀을 때의 동작을 정의 if (((button2State ==LOW) &&!(button1State ==LOW))) // 버튼 1 OR 버튼 2를 누르면 {digitalWrite(DIRA,HIGH); // 릴레이 연결 digitalWrite(DIRB,LOW); lcd.clear(); lcd.setCursor(2, 0); lcd.print("배포"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); myStepper1.step(stepsPerRevolution); // 모터 실행 lcd.clear(); lcd.setCursor(2, 0); lcd.print("받아주세요"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); 지연(2500); lcd.setCursor(0, 0); lcd.print("버튼 상태 2"); lcd.setCursor(2, 1); lcd.print("1 2 3 또는 4"); 디지털 쓰기(DIRA,LOW); //릴레이 해제 digitalWrite(DIRB,LOW); } // 버튼 3을 눌렀을 때의 동작을 정의 if (((button3State ==LOW) &&!(button4State ==LOW))) // 버튼 1 OR 버튼 2를 누르면 {digitalWrite(DIRA,HIGH); // 릴레이 연결 digitalWrite(DIRB,LOW); lcd.clear(); lcd.setCursor(2, 0); lcd.print("배포"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); myStepper2.step(stepsPerRevolution); // 모터 실행 lcd.clear(); lcd.setCursor(2, 0); lcd.print("받아주세요"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); 지연(2500); lcd.setCursor(0, 0); lcd.print("버튼 상태 3"); lcd.setCursor(2, 1); lcd.print("1 2 3 또는 4"); 디지털 쓰기(DIRA,LOW); //릴레이 해제 digitalWrite(DIRB,LOW); } // 버튼 4를 눌렀을 때의 동작 정의 if (((button4State ==LOW) &&!(button3State ==LOW))) // 버튼 1 OR 버튼 2 {digitalWrite(DIRA,HIGH); // 릴레이 연결 digitalWrite(DIRB,LOW); lcd.clear(); lcd.setCursor(2, 0); lcd.print("배포"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); myStepper3.step(-stepsPerRevolution); // 모터 실행 lcd.clear(); lcd.setCursor(2, 0); lcd.print("받아주세요"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); 지연(2500); lcd.setCursor(0, 0); lcd.print("버튼 상태 4"); lcd.setCursor(2, 1); lcd.print("1 2 3 또는 4"); 디지털 쓰기(DIRA,LOW); //릴레이 해제 digitalWrite(DIRB,LOW); }}
    자동 판매기 - LED 조명 변경C#
    동영상을 보세요!
    // Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  //포함 스테퍼 모터 라이브러리//릴레이 설정#define ENABLE 10#define PinA 8#define PinB 9#define REDPIN 38#define GREENPIN 39#define BLUEPIN 40//Define "i"int i;//Define "RGB"int r, g , b;//핀 섹션 정의//스테퍼 연결 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//스테퍼 연결 2int stepIN1Pin1 =23;int stepIN2Pin1 =25;int stepIN23;int stepIN4Pin1 =29;//스테퍼 연결 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//스테퍼 연결 4int stepIN1Pin3 =31;int stepIN332Pin3 =IN35Pin3 =stepIN4Pin3 =37; // 단계 정의 int stepsPerRevolution =2048; // 회전당 단계 수//버튼 핀 포트 정의 const int button1Pin =A0; // 푸시 버튼 1 아날로그 핀 A0const int button2Pin =A1; // 푸시 버튼 2 아날로그 핀 A1const int button3Pin =A2; // 푸시 버튼 3 아날로그 핀 A2const int button4Pin =A3; // 푸시 버튼 4 아날로그 핀 A3//각 스테퍼 정의// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1);IN stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);void setup() { // 푸시 버튼 핀 입력 할당:pinMode(button1)P 핀모드(버튼2핀, 입력); 핀모드(버튼3핀, 입력); 핀모드(버튼4핀, 입력); // 핀 출력 할당 pinMode(ENABLE, OUTPUT); 핀모드(핀A, 출력); 핀모드(핀B, 출력); //LED 스트립 핀 설정 pinMode(REDPIN, OUTPUT); 핀모드(그린핀, 출력); 핀모드(블루핀, 출력); // 스테퍼 속도 할당 myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); //LCD 디스플레이 초기화 lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("아이템을 선택하세요."); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4"); analogWrite(REDPIN, 256); analogWrite(그린핀, 256); analogWrite(BLUEPIN, 256);}void loop() { // 버튼 할당 읽기 int button1State, button2State, button3State, button4State; 버튼1상태 =디지털읽기(버튼1핀); 버튼2상태 =디지털읽기(버튼2핀); 버튼3상태 =디지털읽기(버튼3핀); 버튼4상태 =디지털읽기(버튼4핀); digitalWrite(ENABLE, HIGH);// (i =0; i <5; i++)에 대한 상태 설정; // 버튼 1을 눌렀을 때 동작을 정의 if (((button1State ==LOW) &&!(button2State ==LOW)))// 버튼 1 OR 버튼 2를 누르면 { digitalWrite(PinA, HIGH); // 릴레이 연결 digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); (b =256, b> 0, b--); analogWrite(블루핀, b); (g =256, g> 0, g--); analogWrite(그린핀, g); (g =256, g> 0, g--); lcd.clear(); lcd.setCursor(2, 0); lcd.print("배포"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); myStepper0.step(stepsPerRevolution); //모터 구동 lcd.clear(); lcd.setCursor(2, 0); lcd.print("받아주세요"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); 지연(2500); lcd.setCursor(0, 0); lcd.print("버튼 상태 1"); lcd.setCursor(2, 1); lcd.print("1 2 3 또는 4"); (b =0; b <256; b++); analogWrite(블루핀, b); (g =0; g <256; g++); analogWrite(그린핀, g); 디지털 쓰기(PinA, LOW); //릴레이 해제 digitalWrite(PinB, LOW); } // 버튼 2를 눌렀을 때의 동작 정의 if (((button2State ==LOW) &&!(button1State ==LOW))) // 버튼 1 OR 버튼 2 { digitalWrite(PinA, HIGH); // 릴레이 연결 digitalWrite(PinB, LOW); analogWrite(그린핀, 256); (b =256, b> 0, b--); analogWrite(블루핀, b); (r =256, r> 0, r--) analogWrite(REDPIN, r); lcd.clear(); lcd.setCursor(2, 0); lcd.print("배포"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); myStepper1.step(stepsPerRevolution); // 모터 실행 lcd.clear(); lcd.setCursor(2, 0); lcd.print("받아주세요"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); 지연(2500); lcd.setCursor(0, 0); lcd.print("버튼 상태 2"); lcd.setCursor(2, 1); lcd.print("1 2 3 또는 4"); 디지털 쓰기(PinA, LOW); //릴레이 해제 digitalWrite(PinB, LOW); (b =0; b <256; b++); analogWrite(블루핀, b); (r =0, r <256, r++); analogWrite(REDPIN, r); } // 버튼 3을 눌렀을 때의 동작을 정의 if (((button3State ==LOW) &&!(button4State ==LOW))) // 버튼 1 OR 버튼 2를 누르면 { digitalWrite(PinA, HIGH); // 릴레이 연결 digitalWrite(PinB, LOW); analogWrite(블루핀, 256); (r =256, r> 0, r--) analogWrite(REDPIN, r); (g =256, g> 0, g--); analogWrite(그린핀, g); lcd.clear(); lcd.setCursor(2, 0); lcd.print("배포"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); myStepper2.step(stepsPerRevolution); // 모터 실행 lcd.clear(); lcd.setCursor(2, 0); lcd.print("받아주세요"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); 지연(2500); lcd.setCursor(0, 0); lcd.print("버튼 상태 3"); lcd.setCursor(2, 1); lcd.print("1 2 3 또는 4"); 디지털 쓰기(PinA, LOW); //릴레이 해제 digitalWrite(PinB, LOW); (g =0; g <256; g++); analogWrite(그린핀, g); (r =0, r <256, r++); analogWrite(REDPIN, r); } // 버튼 4를 눌렀을 때의 동작 정의 if (((button4State ==LOW) &&!(button3State ==LOW))) // 버튼 1 OR 버튼 2를 누르면 { digitalWrite(PinA, HIGH); // 릴레이 연결 digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); analogWrite(그린핀, 256); (b =256, b> 0, b--); analogWrite(블루핀, b); lcd.clear(); lcd.setCursor(2, 0); lcd.print("배포"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); myStepper3.step(-stepsPerRevolution); // 모터 실행 lcd.clear(); lcd.setCursor(2, 0); lcd.print("받아주세요"); lcd.setCursor(3, 1); lcd.print("귀하의 아이템"); 지연(2500); lcd.setCursor(0, 0); lcd.print("버튼 상태 4"); lcd.setCursor(2, 1); lcd.print("1 2 3 또는 4"); 디지털 쓰기(PinA, LOW); //릴레이 해제 digitalWrite(PinB, LOW); (b =0; b <256; b++); analogWrite(블루핀, b); }}
    Coin Acceptor 및 완전한 copdeC#
    전체 코드
    // Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//스테퍼 라이브러리#include  //스테퍼 모터 라이브러리 포함// 릴레이 설정#define ENABLE 10//#define PinA 8//#define PinB 9//LED용 트랜지스터 핀#define REDPIN 38#define GREENPIN 39#define BLUEPIN 40//Define "i"//int i;//Define "RGB"int r, g, b;// Constantsconst int coinpin =21;const int ledpin =13;const int targetcents =100;// Variablesvolatile int cents =0;int credits =0;//핀 섹션 정의// 스테퍼 연결 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//스테퍼 연결 2int stepIN1Pin1 =23;int stepIN2Pin1 =25;int stepIN3Pin1 =27//int stepIN2Pin 연결 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//스테퍼 연결 4int stepIN1Pin3 =31;int stepIN2Pin3 =33;int stepIN3Pin3 =35;int stepIN3Pin3 =35;int stepIN4 2048; // 회전당 단계 수//버튼 핀 포트 정의 const int button1Pin =A0; // 푸시 버튼 1 아날로그 핀 A0const int button2Pin =A1; // 푸시 버튼 2 아날로그 핀 A1const int button3Pin =A2; // 푸시 버튼 3 아날로그 핀 A2const int button4Pin =A3; // 푸시 버튼 4 아날로그 핀 A3//각 스테퍼 정의// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1);IN stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);// Setupvoid setup() { // 핀과 조건에 인터럽트를 할당합니다. , 상승); // 푸시 버튼 핀 입력 할당:pinMode(button1Pin, INPUT); 핀모드(버튼2핀, 입력); 핀모드(버튼3핀, 입력); 핀모드(버튼4핀, 입력); // 릴레이 핀 출력 할당 pinMode(ENABLE, OUTPUT);// pinMode(PinA, OUTPUT);// pinMode(PinB, OUTPUT); //LED 스트립 핀 설정 pinMode(REDPIN, OUTPUT); 핀모드(그린핀, 출력); 핀모드(블루핀, 출력); // 스테퍼 속도 할당 myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); //LCD 디스플레이 초기화 lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("아이템을 선택하세요."); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4"); analogWrite(REDPIN, 256); analogWrite(그린핀, 256); analogWrite(BLUEPIN, 256);}// Main loopvoid loop() { // If we've hit our target amount of coins, increment our credits and reset the cents counter if (cents>=targetcents) { credits =credits + 1; cents =cents - targetcents; } // If we haven't reached our target, keep waiting... else { } // Debugging zone lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print(cents); lcd.setCursor(3, 0); lcd.print("Coin Count"); lcd.setCursor(0, 1); lcd.print(credits); lcd.setCursor(3, 1); lcd.print("credit earned"); 지연(1000); // Now, write your own code here that triggers an event when the player has credits! if (credits> 0) { // read button assignment int button1State, button2State, button3State, button4State; button1State =digitalRead(button1Pin); button2State =digitalRead(button2Pin); button3State =digitalRead(button3Pin); button4State =digitalRead(button4Pin); // digitalWrite(ENABLE, HIGH);// Set state // for (i =0; i <5; i++); // define action when button 1 is pressed if (((button1State ==LOW) &&!(button2State ==LOW)))// if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //engage relay// digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); for (b =256; b> 0; b--); analogWrite(BLUEPIN, b); for (g =256; g> 0; g--); analogWrite(GREENPIN, g); for (g =256; g> 0; g--); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper0.step(stepsPerRevolution); //run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); for (b =0; b <256; b++); analogWrite(BLUEPIN, b); for (g =0; g <256; g++); analogWrite(GREENPIN, g); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); credits =credits - 1; cents =cents - cents; } // define action when button 2 is pressed if (((button2State ==LOW) &&!(button1State ==LOW))) // if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //engage relay// digitalWrite(PinB, LOW); analogWrite(GREENPIN, 256); for (b =256; b> 0; b--); analogWrite(BLUEPIN, b); for (r =256; r> 0; r--); analogWrite(REDPIN, r); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper1.step(stepsPerRevolution);//run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); for (b =0; b <256; b++); analogWrite(BLUEPIN, b); for (r =0; r <256; r++); analogWrite(REDPIN, r); credits =credits - 1; cents =cents - cents; } // define action when button 3 is pressed if (((button3State ==LOW) &&!(button4State ==LOW))) // if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //engage relay// digitalWrite(PinB, LOW); analogWrite(BLUEPIN, 256); for (r =256; r> 0; r--); analogWrite(REDPIN, r); for (g =256; g> 0; g--); analogWrite(GREENPIN, g); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper2.step(stepsPerRevolution);//run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); for (g =0; g <256; g++); analogWrite(GREENPIN, g); for (r =0; r <256; r++); analogWrite(REDPIN, r); credits =credits - 1; cents =cents - cents; } // define action when button 4 is pressed if (((button4State ==LOW) &&!(button3State ==LOW))) // if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //! engage relay// digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); analogWrite(GREENPIN, 256); for (b =256; b> 0; b--); analogWrite(BLUEPIN, b); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper3.step(-stepsPerRevolution);//run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); for (b =0; b <256; b++); analogWrite(BLUEPIN, b); credits =credits - 1; cents =cents - cents; } }}// Coin Increase loopvoid coinInterrupt() { // Each time a pulse is sent from the coin acceptor, interrupt main loop to add 5 cent and flip on the LED cents =cents + 5; digitalWrite(ledpin, HIGH);}

    회로도

    This is a complete Diagram of the system. It includes, ATX power supply, motors,LCD,LEDs, lights and controller

    제조공정

    1. EEG 기계
    2. 재봉틀
    3. 감자 튀김 자판기는 어떻게 작동합니까?
    4. 우유 자판기란?
    5. 칩 자동 판매기는 어떻게 뜨겁고 신선한 칩을 제공할 수 있습니까?
    6. 국수 자판기 란 무엇입니까?
    7. 차 커피 수프 자동 판매기 란 무엇입니까?
    8. 식사 준비 자판기로 건강한 식사하세요!
    9. 청량 음료 자동 판매기에서 무엇을 기대할 수 있습니까?
    10. 아이스 자판기:비즈니스 잠재력