亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

糖果分配器

组件和用品

Arduino UNO
× 1
舵机(180度转弯)
× 1
Adafruit 标准 LCD - 16x2 蓝底白字
× 1
SparkFun 按钮开关 12mm
× 1
适用于 Arduino 的 PHPoC 扩展板
× 1
红外距离传感器
× 1
开关电源按钮
× 1
面包板(通用)
× 1

必要的工具和机器

烙铁(通用)

应用和在线服务

Arduino IDE

关于这个项目

项目

这是一种创建糖果分配器的简单方法,仅使用:红外传感器、伺服器和按钮。它可以分为以下步骤:

  • 制作和使用 Arduino Uno R3
  • 编码和设置 Arduino
  • 制作外壳和机械零件
  • 安装电子设备
  • 测试和使用

这是一个简短的演示视频:

编写代码对我来说是最难的部分,因为我仍然是编写代码语言的新手,但在多次错误和 Google 先生和朋友的帮助后,我设法做到了。写代码是这部分项目时间最长的。

感谢启发我做这个糖果分配器的人!这是以下的简化版本: https://www.hackster.io/gatoninja236/candy-dispenser-with-google-assistant-564724

创建盒子和机械零件

这是创建项目的有趣部分。在多次错误和不合适的部分之后,我至少花了一整天的时间才完全完成。

第一步

布局组件

这可能看起来很乱,但这是整理每个组件并测试运行每个部分以查看是否有任何错误的最简单方法。我布置了不同颜色的电线,以便于查看。我将所有组件放在一张纸板上,并找出先使用哪个。

步骤 2

创建盒子

我画了一张关于盒子应该是什么样子的技术图。大多数零件由纸板制成,有些零件由亚克力制成。然后我测量每个部分。

  • 正面和背面 =20 厘米 x 16 厘米(背面是亚克力)
  • 侧面 - 侧面 =12cm x 16cm
  • 顶部和底部 =20 厘米 x 12 厘米
max"

步骤 3

这是将它们全部连接在一起后的样子(首先使用遮蔽胶带)。

然后我剪掉了组件的位置:

  • 液晶显示屏 =7.2 厘米 x 2.5 厘米
  • 按钮 =1.2cm x 1.2cm

对于杯子:

  • 长 x 高 =9 厘米 x 12 厘米
  • 宽 x 深 =9cm x 9cm

不要忘记切掉传感器:

我把分配器做成阶梯状,这样糖果就不会马上掉下来:

第 4 步

我将面包板和 Arduino 放在一起。我用亚克力把它们粘在一起。这样它会节省很多空间。

第五步

开始将组件连接到板上。我从 LCD 和按钮开始。

接下来,在将所有电缆连接到组件上后,我将它们连接在盒子中间。

连接舵机:

这是从后面看的样子。我还添加了一个电源按钮来使用电池为分配器供电。

步骤 6

完成的样子。

代码

  • 糖果分配器
糖果分配器Arduino
//------LIBRARIES-----#include  #include #include //------LIBRARIES--- --// 将 LCD 地址设置为 0x27,用于 16 个字符和 2 行显示LiquidCrystal_I2C lcd(0x27, 16, 2);Servo myservo;int pos =90; // 伺服开始位置int buttonCLK =7; //buttonClockwise pinint buttonAntiCLK =6; //buttonAntiClockwise pin//int sensorPin =2; // 红外传感器连接到数字引脚 NO.2//int sensorState =0; // 变量sensorState 用于存储有关sensorint 状态的统计信息 set =0;const int avoidPin =5; //红外障碍传感器连接到引脚 5void setup(){ lcd.begin(); // 初始化 LCD lcd.clear(); myservo.attach(9); // 伺服数字 9 pinMode(buttonCLK, INPUT); pinMode(buttonAntiCLK, INPUT); pinMode(避免Pin,输入); //设置avoidPin为INPUT Serial.begin(9600);液晶背光(); // 打开黑光 lcd.setCursor(3,0); lcd.print("欢迎来到"); lcd.setCursor(3,1); lcd.print("糖果乐园");延迟(2000);液晶显示器(); lcd.setCursor(0,0); lcd.print("多少糖?"); lcd.setCursor(0,1); lcd.print("有点多"); delay(5000);}void loop(){ //-----------这是按钮的 IF 函数----------- if(digitalRead(buttonCLK) ==HIGH ) // buttonClockwise 被按下 { //TurnClockwise(); //传感器检测();液晶显示器(); lcd.print("请放杯子");延迟(2000);液晶显示器();设置 =设置 + 1; } if(digitalRead(buttonAntiCLK) ==HIGH) // buttonAntiClockwise 被按下 { //TurnAntiClockwise(); //传感器检测();液晶显示器(); lcd.print("请放杯子");延迟(2000);液晶显示器();设置 =设置 + 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”延迟(15)中的位置; // 等待 15 毫秒让舵机到达位置 } if(pos ==180) { delay(2000);谢谢你文本(); // 显示感谢文本 }}void TurnAntiClockwise(){ Serial.println("Candy 2 Being Dispensed"); CandyText2(); //显示糖果类型文本 for(pos =90; pos <180; pos +=1) // 从 0 度到 180 度 { myservo.write(pos); // 告诉伺服器转到变量“pos”延迟(20)中的位置; // 等待 15 毫秒让舵机到达位置 } if(pos ==180) { delay(3000);谢谢你文本(); // 显示感谢文本 } }void IRCLK(){ delay(1000); //创建一个 1 秒的延迟 boolean avoidVal =digitalRead(avoidPin); //读取pin4的值 lcd.setCursor(0,0); lcd.print("检测杯子"); lcd.setCursor(0,14); lcd.print("..."); if(avoidVal ==LOW) //如果值为低电平 { lcd.clear(); lcd.print("杯子放好");延迟(2000);顺时针转动(); }}无效IRAntiCLK(){延迟(1000); //创建一个 1 秒的延迟 boolean avoidVal =digitalRead(avoidPin); //读取pin4的值 lcd.setCursor(0,0); lcd.print("检测杯子"); lcd.setCursor(0,14); lcd.print("..."); if(avoidVal ==LOW) //如果值为低电平 { lcd.clear(); lcd.print("杯子放好");延迟(2000); TurnAntiClockwise(); } }void CandyText1(){ lcd.clear(); lcd.setCursor(4,0); lcd.print("浇注"); lcd.setCursor(1,1); lcd.print("Little Candy");}void CandyText2(){ lcd.clear(); lcd.setCursor(4,0); lcd.print("浇注"); lcd.setCursor(3,1); lcd.print("Lot Candy");}voidThankYouText(){ 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. Jawbreaker
  4. 棉花糖
  5. 软糖
  6. M &M® Candy
  7. 用于 FS2020 的带有 Arduino 的开关/LED 面板
  8. Arduino Spybot
  9. FlickMote
  10. 自制电视 B-Gone
  11. 主时钟
  12. 自制 16x8 矩阵上的 Arduino Nano 俄罗斯方块游戏