查看: 1130|回复: 0

【chocho精品】“吃”钱币的机器人

[复制链接]
  • TA的每日心情

    2018-1-11 13:58
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2018-5-11 14:25 | 显示全部楼层 |阅读模式
    本帖最后由 dfrobot 于 2018-5-11 14:25 编辑

    每个“精分”机器人背后,都有一个同样“精分”的工程师
                                                                                                                 ——用Beetle与激光测距打造的吃钱小机器人



    有那么一群人,常年累月地混迹在正常人群里,小心行事的他们很难被常人发现,他们就是——“精分”工程师唯一能让他们现形的方法就是让他们做个小玩意儿出来。对不起,我憋不住了,我承认我是一名“精分”工程师。
    {:5_129:}
    想到硬币不方便携带,平时每次收到硬币都放在家里,搞得家里硬币成堆了。
    于是我就想,可以做一个吃硬币的机器人嘛,刚好用来存放硬币。说干就干!
    材料准备
          TowerProSG90舵机   1个;  购买地址
           品胜9V/250mAh镍氢充电电池  1个;  购买地址
          Gravity:VL53L0X ToF 激光测距传感器  1个;  购买地址
          Gravity I2C OLED-2864 显示屏  1个;    购买地址
          高品质 micro USB数据线  1根;    购买地址
          Beetle控制器  1个;    购买地址
          降压模块  1个;某宝有卖哟,哈哈,我是自拆了一个下来
          雪糕木棒若干;自备
          多层木板数块;自备
          微型合页带螺丝   1块;自备
          乳白木工胶、快干胶、热熔胶等;自备
    原理图
          使用Beetle作为主控板,连接激光测距传感器收集距离的数据,通过2864oled显示屏显示出相应的机器人表情,并在得到的数据基础上操作舵机的转动角度;以实现监测到前面有硬币的时候,oled显示相应表情,控制舵机将硬币抛入机身内。
    制作
    首先是切木板,粘接成盒体,将木板钻孔待上合页,将前面板切出一个oled大小的方孔.


    用合页连接机器人的上下部分身体,用1.5mm粗的铁丝弯出一个波形,在两侧装上适当长度的雪糕         棒,用雪糕棒为小机器人做上手臂,最后在舵机底部用木板增高:




    用雪糕棒,用铅笔画一个弧度,然后用小刀切下来,钻个小孔,然后将木块粘在舵机上

    在木盒正面板下部分中心位置打孔,放置激光测距传感器,机身背后打孔安装开关使用

    按照原理图焊接电路的各个部分

    最后使用热熔胶、快干胶,将所有的器件转入机器人机身内

    最后在手臂与身体上钻孔,安装一根铁丝支撑,达到手臂抬起连带上盖也可以上升的目的,调试达到最好的效果:

    至此,机器人的硬件部分就算制作完成了。


    接下来,下载运行程序到主控,点击连接下载程序,程序主要功能代码如下:

    kittenblock中小学创客名师推荐的图形化编程软件

    [mw_shl_code=applescript,true]#include "Arduino.h"
    #include "Wire.h"
    #include "DFRobot_VL53L0X.h"
    #include "U8glib.h"
    #include "font.h"
    #include <Servo.h>
    DFRobotVL53L0X sensor;
    Servo myservo;
    U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0);
    bool checkDistance(void){
    uint8_t i = 5;
    if(sensor.getDistance() <= 60 && sensor.getDistance() >= 20.00 && sensor.getDistance() != 5.00){
    while(i--){
    Serial.println(i);
    if(sensor.getDistance() <= 60 && sensor.getDistance() >= 20.00 && sensor.getDistance() != 5.00){
    }else{
    break;
    }
    delay(100);
    }
    }
      
    return((i==0)?true:false);
    }
    void caozuo()
    {
    Serial.println(sensor.getDistance());
    if (checkDistance())
    {
    delay(2000);
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits9);
    } while (u8g.nextPage());
    delay(500);
    myservo.write(30);
    delay(200);
    myservo.write(130);
    }
    }
    void setup() {
    Serial.begin(115200);
    Wire.begin();
    sensor.begin(0x50);
    sensor.setMode(Continuous, High);
    sensor.start();
    myservo.attach(11);
    }
    void loop()
    {
    unsigned char i;
    myservo.write(130);
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
    } while (u8g.nextPage());
    for (i = 8; i > 0; i--)
    {
    delay(100);
    caozuo();
    }
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits1);
    } while (u8g.nextPage());
    delay(100);
    caozuo();
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
    } while (u8g.nextPage());
    delay(100);
    caozuo();
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits2);
    } while (u8g.nextPage());
    delay(100);
    caozuo();
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
    } while (u8g.nextPage());
    for (i = 5; i > 0; i--)
    {
    delay(100);
    caozuo();
    }
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits3);
    } while (u8g.nextPage());
    delay(50);//bishuangyan 0.05s
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
    } while (u8g.nextPage());
    delay(50);//xiaolian 0.05s
    caozuo();
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits3);
    } while (u8g.nextPage());
    delay(50);//bishuangyan 0.05s
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
    } while (u8g.nextPage());
    delay(50);//xioalian 0.05s
    caozuo();
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits7);
    } while (u8g.nextPage());
    delay(50);//zuoxiaoyiyan 0.05s
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits4);
    } while (u8g.nextPage());
    for (i = 3; i > 0; i--)
    {
    delay(100);
    caozuo();
    }
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits7);
    } while (u8g.nextPage());
    delay(50);//zuoxiaoyiyan 0.05s
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
    } while (u8g.nextPage());
    delay(50);//xiaolian 0.05s
    caozuo();
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits8);
    } while (u8g.nextPage());
    delay(50);//youxiaoyiyan 0.05s
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits5);
    } while (u8g.nextPage());
    delay(100);//youdayiyan 0.1s
    caozuo();
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits8);
    } while (u8g.nextPage());
    delay(100);//youxiaoyiyan 1s
    caozuo();
    u8g.firstPage();
    do {
    u8g.drawXBMP( 0, 0, 128, 64, u8g_logo_bits0);
    } while (u8g.nextPage());
    delay(500);
    caozuo();
    u8g.firstPage();
    do {
    } while (u8g.nextPage());
    delay(200);
    caozuo();
    u8g.firstPage();
    do {
    u8g.setFont(u8g_font_unifont);
    u8g.drawStr( 23, 25, "Put a coin!");
    u8g.drawStr( 7, 55, "Get a surprise!");
    } while ( u8g.nextPage() );
    delay(500);
    caozuo();
    }
    [/mw_shl_code]


    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    有没人做过把arduino跟生物结合起来做课题的
    有没人做过把arduino跟生
    我想做一些这方面的有没有人做过可以稍微指点一下
    跪求,nano读两个软串口传感器,写入sd卡,一个读不到数
    跪求,nano读两个软串口传
    dfrobot的nano板,两个软串口连接攀藤pm2.5传感器和GPS ublox m8n,SPI连sd卡模块。
    Arduino2560/MegaPi与ROS机器人操作系统的连接
    Arduino2560/MegaPi与ROS
    大家好,我因为需要更多时间维系琐碎平凡的工作和生活,一段时间没有上Arduino论坛。
    atmegu328p开发板怎么做流水灯啊
    atmegu328p开发板怎么做流
    我是白小 求指点
    BuddyBlock 1.0.0 测试版发布,一款面向Arduino的图形化开发工...
    BuddyBlock 1.0.0 测试版
    BuddyBlock是一款面向Arduino图形化编程开发的集成开发工具,开发者可以通过积木模块
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表