单片机简单炫酷灯光程序_51单片机简易秒表程序 - CSDN
  • 这个程序简单,能让你的led呼吸起来!很好用,希望能帮大家啊
  • 用16盏以上的LED小灯,实现至少4种彩灯灯光效果(不含全部点亮,全部熄灭); 可以用输入按钮在几种灯光效果间切换; 可以通过按钮暂停彩灯效果,使小灯全亮,再次按下相同按钮后继续之前的效果; 增加自动在几种...

    题目要求

    • 用16盏以上的LED小灯,实现至少4种彩灯灯光效果(不含全部点亮,全部熄灭);
    • 可以用输入按钮在几种灯光效果间切换;
    • 可以通过按钮暂停彩灯效果,使小灯全亮,再次按下相同按钮后继续之前的效果;
    • 增加自动在几种效果间切换的功能,并设置一个按钮可以在自动模式和手动模式间切换;
    • 使用定时中断延时。

    运行效果

    (为方便演示,速度已调快一倍处理)
    最终实现的效果
    一共实现有十钟灯光效果,分别是:

    顺时针流水灯、逆时针流水灯、交替闪烁、顺时针对角灯、逆时针对角灯、顺时针逐个点亮、顺时针逐个熄灭、逆时针逐个点亮、逆时针逐个熄灭、二进制加法。

    完整代码

    #include <reg51.h>
    #define false 0
    #define true 1
    #define uchar unsigned char
    #define uint unsigned int
    sbit pause_key = P3^0;  //暂停按钮
    sbit auto_key = P3^1;   //手动模式的效果切换
    sbit change_key = P3^2; //手动模式效果切换
    sbit pauseLed = P3^6;   //暂停、启动指示灯
    sbit autoLed = P3^7;    //自动、手动模式指示灯
    int ledCode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //led段码(单个显示)
    int ledCode2[8]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; //led段码(半显示半灭)
    int disCode[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //数码管段码 0~9
    void displayLed(void);  //显示led的主函数
    void keyScan(void); //键盘扫描处理函数
    void Delay10ms(unsigned int n); //延时10ms
    bit isPause = false;    //是否暂停
    bit isAuto = true;  //是否自动运行
    bit isChange = false;   //是否要切换下一个效果
    uchar time;   //计时满0.5s
    uchar types;    //第几种灯光显示方案
    uint counts;    //灯光的第几个
    /******************************************************************************* 
    * 函 数 名          : T0_INT
    * 函数功能         : T0定时器中断函数
    * 输      入         : 无
    * 输      出         : 无 
    *******************************************************************************/
    void T0_INT(void)  interrupt 1
    {
        TL0= (65536-50000)/256;
        TH0= (65536-50000)%256;
        time ++;
        if(time >= 10) //定时时间:0.5s
        {
            time=0;
            if(isChange == true)    //可以变换下一种显示效果了
            {
                counts = 0;
                types++;    //显示下一种效果
                if(types > 9) types = 0;
                P0 = disCode[types];        //更新数码管显示
                isChange = false;
            }
            displayLed();
            counts++;
        }
    }
    /******************************************************************************* 
    * 函 数 名          : main
    * 函数功能         : 主函数
    * 输      入         : 无
    * 输      出         : 无 
    *******************************************************************************/
    void main(void)
    {
        TMOD=0x61; //0110 0001  //方式一
        TL0= (65536-50000)/256;     //50ms
        TH0= (65536-50000)%256;
        TR0=1;      //开启T0
        ET0=1;      //T0中断允许
        EA=1;   //总中断开启
        time = 0;   //定时器时间扩种(0.5s)
        counts = 0; //灯光的第几次    
        types = 0;  //灯光显示模式
        pauseLed = 0; //暂停指示灯灭
        P0 = disCode[types];        //更新数码管显示
        while(1)
        {
            keyScan();  //键盘扫描及处理
        }
    }
    /******************************************************************************* 
    * 函 数 名          : keyScan
    * 函数功能         : 键盘扫描处理
    * 输      入         : 无
    * 输      出         : 无 
    *******************************************************************************/
    void keyScan(void)
    {
        if(pause_key == 0)  //按下了暂停按钮
        {
            Delay10ms(1);
            if(pause_key == 0)
            {
                isPause = ~isPause;
                pauseLed = isPause;
                if(isPause == true)
                {
                    ET0=0;      //关闭T0中断
                    P0 = 0xfd;  //数码管显示 “-”
                    P1 = 0x00;  //所有的灯都亮起来
                    P2 = 0x00;
                }else{
                    ET0=1;      //T0中断允许
                    P0 = disCode[types];        //更新数码管显示
                    displayLed();
                }
                while(pause_key == 0);  //防止按键重复检测
            }
        }
        if(auto_key == 0)   //自动、手动切换按键按下
        {
            Delay10ms(1);
            if(auto_key == 0)
            {
                isAuto = ~isAuto;
                autoLed = isAuto;
            }
            while(auto_key == 0);   //防止按键重复检测
        }
        if(change_key == 0 && isAuto == false)  //手动模式,并且效果切换按下
        {
            Delay10ms(1);
            if(change_key == 0)
            {
                isChange = true;
            }
            while(change_key == 0); //防止按键重复检测
        }
    }
    /******************************************************************************* 
    * 函 数 名          : displayLed
    * 函数功能         : 显示led灯
    * 输      入         : (全局变量 )types:显示效果;counts:当前效果下的第几次
    * 输      出         : 无 
    *******************************************************************************/
    void displayLed(void)
    {
        switch(types)
        {
            case 0: //顺时针旋转led灯
            {
                if(counts >= 16) counts = 0;
                if(counts >=15)
                {
                    if(isAuto == true) isChange = true;
                }
                if(counts <8)
                {
                    P1 = 0xff;
                    P2 = ledCode[7-counts];
                }
                else
                {
                    P1 = ledCode[15-counts];
                    P2 = 0xff;
                }
                break;
            }
            case 1: //逆时针旋转LED灯
            {
                if(counts >= 16) counts = 0;
                if(counts >=15)
                {
                    if(isAuto == true) isChange = true;
                }
                if(counts <8)
                {
                    P1 = ledCode[counts];
                    P2 = 0xff;
                }
                else
                {
                    P1 = 0xff;
                    P2 = ledCode[counts-8];
                }
                break;
            }
            case 2: //交叉替换
            {
                if(counts >= 16) counts = 0;
                if(counts >=15)
                {
                    if(isAuto == true) isChange = true;
                }
                if(counts % 2 == 0) //偶数
                {
                    P1=0xaa;
                    P2=0xaa;
                }
                else
                {
                    P1=0x55;
                    P2=0x55;
                }
                break;
            }
            case 3: //对角顺时针
            {
                if(counts >= 8) counts = 0;
                if(counts >=7)
                {
                    if(isAuto == true) isChange = true;
                }
                P1 = ledCode[7 - counts];
                P2 = ledCode[7 - counts];
                break;
            }
            case 4: //对角逆时针
            {
                if(counts >= 8) counts = 0;
                if(counts >=7)
                {
                    if(isAuto == true) isChange = true;
                }
                P1 = ledCode[counts];
                P2 = ledCode[counts];
                break;
            }
            case 5: //顺时针逐个点亮
            {
                if(counts >= 17) counts = 0;
                if(counts <8)
                {
                    P1 = ~ledCode2[7 - counts];
                    P2 = 0xff;
                }
                else if(counts <16)
                {
                    P1 = 0x00;
                    P2 = ~ledCode2[15 - counts];
                }
                else    //全亮
                {
                    P1 = 0x00;
                    P2 = 0x00;
                    if(isAuto == true) isChange = true;
                }
                break;
            }
            case 6: //顺时针逐个又灭掉
            {
                if(counts >= 17) counts = 0;
                if(counts <8)
                {
                    P1 = ledCode2[7 - counts];
                    P2 = 0x00;
                }
                else if(counts <16)
                {
                    P1 = 0xff;
                    P2 = ledCode2[15 - counts];
                }
                else    //全灭
                {
                    P1 = 0xff;
                    P2 = 0xff;
                    if(isAuto == true) isChange = true;
                }
                break;
            }
            case 7: //逆时针逐个点亮
            {
                if(counts >= 17) counts = 0;
                if(counts <8)
                {
                    P1 = 0xff;
                    P2 = ledCode2[counts];
                }
                else if(counts <16)
                {
                    P1 = ledCode2[counts - 7];
                    P2 = 0x00;
                }
                else    //全亮
                {
                    P1 = 0x00;
                    P2 = 0x00;
                    if(isAuto == true) isChange = true;
                }
                break;
            }
            case 8: //逆时针逐个灭掉
            {
                if(counts >= 17) counts = 0;
                if(counts <8)
                {
                    P1 = 0x00;
                    P2 = ~ledCode2[counts];
                }
                else if(counts <16)
                {
                    P1 = ~ledCode2[counts - 7];
                    P2 = 0xff;
                }
                else    //全亮
                {
                    P1 = 0xff;
                    P2 = 0xff;
                    if(isAuto == true) isChange = true;
                }
                break;
            }
            case 9: //二进制加法
            {
                if(counts >= 255) counts = 0;
                if(counts == 254 && isAuto == true) isChange = true;
                P1 = ~counts;
                P2 = ~counts;
                break;
            }
            default:
                types = 0;
                P0 = disCode[types];        //更新数码管显示
        }
    }
    /******************************************************************************* 
    * 函 数 名          : Delay10ms (多个) 
    * 函数功能         : 延时函数,延时n*10ms 
    * 输      入         : n-延时次数 
    * 输      出         : 无 
    *******************************************************************************/
    void Delay10ms(unsigned int n)
    {
        unsigned char a, b;
        for (; n>0; n--)
        {
            for (b=38; b>0; b--)
            {
                for (a=130; a>0; a--);
            }
        }
    }
    

    完整的 proteus 仿真图布局

    完整的 proteus 仿真图布局

    打包下载

    源代码、编译过的 HEX 文件以及仿真图已打包上传,下载地址:

    https://download.csdn.net/download/oqqmoon1234/9715019

    展开全文
  • 系统配套人机界面组态软件HMImaker设计界面,可“所见即所得”、“0”代码快速生成炫酷图形界面,让开发嵌入式图形界面,如“制作PPT”一样简单、快速!支持各种通讯协议,比如单片机协议,modbus协议,西门子PLC...


    介绍工业串口液晶显示触摸屏与人机界面组态软件HMImaker的开发指南,工业液晶显示触摸屏是一种包含TFT LCD显示屏、LCD控制器、触摸屏、人机界面组态软件系统和单片机TTL电平串口,RS232,RS485,以太网等通讯接口于一体的嵌入式智能显示终端。工业串口液晶显示触摸屏技术开发是基于嵌入式控制系统采用FPGA纯硬件驱动显示,无任何操作系统,零启动时间,上电即刻运行,速度和可靠性领先于其他方案。系统配套自主研发设计的,具有知识产权保护的人机界面组态软件HMImaker设计界面,可“所见即所得”、“0”代码快速生成炫酷图形界面,让开发嵌入式图形界面,如“制作PPT”一样简单、快速!支持各种通讯协议,比如单片机协议,modbus协议,西门子PLC协议,三菱PLC协议,台达PLC通讯协议等,支持各种组态控件,关联通讯变量地址即可与下位机通信,10分钟内完成人机界面设计。

    ——支持51ARMDSP等单片机,西门子,三菱,台达,欧姆龙等主流PLC,支持modbus通讯协议。

    ——串口屏专业人机界面组态软件HMImaker "0"代码、 "0"编程、"所见即所得"、如制作PPT简单快速。

    具备有:ARM主板、串口液晶触摸屏,嵌入式工控主板、嵌入式工控机、工控机、单片机人机界面、嵌入式人机界面、PLC人机界面等。驱动尺寸几乎涵盖3.5寸到52寸的所有型号,具体包括3.5寸、4.3寸、5.6寸、7寸、8寸、10.4寸、12.1寸,15寸、17寸、18寸、19寸、21寸、23寸、24寸、32寸、42寸、52寸等数十个显示尺寸产品广泛应用于工业自动化、电力、电信、环保、医疗、金融、石油、化工、交通、能源、地质、冶金、公共查询与监控、仪器仪表等数十个行业和领域。

    一、电子看板系统:工厂生产管理看板,温湿度电子看板,万年历电子钟,比赛计分牌

    二、排队机系统:医院分诊排队系统,银行排队机,行政信息查询显示终端等

    三、汽车电子行业:汽车检测维修设备,公交系统,地铁系统,铁路系统,交通设备等。

    四、机械自动化行业:包装机械,塑料机械,数控机床,自动化生产线等。

    五、仪器仪表行业:美容仪器,医疗器械,诊断分析仪器,手术室控制系统等。

    六、环保行业:水处理控制,大气污染监控,锅炉控制,环境监测,空调控制系统等。

    七、交通设备行业:检票系统,售票系统,IC卡查询与充值系统等。

    八、智能家居行业:空气净化设备,空调控制,灯光控制,家居设备控制等。

    九、自助终端行业:POS机,刷卡机,收银机,点菜机等。

    十、电力行业:电力检测设备,智能抄表,电力智能装置控制系统等。




    工业串口屏人机界面组态软件HMImaker控件介绍



    (1) 操作按钮控件:选择控件,画面任意位置拉一个需要大小的框框,即建立了控件。无需用户MCU程序参与,即可实现画面的跳转。用户程序也可以控制按钮功能,开关按下和弹起、自定义按钮等功能。若按下某个按钮,设备将改变该变量管理的变量地址的值,可以灵活设置按键的功能。当用户操作按钮时,该部件监控的地址的值会根据字开关类型而发生变化。操作按钮的分类:
    设置设置为目标数:每次按下按钮时,为变量地址所设置一个常数; 
    递加:每次按下按钮时,变量地址的数值递增一次,递增幅度是“操作数”的值; 
    递减:每次按下按钮时,变量地址的数值的值递减一次,递减的值是“操作数”的值;
    (2) 位开关控件:对指定的PLC或者HMI位地址进行操作、监控和显示;当位开关被按下时,操作地址的位值将按照开关类型所描述的那样变化。当“监测”可用时,位开关所显示的状态是监控地址所指向的位的状态。
    例如:如果监控地址所指的位的值为1,则位开关将显示开状态的标签、位图和向量图:反之,则显示关状态的标签、位图和向量图。
    位开关的分类:
    OFF:将操作地址所指的位置0;
    ON:将操作地址所指的位置1;
    复归型:当位开关按下时,操作地址所指的位被置为1,弹起时又被置为0;
    切换型: 每次按下位开关时,操作地址所指的位的值将被切换一次 (在0和1之间来回切换)。
    (3)单选按钮控件:对指定的PLC或者HMI字节或字地址进行操作、监控和显示;当单选被按下时,操作地址的位值将按照设置的值进行变化。
    (4)实时数据控件:用于显示或修改保存在PLC或者其他连接设备中数据寄存器的数值,例如速度,电流,压力等。可以采用自制字体进行个性化的显示。
    (5)字符控件:是以字符格式来显示(写入)PLC或单片机的数据,它可以显示(写入)一个字的数据,也可以显示(写入)多个连续字的数据。可以控制设置文本显示的位置、字体、颜色,用户MCU只需对字符控件变量地址发送显示的数据即可,还支持弹出内置键盘录入文本内容。
    (6)动态图片控件:根据PLC或单片机变量地址对应值变化更换图片),以图片形式展示当前值可控制动画播放、停止、暂停、上一帧,下一帧和指定帧播放,还可以对图片进行移动控制,根据预定的轨迹进行移动。
    (7)曲线控件:用户MCU只需发送AD采样数据,串口屏会自动进行拟合,动态推移显示。
    (8) 进度条控件:是一种显示数字形式的控件,主要用于显示模拟量数据,如温度、压力、流量等,它根据设置的满额度值和零额度值以百分比的形式来显示数据,还可以根据需要设置变化方向。
    (9) 信号灯控件:监视指定的位的状态,此位为0,指示灯将显示关状态的位图、向量图和状态文本;为1,则显示开状态的位图、向量图和状态文本。
    (10) 区域控制控件:特殊功能的控制,比如设置双击功能,右键菜单功能,子窗口移动功能等。
    工业串口屏人机界面组态软件开发步骤
    任何广州易显的串口液晶触摸屏的开发都可以使用人机界面组态软件HMImaker进行界面开发,所有控制只需通过变量地址来实现。只需要3个步骤,即可在30分钟内完成复杂的人机交互设计,真正的 “所见即所得,零代码编程”。
    (1) 准备美工素材。
    根据项目需求,通过专业美工将开机画面、背景图片,文本背景、按钮图标、提示框等全部设计好。
    (2) 利用配套的人机界面组态软件HMImaker软件进行画面编辑、控件配置和图片下载。
    首先利用上位机人机界面组态软件HMImaker,新建工程,设置好通讯协议,将预先设计好的美工图片进行界面排版和控件变量配置,然后运行内置的“模拟LCD/VGA显示屏”进行模拟仿真,界面做好后进行工程编译,最后通过USB将整个工程图片和配置信息下载到串口屏内部存储器中。
    (3) 用户PLC或单片机串口控制画面显示与操作。
    用户PLC或单片机与广州易显串口液晶触摸屏通过串口连接好,上电即可进行画面的显示控制操作了。


    展开全文
  • 一个字,就是干

    序言

    在8月底的一次微信谈话中,我定下了一个目标~要用一次性筷子搭起一座埃菲尔铁塔!
    其实也不一定是用一次性筷子,只是主要耗材是木料,当然我是不可能选择做木雕的,那东西你给我几个亿我都不想去碰,主要是埃菲尔的内部构造,木雕是不能够做到极致的,但也不是说我用材料搭起来就能做多完美,只是做个对比。
    虽然以前有过一些一次性筷子的作品,比如高中时候为了耍帅,课堂上用小刀,跟一双一次性筷子拼接了一把“巨剑”,那时候比较热门玩毒奶粉咯,所以热衷于里面的炫酷武器无不理由=。=剑身那会还到文具店买了一支红色水笔芯,把笔头拔了,将里边的红色液体滴在剑身上涂均,在自家走廊上晒了一个中午,晚上那会想试试染料干了没还用手去摸了下,谁知立马就印了个指纹在上面,吓得我又上了一层色,那阵子捣鼓这个手指也是不小心染红了几个,身边人都以为我干嘛干嘛了,当然也少不了老妈的几顿唠叨。那时候好像是到了高三才有的一把直板手机~诺基亚6210,200万的像素低得可怜,不过好像也没拍过照片下来,做完过了一两天就把它送人了,现在想想居然会有人要,哈哈哈,很神奇。
    在大学时候不知怎么的就参加了一个变废为宝的系部比赛,具体参赛理由我也忘了,那会儿好像是听一个朋友说要去参加比赛,然后只会用垃圾袋圈一朵小花-。-那时候听到她这个说法我也是有点汗颜,然后就突发奇想跟她说一起组队参赛,作品我来解决,因为一旦有了想法,只要不是让我去读什么理论书籍,我感兴趣的事都会很有动力去完成的。其实那个时候也是有个苗头要做些什么的,因为是变废为宝的比赛,理所当然我第一个想到的是一个性筷子的作品了,做了一个多星期,过程就不说了,还好那时候有一边拍照记录,直接甩几张成品图吧。


    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述


    拍过程照片也是为了做参赛宣传PPT,那会还有人气奖需要微博拉票也是很苦逼的,QQ好友一个个私聊宣传,最后还是没评上,心里也深知拉票再多也没有别人买水军的厉害上台做作品介绍也是临时发挥,作品是在截止上交作品前一个钟交到部门那里去的,很多后续创意也没时间去多想,不过我还是很喜欢这个作品,最后是评到了二等奖,拿了一个电动驱蚊器-。-不太明白这个东西对我一个宿舍住六楼高海拔的人来说有什么用~不过能做出来已经很满意了,得什么奖不重要。
    还有一个是在宿舍手机充电放桌子上经常会因为拿东西扯到充电线,所以用上面比赛用剩的边角料做了一个可以粘墙上的手机座子,这样手机充电就可以直接放在贴墙的座子上面,充电线也是靠墙的,不用再担心什么了,记得用室友手机拍过一张效果图,但后面找不着了,也算了,这不是重点。

    正文

    其实要做一个埃菲尔真不是一个好工事(针对我自己对成品效果来说),网上百度到很多图片都没有埃菲尔比较清晰的部位图,因为搭建过程要涉及到,有个蓝图是最好的选择,所以我也是找了很多图片,还有埃菲尔的金属装饰品细节查看,比较庆幸的是我找到的埃菲尔的一个记录视频,不过也是不够详细,不清楚的部分只能靠想象力跟创意性了。
    在自己构造蓝图的过程中我用到了SolidWorks,一个比较不错的3D产品绘制软件,其实这个也是最近偷师来的,然后在一边画的时候一边学习。从9月3号开始3D蓝图的动工,至10月26号完成3D成品。其实是在工作闲暇时间跟晚上回宿舍的加班时间画的,所以一个时间稍微长点接近两个月时间,不过也幸好是闲暇时间来画图,因为中间很多细节都要时间来思考跟探究构造,所以这样的安排下来工作量刚刚好,如果让我花一两个星期时间一直画这个蓝图,那恐怕我承受不来,在这段期间,除了不知道结构在寻找资料的烦恼外,也有因为一个结构的基础部分尺度画错,导致拼接的时候对不上要整个重新画,要知道重画时候的心理阴影,而这也仅仅是一个人的努力,没有其他人给你帮助,里面一个比较复杂的结构都要花上一个多星期时间来完成。下面分享一些主要结构图~


    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述


    好啦,只是为了做个模型我也是把自己折腾得够呛的,可以看到整个Eiffle都被肢解为多个部位来设计,就单个部位的成品全屏图还是看的比较清晰的,拼接过后为了查看整体效果也只能缩放到屏幕大小来看,所以线条构造一多看起来密密麻麻的,这里有密集恐惧症的同学慎入哈,哈哈哈。特别是后期整体效果图出来的时候,连我自己都看不下去了,放全屏大小线条太密了,只能看到外轮廓,不过部位放大还是可以看到每个方位细节的构造的,每个部件的俯视图还是蛮有艺术感的,这就是SolidWorks软件的好处,还可以做上色处理,不过这里就算了,上色对于我的要求没什么帮助,而且找配色还要花不少时间。
    当模型蓝图出来后,下一步当然就是搭建选材的采购了,这在画图的同时我也有稍微去逛逛某宝,最后把采购厂家定在一个制作模型沙盘的旗舰店,我需要的大部分耗材都能在这里找到,其实说的耗材大部分说的是制作工具,真正的搭建材料也就是一些圆木棒,雪糕棒(做每一层的夹板用的,封顶小屋也用的到)等,由于也是第一次接触这些木材,对于我的搭建要求(木材韧性、可塑性等)我也是要先买点样品回来再做决定的,像圆木棒的材质有荷木、桦木等,大概就在这两种里面选一个了,而且有比较多的规格,考虑到模型由底层越往上搭木棒直径会越来越小,所以规格挑选跟数量也是一个难题,所幸到双十一前还有点时间来考虑这个,下面附上一张买回来的工具跟木材样品~圆木棒是荷木跟桦木两种而且规格大小也是错开买的,但这里我真的是犯了一个错误,两种木材买了不同直径的,这样无法比较两种木材的韧性哪种好点,因为作为塔脚的那些模型主干肯定要韧性比较好,支撑性也比较强。除了圆木棒还有两种规格的雪糕棒,一根长的松木板,还有几张10*10的椴木板;
    这里写图片描述
    工具方面买了一个直流电机,有配套带电源头的但是我买了单件的,因为我准备接一台开关电源来供电,两种规格的钻头夹,12种规格的钻头(考虑需要在模型上钻孔处理),两片35mm的钢锯齿片(切割木材用的),一根30cm的钢尺,一把迷你塑料游标卡尺(=。=我是没想到游标卡尺也有迷你版),两卷细铜丝(后期电路布线用),还有两种胶水,以前的作品可能文具店买2、3支502就能完成,但这个估计不止这个量,所以也买了胶水的样品试试。
    可能你会好奇我还买了细铜丝,而且提到了电路布线,没错,不用猜了,我就是想在成品模型上面布线做电路。
    在上文提到了找了Eiffle的纪录片视频看了,在里面也看到了实际的Eiffle铁塔在夜晚也是有灯光效果的,就像现在广州的小蛮腰,作为一座城市的建筑性标志,怎么可以在夜晚就黯然失色了呢~所以我也想到了给我的作品添加灯光效果,现在没什么演示也只能简单的语言表达了。我计划在模型上面不规则的布上不计其数的LED灯(其实在设计者看来灯的布局还是很有规则的,要方便布线嘛,而且数目确实不少,目前估测300个灯),将灯分组做闪烁效果,想象一个场景~在一个房间内,把房间灯关了,一片漆黑的情况下,然后打开埃菲尔模型的灯,虽然不能够看清实物的样子,但是通过无规则闪烁的LED灯,把模型的立体轮廓都体现出来了,这就是布线的所要效果。但记住,模型上所有灯不是同时亮同时灭的,这也是给LED灯分组的目的。
    这貌似又是我给自己挖的一个坑,对于做一个模型,可能别人就是直接买材料开干,能做成什么样子就什么样子,而我的做法有点像是自寻烦恼,先是花了两个月时间来花一个模型蓝图,现在又说要给模型布灯,但这只是一个懵懂青年的一个执着体现,我只是想努力把那些能做到的事做到最好,这里需要说明的是,我不是处女座来的~~
    提到布电路,其实,我,并不懂这个,虽说我是个软件工程师,但提到跟硬件相关的,我可能只会给哪个引脚高低电平,给哪个寄存器初始化,要自己去做一个电路,真的,很扎心。现在让我去看数电模电我是举双手投降的,我不想死在研究傅里叶的漩涡中,虽然大学有电路设计的课程,不过我都是一路pass掉的,现在也只是有点印象罢了,是时候拾起老本行了,我是万万没想到做一件业余的事还能去提升自己的职业技能。
    线路的主控芯片我是想好了用51单片机来做,而且比较庆幸的是~proteus的仿真功能,可以为我在线调试电路,不用盲目的拿着个洞洞板试电路,那会让我奔溃的。由此我也下载了proteus 8.0开始尝试设计简单电路,单片机芯片跟大部分LED灯也都等着双十一的采购,电阻那些再看需要采购,下面是我布的一个单片机最小系统电路跟简单的IO点灯控制,确实我还在一步步学习,如果有这行的大神勿喷~
    这里写图片描述
    以上是截止至5号我所完成的部分工作,现在还在继续尝试电路图的扩展,后续工作进度将继续记录做博客更新。
    果然最头痛的地方还是电路,搭建方面倒不会太担心,只是时间问题跟工艺。模型框架布满LED的话估摸着会有150~250个,因为目前还没设计灯的布局,所以具体数量还没确定下来,实现方式以IO口并联10+个LED,这样一组IO(P1-P3,每组有8个io引脚,P0为开漏用作io需要外部上拉)基本能完成整个框架的LEd布局,至于电流问题通过外部供电解决,一开始是打算用电池来供电的,因为方便整体移动也不会太占空间,想法萌生的时候是计划用纽扣电池,后面考虑可能5号电池都不够供电,只能接外部电源了,这样一个整体效果也可以放开手去做,只是布线阶段苦了自己了。
    装饰的LED电路还有一部分想做成顺序点亮的效果,计划点亮的LED大概是100-150个,不过对于单片机的有限io口来说实在是做不了,想着有没有可以多接一两个集成电路芯片来扩充io口,百度也搜不到相关的资料,只能抽空问问部门的老司机了,现在得到的结论是用数码管的段位选来扩展多LED控制,今天也查了一些数码管示例去,参考8位数码管的动态扫描,大概了解其实现原理,但是也发现一个问题有冲突,对于我要连续点亮LED来说,每个位选LED变成同步点亮就砸了,还在考虑改良方法,有想法的哥们也可以在评论区一起讨论一下。
    这两天在逛某宝采购元器件,蓝光贴片LED预计300片,高亮黄光贴片LED(颜色期待是那种接近橙色的,但是客服给不出上电效果图,只能祈祷不要买到banana色的了)150片,红色贴片LED100片(估算),上面好像没提及黄光及红光的作用,这里只能先透露是做装饰用的。LED阻流电阻挑了两个规格的,430欧跟820欧,考虑装饰用LED的亮度问题跟框架LED的冲突,晶振选了12M的,2块钱好像有10个,其实身边可以找到的元器件我真不想买,因为常用电阻电容等的价格都很低,一两块钱最低一件就有50-100个的数量,只用几个十来个的剩下的短期用不上真觉得浪费了。最小系统的板载电路元器件用量比较少就在办公室看能不能捞几个过来凑合着用。(by 2017-11-7)
    (未完待续。。。)
    哈喽,好久不见,记得上次更新的时候已经是去年的事情了,好像没人在关注我写的这篇博文啊,没关系,自娱自乐。上次更新时间是11月初,接着整个月就是在焊接自己的51最小系统板了,没自己做过线路布局,所以元器件位置摆放还真没头绪,我顺便找了一个51的芯片底座,方便芯片的拆装跟二次利用,采用同事的建议,我把晶振跟瓷片电容安插在底座中间,可以不用外露占用外部位置,下面直接上图
    这里写图片描述
    可以看到晶振跟两个电容凑在一起焊接在底座中间,在底座旁边还引出了四根插针,分别是接电源、串口收发口、地线,这是给单片机下载程序用的,再往左还能看到一个按键,没错,这个是复位按键来的,在部门零散物料里面找到几个,哈哈哈,想偷笑,毕竟能用到的少量元器件在身边能找到是最好的了,买的话一来就是几十个上百个一件就过来了,我也没有整理余料的习惯,用多少拿多少就好了。下面再附上一张51芯片手册的单片机最小系统电路,虽然百度能找得到,但是多数不是官方的电阻电容那些参数也不统一,如果有新手也是刚接触51单片机的,可以评论或私聊咨询我那些板载电阻电容参数,趁我现在还能记清楚,晶振我买的是12M的,也大概了解过11.0592M的那个晶振,至于板子不做一些串口实时数据传输,就直接选12M的了,不用太过精确,毕竟想实现的只是肉眼效果,不过这些入门问题应该不会出现吧。
    这里写图片描述
    供电、时钟电路、复位电路,复位电路电容我就直接焊在按键的两个脚中间了,自由布线的电路有时候也是比较方便的,下面上一张电路板背面图,导线是用细铜丝,所以不容易看清,复位电路跟时钟电路的地线也在底座中间引到一起去了。
    这里写图片描述
    看起来会有点杂乱,最左边比较大块的焊点是供电端,再过来点是直连正负极的一个电源灯正极端接了一个1k电阻,板子中间部分是底座还有时钟电路跟复位电路的接地端,右边是复位按键接电源端,主干电路焊接好,用万用表测试线路导通以及有没有短路的情况,就可以开始插上单片机测试代码了。不过在这之前为了保险起见不烧坏单片机,我先做了个裸机上电,就是不插单片机直接接电。
    这里写图片描述
    开关电源调好5V后上电,(o゜▽゜)o☆ BINGO !!要知道,在红灯亮起的那一刻,我的内心是无比喜悦,高手勿喷,这只是一个入门新手的心声。(ps:顺带一提,那不是我的座位来的)好了,这样就可以开始测下载程序了。
    这里写图片描述这时候又有一个问题,下载电路?!
    天啊噜,STC232??我可不想再去手动去多搞一个电路了,网上搜了一下,好像有一些USB转串模块可以直接下载程序进去,还有STC的单片机有专用的烧录软件,上晶宏(STC)的官网下载的烧录软件是最新的6.0版本(好像是吧,忘了),后面测试下载程序发现行不通,查过才知道最新版的已经不支持51系列的单片机了,只能下载回旧版烧录软件才可以,我用的是4.83版本的,可以完美烧录。
    这里写图片描述
    这里写图片描述
    对了,我用的烧写器是USB转TTL,居然可以下载程序,我也是惊呆了,市面价9块钱一个吧,这也解决了一个难题,pass。到了测试程序了,一方面是看代码对不对,一方面也可以检测晶振电路是不是有问题,我在P1.0接了一个蓝色LED,测闪烁间隔时间跟渐量渐灭效果,进度也就在这里暂停了,12月基本都在忙自己的工作,而且身边有同事辞职了,也连他的工作一起分担了,小编也是不容易啊。
    这里写图片描述
    最近都在忙些表单整理,暂时把埃菲尔部件拆分出来,容易设计电路走线问题,不过这也是这个项目的大难题,搭建跟电路布线这两个是1+1>2的存在,这也是脱了一个多月还没开始搭建模型的原因,不用布线的话12月就可以开始搭建了,可能就来不及在今年中旬把作品完成出来了,可能的话会花上一年的时间,但是可以保证的是我一定会把它完成的。
    这里写图片描述
    下次再更新的时候,会是开始搭建底座的时候了,一起期待那会的照片分享吧,一个人坚持下去不容易。(by 2018-1-18)



    注:本博文将长期更新。(欧~这可能是我写的最久的一篇博客了~~)

    展开全文
  • 生活少不了创意,而创意永远就在身边甚至你的手中,一起来看看身边的大神们都鼓捣出哪些极品吧! 1、自动接垃圾、偷笑、避障?...不错吧,具体如何改进,其实很简单的! http://www.cirmall.com/circuit/3533/d...

    生活少不了创意,而创意永远就在身边甚至你的手中,一起来看看身边的大神们都鼓捣出哪些极品吧!

    1、自动接垃圾、偷笑、避障?我家的智能垃圾桶能做到,你家的还在原地待命?

    当垃圾桶能够检测到有垃圾进入桶内时,就会离开原来所处的地方,并且有自动避障功能,大约8秒后将会停下并发出偷笑的声音。不错吧,具体如何改进,其实很简单的!

    http://www.cirmall.com/circuit/3533/details?1

     

    2、3D打印机械手臂,带抓取功能的机器人

    你有没有想过让自己做的机器人拥有动手能力呢?出于这个想法,我打算把履带小车结合夹持器做一个有抓取功能的小车。由于装在小车上方难以抓到地面上的东西,因此还需要给小车增加伸缩的功能。使用3D打印机打印一个可以伸缩的支架,并找了一个可以配合的螺纹电机来实现伸缩功能。

    http://www.cirmall.com/circuit/3530/details?1

     

    3、ATTiny Canbot机器人开源分享,3D打印模型,源程序等

    为你介绍怎样使用3D打印部件和ATTiny85单片机,制作一个圆筒形的遥控小车。

    http://www.cirmall.com/circuit/3523/details?1

     

    4、手势遥控智能小车已问世,你的小车升级了吗?

    手势遥控车原理图分为小车驱动电路和手势控制电路。小车驱动电路和手势控制电路的蓝牙母座连线有所不同,请注意区分。驱动电路中SET脚和3V3脚是短接的,而手控部分无需短接。手势遥控车应用到ADI的传感器模块ADXL345,ADXL345是一款小而薄的低功耗3轴加速度计,分辨率高(13位),测量范围达±16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。

    http://www.cirmall.com/circuit/3166/details?1

     

    5、海宝智能娱乐机器人linux系统源码,51协处理器源码,PCB原理图,BOM表等资料开源分享

    海宝智能娱乐机器人是一款创新型家庭娱乐机器人,可爱的外形、丰富的表情、敏锐的触觉、优美的舞蹈、灵活的运动以及智能聊天系统将超过所有您所体验过的机器人。

    海宝是语言专家,能纠正不准确的普通话和英语口语发音;同时他还是家庭生活伴侣,拍照、播放相册都是他的强项。海宝是“文武双全”,唱歌跳舞样样精通。小海宝主要通过红外遥控来发送命令,或者采用语音方式来发送命令。小海宝头上还有触摸效果,比如摸刘海他会笑,摸头他会生气。小海宝共有19种独立表情和7个附加表情。小海宝采用3轮运动底盘,可以实现360°全方位的旋转。

    http://www.cirmall.com/circuit/3282/details?1

     

    6、mini型语音控制小车电路原理图、源代码

    语音控制小车的主要功能:

        可以通过简单的I/O操作实现小车的前进、后退、左转、右转功能;

        配合SPCE061A的语音特色,利用系统的语音播放和语音识别资源,实现语音控制的功能;

        可以在行走过程中声控改变小车运动状态;

        在超出语音控制范围时能够自动停车。

    http://www.cirmall.com/circuit/3343/details?1

     

    7、(分享)舞蹈机器人完整方案(硬件+软件+论文+机构图纸等)

    舞蹈机器人实现的功能:

    具有语音功能,通过语音识别技术,可以对小机器人进行语音控制

    可以前进后退,左右转弯和全自由度摆动手臂,能作弯腰和转身的动作,头部也可转动.

    有完整的舞蹈程序,能随音乐翩翩起舞,动作协调、灵活 、准确。

    http://www.cirmall.com/circuit/2604/details?1

     

    8、旧手机+Arduino的巅峰之作—视频监控机器人 ,异地远程遥控(设计资料开源共享)

    视频监控机器人Ta跟常见的wifi-robot不同。常见的wifi-robot大多采用OpenWRT路由器板子和USB摄像头,而视频监控机器人采用闲置的安卓旧手机作为机器人的大脑。

    http://www.cirmall.com/circuit/3170/details?1

     

    9、使用Arduino打造了能用舵机控制的游戏平台

    在本项目中使用一块Arduino作为微控制器打造了一个能用舵机控制的游戏平台。该平台有三种操作模式,支持0~2位玩家。

    0位玩家模式:不管盒子是怎么放置的,平台都始终处于水平状态。

    1位玩家模式:玩家使用控制杆操作,确保小球位于平台之上。

    2位玩家模式:和1位玩家模式类似,但2位玩家时可能通过灯光对平台进行控制。

    http://www.cirmall.com/circuit/3105/details?1

     

    10、智能家居开源制作—arduino实现的可跳舞台灯,语音控制

    语音控制调节台灯实现了全语音控制,它可以根据不同的语音命令作出开关和不同的动作,台灯可以完成上、下、左、右、开、关、摇头、点头、跳舞的动作。

    语音控制台灯需要的硬件机械臂,一个Arduino控制板,一个扩展板,一个语音控制模块,一个升压模块,一个LED灯和电池。最后就是将这些零零散散的东西组装起来并编写程序,反复调试,直至它可以根据命令准确无误的完成各种动作。

    http://www.cirmall.com/circuit/3074/details?1

     

    11、【参赛作品】不倒机器人,DIY制作的Arduino自主平衡车

    Arduino自主平衡车拥有室内外自主导航的能力。这台非传统车辆可以快速自主通过一系列障碍、转角、崎岖路面,水桶和斜坡等对它来说都小菜一碟。

    这款自动平衡机器人采用惯性测量装置(IMU)作为核心,该装置包括三轴速率陀螺,加速度计和磁力计,共计九个传感器,总采样速率可以达到千次∕秒,此外它还采用了方向余弦矩阵算法(DCM),其搭载的数学滤波器则可更好地利用每个传感器的性能。该机器人还搭载了更高级别的代码,这样就可快速计算出机器人的实时状态(角度和转速等),以更好的保持平衡。

    http://www.cirmall.com/circuit/3035/details?1

     

    12、Arduino手势控制手套源代码共享,隔空操控电脑

    手势控制手套的核心是Arduino。只要轻轻移动手指,你就可以用熟悉的T9键盘隔空打字了。你可以将它作为研发基础,为其添加更多新功能。

    http://www.cirmall.com/circuit/3023/details?1

     

    13、Arduino+超声波传感器打造的四足乌龟机器人,蓝牙控制

    本项目打造一个能够使用蓝牙进行控制的四足乌龟机器人。该机器人拥有两个自由度,采用的是爬行的方式进行运动,所以在不平坦的地面可能不能正常工作。

    http://www.cirmall.com/circuit/3020/details?1

     

    14、《原力觉醒》BB8机器人姐姐-3D打印MobBob智能机器人

    开发者是澳大利亚人,他花了一辈子时间开发的机器人,最近使用3D打印技术,设计了这款非常独特的MobBob机器人,注意机器人主体所有部件均是3D打印。这个机器人的过人之处是她的主体和控制中心是一部普通的智能手机。使用内置的智能手机控制其运动,不仅节省了购买很多昂贵的电子产品的成本,同时也让机器人天然拥有了许多原本需要花费大力气、大价钱开发的功能。

    http://www.cirmall.com/circuit/2994/details?1

     

    15、(分享)虚拟激光键盘设计制作原理+源代码

    我们的设计基于了PC机上进行的计算机视觉来处理按键事件。采用了一个由摄像头和激光器组成的测距系统工作。

    本设计所需要的硬件非常简单,只需要3个核心部件即可实现:一个摄像头、一个激光器以及投射键盘图案的投射激光。这也是正是低成本的奥秘所在了。

    http://www.cirmall.com/circuit/2978/details?1

     

    16、NANO~~东半球最小的自平衡机器人(硬件+源码+3D文件)

    这是两年前做过一个小小的自平衡机器人蛋黄(有兴趣的同学可以自行百度),深受大家喜爱,各种求资料求教程求种子(误)的络绎不绝然而,并卵!现在看来,这家伙还是不够可爱!这次更狠了,有了3D打印机,造型什么的总算炫酷了起来 还加了一推特技(超声波,摄像头,OLED,抬头舵机,蜂鸣器,红扑扑小脸蛋),蛋黄变蛋白的,光会卖萌怎么行,蛋黄2.0是目前最小功能最多的自平衡机器人

    http://www.cirmall.com/circuit/2022/details?1

     

    展开全文
  • 1 为什么会参加智能车竞赛? 那时是大二刚开学,学院领导组织了一个学长的"经验交流活动",请来了许多优秀的学长、学姐们,从那里我第一次得知了“智能车竞赛“,随后又在每天上课的主干道上看见了第十二届智能车...

    飞思卡尔杯全国大学生智能车竞赛(双车追逐组)

    1 为什么会参加智能车竞赛?

    那时是大二刚开学,学院领导组织了一个学长的"经验交流活动",请来了许多优秀的学长、学姐们,从那里我第一次得知了“智能车竞赛“,随后又在每天上课的主干道上看见了第十二届智能车竞赛的报名宣传。在好奇心的驱使下我决定去报名参加比赛。

    2 还没开始就要结束了?

    一番了解后,才发现想要真正被录取必须经过”智能车相关知识“的笔试以及有一个自己独自完成的小作品。随后向老师一番打探,知道了我们北校区有个历史悠久的“502实验室”,据说优秀的大神都在这里,那我肯定不甘落后,先来占个位置先,毕竟资源有限嘛,哈哈,还有那何时都不会停的电。嗯,现在想想也都还是忍不住在心里偷笑。不久后,一切准备就绪,便开始着手了解智能车的组成、结构等,同时从最简单的51单片机开始学起,虽然实验室环境差了些,但是心里确是无比快乐和满足。
    经过一段时间的准备后,笔试顺利通过,但却没想到在负责面试的老师那碰了钉子。拿着自己辛苦焊接和烧录程序的的光立方给老师看,本以为会轻松通过,结果却被老师嘲笑道:“随便焊点东西,程序都不是自己的就想蒙混过关?”。老师摇了摇头,就去看别人的作品了。记得当时内心很是沮丧,毕竟光立方展现出来的特效在我那时看来真的非常炫酷,何况还是我自己亲手焊接的,起码在那时焊接光立方还要不出任何错误对我来说确实是不易的。而且当时也并没有明确的作品要求,自己也是很郁闷,脑海里不断回荡起老师不屑的样子。实在是不甘心就这样,就算进不了比赛,也不能被别人说蒙混过关,于是利用之前学的51单片机的知识,熬了一个晚上完成了对源码的理解、修改,实现了自己的想要的灯光效果。终于,等到老师再次来实验室视察的时候,我再次拿出我了的作品,告诉他我完成了程序源码的部分修改,那时候基本上我在心里已经放弃获得参加比赛的想法了,只是想争一口气。结果又是一声,“哼,那又能咋!”,随后从后门出去了。对于我来说,如同一盆冷水灌顶,浇灭了我心里仅剩的火花。
    后来,就在我准备离开时,突然一通电话,通知我被录取了。心里又惊又喜。得,看来是不用走了,嘻嘻。那一刻突然明白原来每个人的努力都会在某个时刻突然回馈与你,一切都记在老师的心中,明白这些的我,顿时心里阴霾骤散,日出东方。

    3 繁忙的生活才刚刚开始

    听老师说录取队员可以自行在现有队员中自由组成三人小队,然后选择每一队要做的智能车类型。不久后,我和电气学院的两位同志组成了team,有点终于找到了组织的感觉。转眼间就到了寒假,在家里呆的实在无聊,就鼓吹我的舍友和我一起去学校实验室做智能车。(舍友自费做车,能代表学校参加比赛的话老师给报销)。我都和老师打听好了,可以早去学校,在食堂的旁边会有一个“金汤刀削面”小店开门,宿舍也有专人给开门。于是我比开学的日子早去了两个多星期。结果第一天在学校公寓下等了好久才进门,专门打电话才找到拿钥匙的人,来的人应该是一直住在学校里面的人,不是我们平时的楼管,还好没过几天舍友也被我忽悠来了,心里感叹到终于不用一个人了,真好。
    不过没过几天我们就发现了问题,公寓早上8:00点后门一直锁着,晚起会被锁到里面,得到晚上9:00门才开。我在此期间好几次回公寓拿东西都是无功而返。同时“刀削面”小店也只会在饭点开门,去晚了就关门了。因为只有他们一家饭店开门,吃了没两天我的胃就开始闹意见。以至于后来到几公里外的镇子上去买零食、馒头和老干妈,舍友嫌馒头太硬,本想用学长留下来小锅在楼道蒸下馒头,没想到馒头没软,锅倒烧坏了((●’◡’●)。
    因为寒假的缘故,公寓、饭店都关门了,大叔、大姐也是照顾我们才特定时间开门,还是应该非常感谢他们对我们的帮助。
    后来,为了方便,我们直接把东西拿到实验室,在哪里度过了十几天,有的人睡在地上、有的人睡在板凳上、也有人睡在桌子上,场景真是异常壮观。不过,总算熬到了开学,终于能吃点好的,睡个好觉了。

    4 风雨交加的夜晚

    大二刚开学不久,就被大哥(我们学院文艺部部长)告知推选我和另外两位同志成为新一任的文艺部部长,让我们好好负责今年的活动策划、组织工作。本来平时就要负责班级里的活动,加上每一科那永远都写不尽的实验报告,现在又在参加智能车竞赛,结果又来个事情,心里不免有些抵触,可转念一想,这也许还真是一个锻炼自身素质不错的机会。于是,也就没再说什么。
    时间日复一日的过去,事情逐渐多了起来,教室、食堂、实验室、合唱训练场成了生活的四个坐标。我到现在还依稀记得2017年那段时间,每天要利用空闲时间调试智能车,如果放假那肯定基本在宿舍找不到我,尤其快比赛那段时间,几乎都是通宵,困了就用板凳搭一个长龙出来,一觉就能到天亮,到现在为止也没觉得有多苦。因为干的是自己喜欢的事。
    一转眼到了智能车的校赛选拔,有光电组、电磁组、创意组和双车追逐组等,每组的前3名会代表学校参加西部赛区的比赛。比赛在北校区图书馆一楼举行,我和舍友都是光电组,前一晚大家都在图书馆通宵调车,因为只有一个赛道的原因,大家都是轮流调试。前半夜,我和舍友的车都跑的非常好,老师也夸赞我们两队不错。但我们还是不满足于此,尽管那时我们基本能排在前3之列,我们不断提高车速,优化PID参数,一切都很顺利,突然一辆电磁车冲了过来,还没来得及反应,我们的小车已经摔出赛道,检查后发现摄像头被摔坏了,急忙往实验室赶,一出图书馆一股寒意袭来,此时已是凌晨5点,下雨了。车往怀里一抱,冲了出去,不一会儿来到了实验室,寻找还有没有同型号地摄像头,因为学校发的型号比较老,找了一通要不就是人家有用,要么就是和我们程序不匹配,无奈,此时天已蒙蒙亮,我们已无力回天,只能弃赛,回到图书馆继续为舍友加油打气,结果他们的电机驱动、舵机老是有问题,到最后烧了两个驱动板还没找到原因,无奈弃赛。熬了一夜像打了鸡血一样,直到其他人比完赛,已是次日九点了,老师召集大家拍照纪念,而我们则悄悄的走了。心中并无困意,有的只是满心的失落。直到躺在床上的那一刻,困意瞬间袭来,再醒来已是下午5点钟了。吃完饭,去实验室继续学了会习,又困得不行,只能回来补觉。第二天早上正和舍友在实验室学习,老师突然来视察,对我们说:“你两过来一下。”我两过去,老师接着说“不要灰心,你们昨晚前半夜车跑还可以我都看到了,平时每次来也都能看见你俩,我决定让你们合并成一队,去做“双车追逐”吧。我们先是一愣,然后连连点头,又是一阵寒暄,我们回到座位,心里却充满了激动与感激。这件事情告诉了我凡事都得要有Plan B,否则见好就收吧。

    5 最终对决

    离去云南比赛的时间所剩无几,我们开始修改程序,增加雷达模块,设计躲避路障方案,不断磨合双车。最终总算实现了基本功能,在实验室测试结果比较令人满意。
    去云南比赛的路上,没有什么感觉,貌似睡了一觉就到了,整整一天一夜。直到进入了比赛的学校,我们才开始不由感叹,这就是传说中“别人家的学校”。一切安置好后,第二天去场地测试智能车,结果在新赛道上的表现并不如预期,因为每一队调试时间有限,经过简单调试后,我们只能回到了宾馆,通过分析,我们认为可能是智能车在运输过程中摄像头被碰撞了,也可能和测试场地的灯光影响有关。但无奈明天早上就开始正式比赛了。看来只能拿出秘密武器了,我们掏出了从实验室带来的赛道,你没听错,就是赛道。迅速将宾馆床挪开,铺开了一个小的赛道。开始调试小车,又是一个通宵。困了就在床垫上睡一会,经过一晚的努力,智能车终于又可以在战场上驰骋了。满脸欣慰。
    随着一声声”预备,开始“,比赛正式打响。比赛分为早上场和下午场,在早上的比赛中,双车你追我赶,不停切换循序,不时还得躲避路障,最终在激烈角逐中,顺利完成比赛。而在下午场时却出现了问题,比赛开始,双车起跑,在后方的小车却越跑越斜,最后跑出了赛道,导致只有单车完成了比赛,我们很是疑惑,以为是雷达干扰的原因,我们随即决定关闭后车雷达,再跑一次。不过,结果仍如刚才一样。不过我们已经用完了两次机会。只能退出了赛道,后来发现应该是后车的摄像头的角度发生点变化,应该是在从停车区取回小车的路上因为躲避路人导致后车的摄像头被撞歪了。但是当时并没有及时发现。
    最终,我们以22.315S的成绩,位居第16名,无缘前15名,进入全国半决赛。

    6 感慨

    忆往昔峥嵘岁月,展未来任重道远。

    7 有图有真相

    在这里插入图片描述

    通往502实验室的必经之路

    在这里插入图片描述

    502实验室门外

    在这里插入图片描述

    日常骚操作

    在这里插入图片描述

    第一代小车

    在这里插入图片描述

    双车追逐

    在这里插入图片描述

    小车停放区

    在这里插入图片描述

    云南比赛现场

    在这里插入图片描述

    获奖证书
    展开全文
  • 生活少不了创意,而创意永远就在身边甚至你的手中,一起来看看身边的大神们都鼓捣出哪些极品吧!...不错吧,具体如何改进,其实很简单的!   2、3D打印机械手臂,带抓取功能的机器人 你有没有想过让自己做的机...
  • 起因是,想给书房来点“光污染”,增强打游戏和看电影时的沉浸感。 于是搜索LED灯,发现如今市面上很多智能化的LED灯带!意思就是灯带上的每颗LED都有一颗独立的IC控制发光和发什么颜色的光。比如米家生态里的...
1
收藏数 7
精华内容 2
关键字:

单片机简单炫酷灯光程序