亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
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 Dupont 连接器外壳公/母针连接器 40 针
需要让机器干净专业
× 1
Gamelec-Illuminated-Replacement-Microswitch
必须有按钮
× 1
面包板(通用)
焊板也很好
× 1
30 件双面 PCB 板原型套件
只需要一两个,但对于未来的项目来说是完美的尺寸
× 1
Arduino Mega 2560
使用的控制器是 Mega 2560
× 1
适用于 Arduino ARM 的 Tolako 5v 继电器模块
需要防止电机过热
× 1
HiLetgo 2pcs 1602 串行液晶模组显示器
没有这个你将不知道按下了什么按钮
× 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" 高。

安装前需要设置分隔墙。从顶部向下测量 16 1/4" 并在那里为底部搁板安装挡块。从顶部向下测量 8 1/4" 并为顶部搁板安装挡块。在左墙上完成这些步骤(从机器正面看),这样您就可以安装顶部和底部搁板的挡块。

**** 注意需要先安装底部搁板,否则很难固定到挡块上。

为搁板安装挡块后,使用 13" x 12" 面板并在每组挡块上安装一个。这将自动将分隔墙设置在适当的位置。然后在分隔壁右侧的顶部和底部固定挡块。然后将其固定到顶部和底部面板这将完全确定您的结构。

安装后面板并准备安装电机。确保打印了线圈轮,以便您可以测量它们并设置钻孔。测量轮子并在高度上增加 1/4" 以便为线圈旋转留出空间。您可能需要根据您的材料进行调整。在架子上测量超过 6 1/2" 以标记其中间。测量超过 3 1/4" 以找到每个搁板部分的中心。使用您刚才记录的高度测量来找到钻孔点。钻一个孔,这样您就可以将车轮连接到电机而不会摩擦轮轴板。完成安装电机并拧入紧固件。

设置电机继电器:

按如下方式连接引脚。使用芯片L293D(左边的缺口)(在电路图中)这样你就可以控制继电器。这将允许您将电机连接到电源。

(从左到右开始)

引脚 1 连接到控制器上的引脚插座 10(电路图中)

Pin2连接到控制器上的pin socket 9(电路图中)

引脚 3 连接到继电器的正极(3 个引脚面向您,引脚在左侧)(电路图中)

引脚 4 连接到面包板上的 12V 地(电路图中)

Pin 5 未使用(电路图中)

引脚 6 连接到继电器的接地侧(3 个引脚面向您,引脚在右侧)(电路图中)

引脚 7 连接到控制器上的引脚插座 8(电路图中)

引脚 8 连接到面包板上的 +12V(电路图中)

将继电器的中间引脚连接到面包板上的+12V(电路图中)

将继电器上的右侧引脚(3 个引脚面向您,引脚在右侧)连接到通往电机驱动器的正极(电路图中)

屏幕和按钮安装:屏幕 - 选择机器右侧的一个点(从正面看机器)并标记需要为屏幕显示部分制作的孔 (2.53937" x 0.5708661) 按钮- 在机器右侧选择一个点(从正面看机器)并标出需要为 4 个按钮制作的孔。如果使用完全相同的按钮,孔需要为 1.10236"零件清单。我喜欢用比需要的更小的钻头和砂纸把它弄到需要的尺寸。

请记住,您需要确保所有连接都位于与上图中完全相同的位置。图中显示的 LED 是内置于按钮中的 LED。图表将它们分开显示,但这仅用于显示并使原理图更易于阅读。

将每个电机连接到随附的驱动器。然后使用以下步骤将每个驱动程序连接到控制器:

电机设置:

电源应连接到面包板的 12V 侧。这个电源来自我们最后准备的ATX电源。然后将驱动器上的 4 个“输入”引脚连接到控制器。这些引脚如下

********* 请勿连接到此块中的前 2 个引脚,它们是 5V 引脚 - 本项目中未使用 *********

电机 1:蓝色引脚 22、24、26、28(电路图中)

电机 2:黄色引脚 23、25、27、29(电路图中)

电机 3:绿色引脚 30、32、34、36(电路图中)

电机 4:红色引脚 31、33、35、37(电路图中)

按钮连接:

将按钮 1 的一侧连接到 5v 电源,另一侧连接到接地的 220 电阻以及模拟引脚 A0(电路图中)

将按钮 2 的一侧连接到 5v 电源,另一侧连接到接地的 220 电阻以及模拟引脚 A1(电路图中)

将按钮 3 的一侧连接到 5v 电源,另一侧连接到接地的 220 电阻以及模拟引脚 A2(电路图中)

将按钮 4 的一侧连接到 5v 电源,另一侧连接到接地的 220 电阻以及模拟引脚 A3(电路图中)

液晶屏:

将屏幕连接到面包板的 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(电路图中)

Pin 15:连接到 5v 电源(电路图中)

引脚 16:接地(电路图中)

ATX 电源 :

只切断为设备供电所需的电线。其他电线在塑料连接器中更安全,如果需要,您可以将其用于其他项目。

ATX 引脚:

切割并剥去(接地)黑色线针 3 和(信号)绿色线针 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侧的地脚(图中未显示)

请提出您的所有问题,以便我可以协助更新,使这个项目成为有史以来最简单的项目。

代码

  • 自动售货机 - 无需更换 LED 灯
  • 自动售货机 - 带有不断变化的 LED 灯
  • Coin Acceptor 和完整的代码
自动售货机 - 无需更换 LED 灯Arduino
完成和理解项目所需的一切
// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  / /包括步进电机库//继电器设置#define ENABLE 10#define DIRA 8#define DIRB 9//Define "i"int i;//定义引脚部分//Stepper Connect 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//Stepper Connect 2int stepIN1Pin1 =23; int stepIN2Pin1 =25;int stepIN3Pin1 =27;int stepIN4Pin1 =29;//Stepper Connect 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//步进连接3int stepIN1Pin2 =30; =33;int stepIN3Pin3 =35;int stepIN4Pin3 =37;//定义stepsint stepsPerRevolution =2048; // 每转步数//定义按钮引脚端口const int button1Pin =A0; // 按钮 1 模拟引脚 A0const int button2Pin =A1; // 按钮 2 模拟引脚 A1const int button3Pin =A2; // 按钮 3 模拟引脚 A2const int button4Pin =A3; // Push Button 4 Analog Pin A3//定义每个步进器// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN2Pin);//StepIN4Pin stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);void setup() { // 分配按钮引脚输入:pinMode(button1P); pinMode(button2Pin,输入); pinMode(button3Pin,输入); pinMode(button4Pin,输入); // 分配引脚输出 pinMode(ENABLE, OUTPUT); pinMode(DIRA,输出); pinMode(DIRB,输出); // 分配步进速度 myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); //初始化液晶显示器lcd.begin(16, 2);液晶显示器(); lcd.setCursor(0, 0); lcd.print("选择你的项目"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4");}void loop() { // 读取按钮赋值 int button1State, button2State, button3State, button4State; button1State =digitalRead(button1Pin); button2State =digitalRead(button2Pin); button3State =digitalRead(button3Pin); button4State =digitalRead(button4Pin); digitalWrite(ENABLE, HIGH);// 设置状态为 (i=0;i<5;i++); // 定义按下按钮 1 时的动作 if (((button1State ==LOW) &&!(button2State ==LOW)))// 如果我们按下按钮 1 或按钮 2 {digitalWrite(DIRA,HIGH); //启用中继digitalWrite(DIRB,LOW);液晶显示器(); 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,低); //断开继电器digitalWrite(DIRB,LOW); } // 定义按下按钮 2 时的动作 if (((button2State ==LOW) &&!(button1State ==LOW))) // 如果我们按下按钮 1 或按钮 2 {digitalWrite(DIRA,HIGH); //启用中继digitalWrite(DIRB,LOW);液晶显示器(); 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,低); //断开继电器digitalWrite(DIRB,LOW); } // 定义按下按钮 3 时的动作 if (((button3State ==LOW) &&!(button4State ==LOW))) // 如果我们按下按钮 1 或按钮 2 {digitalWrite(DIRA,HIGH); //启用中继digitalWrite(DIRB,LOW);液晶显示器(); 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,低); //断开继电器digitalWrite(DIRB,LOW); } // 定义按下按钮 4 时的动作 if (((button4State ==LOW) &&!(button3State ==LOW))) // 如果我们按下按钮 1 或按钮 2 {digitalWrite(DIRA,HIGH); //启用中继digitalWrite(DIRB,LOW);液晶显示器(); 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,低); //断开继电器digitalWrite(DIRB,LOW); }}
自动售货机 - 带有不断变化的 LED 灯C#
看视频!
// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  //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;//定义引脚部分//Stepper Connect 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//Stepper Connect 2int stepIN1Pin1 =23;int stepIN2Pin1 =25;int stepIN27Pin1;int stepIN4Pin1 =29;//步进连接3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//步进连接4int stepIN1Pin3 =31;int stepIN2Pin3 =33Pin3; stepIN4Pin3 =37;//定义stepsint stepsPerRevolution =2048; // 每转步数//定义按钮引脚端口const int button1Pin =A0; // 按钮 1 模拟引脚 A0const int button2Pin =A1; // 按钮 2 模拟引脚 A1const int button3Pin =A2; // 按钮 3 模拟引脚 A2const int button4Pin =A3; // Push Button 4 Analog Pin A3//定义每个步进器// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN2Pin);//StepIN4Pin stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);void setup() { // 分配按钮引脚输入:pinMode(button1P); pinMode(button2Pin,输入); pinMode(button3Pin,输入); pinMode(button4Pin,输入); // 分配引脚输出 pinMode(ENABLE, OUTPUT);引脚模式(引脚A,输出); pinMode(PinB,输出); //LED 灯条引脚设置 pinMode(REDPIN, OUTPUT); pinMode(绿色PIN,输出); pinMode(BLUEPIN, OUTPUT); // 分配步进速度 myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); //初始化液晶显示器lcd.begin(16, 2);液晶显示器(); lcd.setCursor(0, 0); lcd.print("选择你的项目"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4");模拟写入(REDPIN,256);模拟写入(绿色密码,256); analogWrite(BLUEPIN, 256);}void loop() { // 读取按钮赋值 int button1State, button2State, button3State, button4State; button1State =digitalRead(button1Pin); button2State =digitalRead(button2Pin); button3State =digitalRead(button3Pin); button4State =digitalRead(button4Pin); digitalWrite(ENABLE, HIGH);// 设置状态为 (i =0; i <5; i++); // 定义按下按钮 1 时的动作 if (((button1State ==LOW) &&!(button2State ==LOW)))// 如果我们按下按钮 1 或按钮 2 { digitalWrite(PinA, HIGH); //接合继电器digitalWrite(PinB, LOW);模拟写入(REDPIN,256);对于 (b =256; b> 0; b--);模拟写入(BLUEPIN, b);对于 (g =256; g> 0; g--);模拟写入(GREENPIN,g);对于 (g =256; g> 0; g--);液晶显示器(); 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++);模拟写入(BLUEPIN, b);对于 (g =0; g <256; g++);模拟写入(GREENPIN,g);数字写入(引脚A,低); //断开继电器 digitalWrite(PinB, LOW); } // 定义按下按钮 2 时的动作 if (((button2State ==LOW) &&!(button1State ==LOW))) // 如果我们按下按钮 1 或按钮 2 { digitalWrite(PinA, HIGH); //接合继电器digitalWrite(PinB, LOW);模拟写入(绿色密码,256);对于 (b =256; b> 0; b--);模拟写入(BLUEPIN, b);对于 (r =256; r> 0; r--);模拟写入(REDPIN,R);液晶显示器(); 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");数字写入(引脚A,低); //断开继电器 digitalWrite(PinB, LOW);对于 (b =0; b <256; b++);模拟写入(BLUEPIN, b);对于 (r =0; r <256; r++);模拟写入(REDPIN,R); } // 定义按下按钮 3 时的动作 if (((button3State ==LOW) &&!(button4State ==LOW))) // 如果我们按下按钮 1 或按钮 2 { digitalWrite(PinA, HIGH); //接合继电器digitalWrite(PinB, LOW);模拟写入(BLUEPIN,256);对于 (r =256; r> 0; r--);模拟写入(REDPIN,R);对于 (g =256; g> 0; g--);模拟写入(GREENPIN,g);液晶显示器(); 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");数字写入(引脚A,低); //断开继电器 digitalWrite(PinB, LOW);对于 (g =0; g <256; g++);模拟写入(GREENPIN,g);对于 (r =0; r <256; r++);模拟写入(REDPIN,R); } // 定义按下按钮 4 时的动作 if (((button4State ==LOW) &&!(button3State ==LOW))) // 如果我们按下按钮 1 或按钮 2 { digitalWrite(PinA, HIGH); //接合继电器digitalWrite(PinB, LOW);模拟写入(REDPIN,256);模拟写入(绿色密码,256);对于 (b =256; b> 0; b--);模拟写入(BLUEPIN, b);液晶显示器(); 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");数字写入(引脚A,低); //断开继电器 digitalWrite(PinB, LOW);对于 (b =0; b <256; b++);模拟写入(BLUEPIN, b); }}
Coin Acceptor 和完整的 copdeC#
完整代码
// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#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;//定义引脚部分// Stepper Connect 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//Stepper Connect 2int stepIN1Pin1 =23;int stepIN2Pin1 =25;int stepIN3Pin1 =27;int stepIN29Pin; 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//Stepper Connect 4int stepIN1Pin3 =31;int stepIN2Pin3 =33;int stepIN3Pin3 =35;int stepIN37Pin33//定义步数2048; // 每转步数//定义按钮引脚端口const int button1Pin =A0; // 按钮 1 模拟引脚 A0const int button2Pin =A1; // 按钮 2 模拟引脚 A1const int button3Pin =A2; // 按钮 3 模拟引脚 A2const int button4Pin =A3; // Push Button 4 Analog Pin A3//定义每个步进器// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN2Pin);//StepIN4Pin stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);// Setupvoid setup() { // 将中断分配给Pin和conditionalruptpinInterrupt(digitalruptpinInterrupt) , 上升); // 分配按钮引脚输入:pinMode(button1Pin, INPUT); pinMode(button2Pin,输入); pinMode(button3Pin,输入); pinMode(button4Pin,输入); // 分配继电器引脚输出 pinMode(ENABLE, OUTPUT);// pinMode(PinA, OUTPUT);// pinMode(PinB, OUTPUT); //LED 灯条引脚设置 pinMode(REDPIN, OUTPUT); pinMode(绿色PIN,输出); pinMode(BLUEPIN, OUTPUT); // 分配步进速度 myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); //初始化液晶显示器lcd.begin(16, 2);液晶显示器(); lcd.setCursor(0, 0); lcd.print("选择你的项目"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4");模拟写入(REDPIN,256);模拟写入(绿色密码,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.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.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.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.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.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. 脑电图机
  2. 自动售货机
  3. 投票机
  4. 缝纫机
  5. 炸薯条自动售货机如何工作?
  6. 什么是牛奶自动售货机?
  7. 薯片自动售货机如何提供热辣新鲜的薯片?
  8. 什么是面条自动售货机?
  9. 什么是茶咖啡汤自动售货机?
  10. 用备餐自动售货机吃一顿健康的饭菜!
  11. 对软饮料自动售货机有何期待?
  12. 冰棒自动售货机:商业潜力