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

사탕 디스펜서

구성품 및 소모품

Arduino UNO
× 1
서보(180도 회전)
× 1
Adafruit Standard LCD - 파란색 바탕에 16x2 흰색
× 1
SparkFun 푸시버튼 스위치 12mm
× 1
Arduino용 PHPoC 실드
× 1
IR 거리 센서
× 1
전원 버튼 전환
× 1
브레드보드(일반)
× 1

필요한 도구 및 기계

납땜 인두(일반)

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

프로젝트

이것은 IR 센서, 서보 및 푸시 버튼만을 사용하여 캔디 디스펜서를 만드는 쉬운 방법입니다. 다음 단계로 나눌 수 있습니다.

<울>
  • Arduino Uno R3 만들기 및 사용
  • <울>
  • Arduino 코딩 및 설정
  • <울>
  • 케이스 및 기계 부품 만들기
  • <울>
  • 전자제품 설치
  • <울>
  • 테스트 및 사용
  • 다음은 짧은 데모 동영상입니다.

    아직 코딩 언어를 쓰는 것이 처음이기 때문에 코딩을 작성하는 것이 가장 어려운 부분이었습니다. 코드를 작성하는 것은 프로젝트의 이 부분에서 가장 긴 시간입니다.

    이 사탕 디스펜서를 만들도록 영감을 준 사람에게 감사드립니다! 다음은 단순화된 버전입니다. https://www.hackster.io/gatoninja236/candy-dispenser-with-google-assistant-564724

    상자 및 기계 부품 만들기

    이것은 생성하는 프로젝트의 재미있는 부분입니다. 여러 오류와 맞지 않는 부분이 있은 후 완전히 완료하는 데 적어도 하루 종일 걸렸습니다.

    1단계

    구성요소 배치

    이것은 매우 지저분해 보일 수 있지만 이것은 각 구성 요소를 정렬하고 오류가 있는지 확인하기 위해 각 부분을 테스트 실행하는 가장 쉬운 방법입니다. 보기 쉽도록 다양한 색상의 와이어를 배치했습니다. 나는 판지에 모든 구성 요소를 놓고 어떤 것이 먼저 들어가는지 분류했습니다.

    2단계

    상자 만들기

    상자가 어떻게 생겼는지에 대한 기술 도면을 그렸습니다. 대부분의 부품은 판지로 만들어지고 일부는 아크릴로 만들어집니다. 그런 다음 각 부분을 측정합니다.

    <울>
  • 앞면 &뒷면 =20cm x 16cm (뒷면은 아크릴)
  • <울>
  • 측면 - 측면 =12cm x 16cm
  • <울>
  • 상단 &하단 =20cm x 12cm
  • 3단계

    다 붙인 후의 모습입니다(마스킹 테이프를 먼저 사용).

    그런 다음 구성 요소의 위치를 ​​잘라냅니다.

    <울>
  • LCD =7.2cm x 2.5cm
  • <울>
  • 버튼 =1.2cm x 1.2cm
  • 컵:

    <울>
  • 길이 x 높이 =9cm x 12cm
  • <울>
  • 너비 x 깊이 =9cm x 9cm
  • 센서도 잘라내는 것을 잊지 마십시오:

    사탕이 바로 떨어지지 않도록 디스펜서를 계단식으로 만들었습니다.

    4단계

    브레드보드와 아두이노를 뒤에 배치했습니다. 나는 아크릴을 사용하여 서로 붙입니다. 이렇게하면 많은 공간이 절약됩니다.

    5단계

    보드에 구성 요소를 부착하기 시작합니다. LCD와 버튼으로 시작합니다.

    다음으로 구성품에 있는 모든 케이블을 배선한 후 상자 중앙에 부착했습니다.

    서보 부착:

    뒤에서 보면 이런 모습입니다. 또한 배터리를 사용하여 디스펜서에 전원을 공급하는 전원 버튼을 추가했습니다.

    6단계

    완성된 모습입니다.

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

    코드

    <울>
  • 사탕 디스펜서
  • 사탕 디스펜서Arduino
    //------LIBRARIES-----#include  #include #include //------LIBRARIES--- --// 16자 및 2줄에 대해 LCD 주소를 0x27로 설정합니다. displayLiquidCrystal_I2C lcd(0x27, 16, 2);Servo myservo;int pos =90; // 서보 시작 위치int buttonCLK =7; //버튼시계 방향 고정 buttonAntiCLK =6; //buttonAntiClockwise 핀//int sensorPin =2; // 디지털 핀 NO.2에 연결할 IR 센서 //int sensorState =0; // sensorint의 상태에 대한 통계를 저장하기 위한 변수 sensorState set =0;const int 피하기Pin =5; // IR 장애물 센서가 핀 5에 연결됩니다. setup(){ lcd.begin(); // LCD 초기화 lcd.clear(); myservo.attach(9); // 서보 디지털 9 pinMode(buttonCLK, INPUT); 핀모드(버튼안티CLK, 입력); 핀모드(핀, 입력을 피함); //voidPin을 INPUT으로 설정합니다. Serial.begin(9600); lcd.backlight(); // 블랙라이트 켜기 lcd.setCursor(3,0); lcd.print("환영합니다"); lcd.setCursor(3,1); lcd.print("캔디랜드"); 지연(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print("사탕의 양은?"); lcd.setCursor(0,1); lcd.print("조금 많이"); delay(5000);}void loop(){ //----------이것은 버튼에 대한 IF 함수입니다----------- if(digitalRead(buttonCLK) ==HIGH ) // buttonClockwise 눌림 { //TurnClockwise(); //센서감지(); lcd.clear(); lcd.print("컵을 넣어주세요"); 지연(2000); lcd.clear(); 세트 =세트 + 1; } if(digitalRead(buttonAntiCLK) ==HIGH) // buttonAntiClockwise 눌림 { //TurnAntiClockwise(); //센서감지(); lcd.clear(); lcd.print("컵을 넣어주세요"); 지연(2000); lcd.clear(); 세트 =세트 + 2; } if(set ==1) { IRCLK(); } if(set ==2) { IRAntiCLK(); } //-------------이것은 버튼에 대한 IF 함수입니다.-------- }void TurnClockwise(){ Serial.println("Candy 1 Being Dispensed"); 캔디텍스트1(); //캔디 유형 텍스트 표시 for(pos =90; pos <180; pos +=1) // 0도에서 180도로 이동 { myservo.write(pos); // 서보에 변수 'pos'의 위치로 이동하도록 지시합니다. delay(15); // 서보가 위치에 도달할 때까지 15ms를 기다림 } if(pos ==180) { delay(2000); ThankYouText(); // 감사 텍스트 표시 }}void TurnAntiClockwise(){ Serial.println("Candy 2 Being Dispensed"); 캔디텍스트2(); //캔디 유형 텍스트 표시 for(pos =90; pos <180; pos +=1) // 0도에서 180도로 이동 { myservo.write(pos); // 서보에 변수 'pos'의 위치로 이동하도록 지시합니다. delay(20); // 서보가 위치에 도달할 때까지 15ms를 기다림 } if(pos ==180) { delay(3000); ThankYouText(); // 감사 텍스트 표시 } }void IRCLK(){ delay(1000); //1초의 지연을 생성합니다. boolean 피하기Val =digitalRead(avoidPin); //pin4의 값을 읽습니다. lcd.setCursor(0,0); lcd.print("컵 감지"); lcd.setCursor(0,14); lcd.print("..."); if(avoidVal ==LOW) //값이 LOW인 경우 level { lcd.clear(); lcd.print("컵을 넣었습니다."); 지연(2000); 시계 방향으로(); }}무효 IRAntiCLK(){지연(1000); //1초의 지연을 생성합니다. boolean 피하기Val =digitalRead(avoidPin); //pin4의 값을 읽습니다. lcd.setCursor(0,0); lcd.print("컵 감지"); lcd.setCursor(0,14); lcd.print("..."); if(avoidVal ==LOW) //값이 LOW인 경우 level { lcd.clear(); lcd.print("컵을 넣었습니다."); 지연(2000); TurnAntiClockwise(); } }CandyText1(){ lcd.clear(); lcd.setCursor(4,0); lcd.print("붓기"); lcd.setCursor(1,1); lcd.print("작은 사탕");}CandyText2() 무효{ lcd.clear(); lcd.setCursor(4,0); lcd.print("붓기"); lcd.setCursor(3,1); lcd.print("많은 사탕");}ThankYouText() 무효{ lcd.clear(); lcd.setCursor(5,0); lcd.print("감사합니다"); lcd.setCursor(6,1); lcd.print("당신"); 지연(15); software_Reset();}void software_Reset() // 프로그램을 처음부터 다시 시작하지만 주변 장치를 재설정하지 않고 레지스터{ asm volatile ("jmp 0"); } 

    회로도

    조금 복잡해 보이지만 색상 배선 방법을 따르십시오.

    제조공정

    1. 사탕 지팡이
    2. 사탕 옥수수
    3. 죠브레이커
    4. 솜사탕
    5. 구미 캔디
    6. M &M® 캔디
    7. FS2020용 Arduino가 있는 스위치/LED 패널
    8. Arduino 스파이봇
    9. FlickMote
    10. 수제 TV B-Gone