构建一个自动糖果售货机

描述

  只需机器有四种类型的糖果,每种类型都有它的特殊代码,可以使用此特殊代码在获取糖果。实际上,我们打算激励孩子们使用现代技术创造自己的玩具,而不是浪费大量时间玩智能手机或 PC。

  回归到项目,

  如果你想从第一种口味中得到糖果,你应该在你的文案写 C111。

  如果你想从第二种口味中得到糖果,你应该在你的文案写 C112。

  如果你想从第三种口味中获得糖果,你应该在你的文案写 C113。

  如果你想从第四种口味中获得糖果,你应该在你的文案写 C114。

  第1步:你需要什么

DIY设计

  这些是该项目所需东西的清单:

  工具:

  1.螺丝刀

  2.钳子

  3. 平切刀

  4.数字万用表

  5. 双面胶带。

  6. 铜垫片(6mm 公 - 母)

  7. 胶带

  材料:

  1. 亚克力板 3mm

  2.胶合板3mm

  3. 螺丝和螺母

  组件:

  1. 8 x 标准金属伺服电机 (7.5 kg.cm)

  2. 螺栓 M4 x 10mm

  电子元件:

  1. Arduino MEGA 2560

  2. 1个Sheel

  3. 开关电源 (5V - 5A)

  4.小面包板

  5. 跳线(公 - 公)

  6. 跳线(公-母)

  第 2 步:机构和框架设计

DIY设计

  这一切都始于一个适当的设计,在我的例子中,一些草图以获得对尺寸和形状的良好感觉。在草图阶段之后很快就出现了 CAD 模型。我在 SolidWorks 中创建了我的模型。在对所有零件进行建模后,制作技术图纸。我使用这些图纸来加工激光切割机上的所有定制零件。

  由于我打算在世界各地的许多活动中随身携带这台机器,因此我将其设计为易于拆卸和安装,因此我使用螺​​钉和螺母、Martise 和 Tenon 来固定它的所有零件。

  第 3 步:机构和框架(制造和组装)

DIY设计

  我用激光切割机从胶合板和亚克力板上切割机器零件。然后我用 M4*10mm 螺栓将伺服电机固定到它们的载体上。固定伺服电机后,使用铜垫片将 Arduino Mega 和 1sheeld 固定到它们的载体上,然后固定电源,现在你可以将所有机器零件聚集在一起。

  第 4 步:电子和 Arduino 代码

DIY设计

  这里最重要的部分是为伺服电机供电,您应该直接从电源为伺服电机供电,以避免使 Arduino 板休息。不要忘记将所有地线相互连接在将电机与 Arduino 和 1Sheeld 连接后,从电源为它们供电,您应该按照以下步骤操作:

  第 1 步:将 1Sheeld 放在 Arduino 板上,然后将 Arduino 插入笔记本电脑或 PC。

  第 2 步:将 1Sheeld 应用程序下载到您的智能手机上。该应用程序可在 Google Play 商店中获取,网址为http://1sheeld.com/app

  第 3 步:下载 1Sheeld 库

  第 4 步:解压缩文件夹,将其复制并粘贴到您的 Arduino 库目录中。

  第 5 步:打开我的 Arduino Sketch(您将在附件中找到它

  第 6 步:上传您的草图 Hesre 是整个教程中最重要的部分,将 1Sheeld 切换到 Uploading-mode(这是板上标有 UART Switch 的开关),然后再将您的草图上传到 Arduino 板,以避免两者之间的串行冲突1Sheeld 和 Arduino,然后在 IDE 中按下 Upload 按钮。

  将 UART 开关推离 1Sheeld 徽标时,将打开上传模式。

  完成上传后,您需要将 1Sheeld 切换回操作模式。不要忘记!如果您不将 UART 开关切换回操作模式,您的项目将无法正常工作,因为 1Sheeld 和 Arduino 板之间将没有通信。

  当 UART 开关被推到最靠近 1Sheeld 标志时,操作模式被打开。

  第 7 步:使用 1Sheeld 应用程序

  在您的 Android 智能手机上打开 1Sheeld 应用程序。该应用程序将首先通过蓝牙扫描您的 1Sheeld,这需要几秒钟,手机会找到它。一旦它在屏幕上显示为 1Sheeld #xxxx,您将需要输入配对码(默认配对码为 1234)并通过蓝牙连接到 1Sheeld。

  注意:如果您遇到问题,请确保您的 Android 手机的蓝牙已打开,并且 Android 手机靠近您的 1Sheeld。

  第 8 步:访问 Twitter 和 Terminal Shields

  从屏蔽列表中选择 Twitter Shield 和 Terminal Shield,然后按应用程序右上角的多个屏蔽图标。

  Vending Machine.ino:

 #define CUSTOM_SETTINGS

#define INCLUDE_TWITTER_SHIELD
#define INCLUDE_TERMINAL_SHIELD

#include
#include

Servo BlockColoumn1;          // create servo object to control a servo
Servo BlockCandy1;            // create servo object to control a servo

Servo BlockColoumn2;          // create servo object to control a servo
Servo BlockCandy2;            // create servo object to control a servo

Servo BlockColoumn3;          // create servo object to control a servo
Servo BlockCandy3;            // create servo object to control a servo

Servo BlockColoumn4;          // create servo object to control a servo
Servo BlockCandy4;            // create servo object to control a servo

void setup()
{
  OneSheeld.begin();

  BlockColoumn1.attach(3);     // attaches the servo on pin 3 to the servo object
  BlockCandy1.attach(4);       // attaches the servo on pin 4 to the servo object
  
  BlockColoumn2.attach(5);     // attaches the servo on pin 5 to the servo object
  BlockCandy2.attach(6);       // attaches the servo on pin 6 to the servo object
  
  BlockColoumn3.attach(7);     // attaches the servo on pin 7 to the servo object
  BlockCandy3.attach(8);       // attaches the servo on pin 8 to the servo object
  
  BlockColoumn4.attach(9);     // attaches the servo on pin 9 to the servo object
  BlockCandy4.attach(10);      // attaches the servo on pin 10 to the servo object

  /* Subscribe to setOnSelected event for the Twitter shield. */
  Twitter.setOnSelected(&shieldSelection);
  /* Subscribe to onNewTweet event. */
  Twitter.setOnNewTweet(&myTweet);
}

void loop()
{

}

void shieldSelection()
{
  /* Track keyword 1Sheeld on Twitter. */
  Twitter.trackKeyword("C111");
  Twitter.trackKeyword("C112");
  Twitter.trackKeyword("C113");
  Twitter.trackKeyword("C114");
}

void myTweet(char * userName , char * userTweet)
{
  /* Check if the tweet has 1Sheeld keyword. */
  if (strstr(userTweet, "C111") != 0)
  {
    BlockCandy1.write(90);
    OneSheeld.delay(400);
    BlockCandy1.write(180);
    OneSheeld.delay(20);
    BlockColoumn1.write(90);
    OneSheeld.delay(400);
    BlockColoumn1.write(180);
    Terminal.println(" C111 Detected");
  }
  else if (strstr(userTweet, "C112") != 0)
  {
    BlockCandy2.write(90);
    OneSheeld.delay(400);
    BlockCandy2.write(180);
    OneSheeld.delay(20);
    BlockColoumn2.write(90);
    OneSheeld.delay(400);
    BlockColoumn2.write(180);
    Terminal.println(" C112 Detected");
  }
  else if (strstr(userTweet, "C113") != 0)
  {
    BlockCandy3.write(90);
    OneSheeld.delay(400);
    BlockCandy3.write(180);
    OneSheeld.delay(20);
    BlockColoumn3.write(90);
    OneSheeld.delay(400);
    BlockColoumn3.write(180);
    Terminal.println(" C113 Detected");
  }
  else if (strstr(userTweet, "C114") != 0)
  {
    BlockCandy4.write(90);
    OneSheeld.delay(400);
    BlockCandy4.write(180);
    OneSheeld.delay(20);
    BlockColoumn4.write(90);
    OneSheeld.delay(400);
    BlockColoumn4.write(180);
    Terminal.println(" C114 Detected");
  }
  else
  {
    BlockCandy1.write(180);
    BlockColoumn1.write(180);
    
    BlockCandy2.write(180);
    BlockColoumn2.write(180);
    
    BlockCandy3.write(180);
    BlockColoumn3.write(180);
    
    BlockCandy4.write(180);
    BlockColoumn4.write(180);
    
    Terminal.println(" Nothing Detected");
  }
}// void my tweet

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分