矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: amo

【参赛】给孩子DIY的一个功能齐全十字路口红绿灯模型

[复制链接]
     
 楼主| 发表于 2016-12-11 19:59:27 | 显示全部楼层
348643887 发表于 2016-12-11 10:01
lz 再多说点关于程序方面的吧,让我们学习学习

前面提到,这个模型就是一个大号的红绿灯,状态是轮流切换的……
代码方面有很多种方法可以实现,我用的是对象+线程调度的方法,比较复杂。

最笨但也是最快的一种方法就是把各个状态定义成一个“码”;把所有状态的码定义成数组;然后定时发送这些码就可以了。
用4个灯轮流亮1个灯举例子:
1-定义1为亮,0为灭
2-灯数量为4
3-伪代码:

//1-底层驱动:根据具体硬件修改
void SendTo74HC595(char *Code)//刷新74HC595输出
{
        u8 i;
        _ClrHC595_EN;//HC595_EN=0;
        _SetHC595_RST;
        _ClrHC595_SHIFT;//输出锁存=0
        for(i=0;i<4;i++)//这里固定为4个灯状态
        {
                   _ClrHC595_CLK;//HC595_CLK =0;
                   if(Code==1)
                   {
                                _SetHC595_DATA;//HC595_DATA=1;
                   }
                   else
                   {
                                _ClrHC595_DATA;//HC595_DATA=0;
                   }
                   _SetHC595_CLK;//HC595_CLK =1;
                }
        }
        _SetHC595_SHIFT;//输出锁存=1。发出锁存脉冲
}

//2-上层算法相关:这部分代码是可以随便移植的
char table[4][4]=//4个灯,总共4种状态
{
        {1,0,0,0},//状态0:0亮,1灭,2灭,3灭
        {0,1,0,0},//状态1:0灭,1亮,2灭,3灭
        {0,0,1,0},//状态2:0灭,1灭,2亮,3灭
        {0,0,0,1},//状态3:0灭,1灭,2灭,3亮
};
void main(void)
{
        ……//初始化
        while(1)//循环显示流水灯
        {
                SendTo74HC595(table[0]);//发送状态0
                delay_ms(1000);//状态0显示1秒
               
                SendTo74HC595(table[1]);//发送状态1
                delay_ms(1000);//状态1显示1秒
               
                SendTo74HC595(table[2]);//发送状态2
                delay_ms(1000);//状态2显示1秒
               
                SendTo74HC595(table[3]);//发送状态3
                delay_ms(1000);//状态3显示1秒
        }
}

在这个基础框架上,慢慢增加状态定义,如快闪、慢闪等……如果已经入门,当然就没必要看这些基本的东西了
回复 支持 反对

使用道具 举报

     
发表于 2016-12-11 20:54:39 | 显示全部楼层
做几部电动车子,放在道路那,红灯停绿灯自动过,这样更直观
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2016-12-11 21:27:17 | 显示全部楼层
fdcba123 发表于 2016-12-11 20:54
做几部电动车子,放在道路那,红灯停绿灯自动过,这样更直观

很好的主意……不过机械部分不擅长,倒是可以在黑色亚克力“地面”搞一些小人、小车形状透明窗口,底下用LED来点亮流动……
回复 支持 反对

使用道具 举报

     
发表于 2016-12-13 08:33:07 | 显示全部楼层
还有所欠缺,现在红绿灯都带数字显示啦.
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2016-12-13 14:53:23 | 显示全部楼层
zpywz 发表于 2016-12-13 08:33
还有所欠缺,现在红绿灯都带数字显示啦.

数字显示的简单,就是不容易做小,定制费用很高……

带倒计时的普遍反馈不好,会带来更高的事故率……因为老司机都是人精,算提前量,提前轰油门,弹射起飞
回复 支持 反对

使用道具 举报

     
发表于 2016-12-16 22:57:27 | 显示全部楼层
配上公路模型,做成一个整体就更帅了
回复 支持 反对

使用道具 举报

发表于 2016-12-25 20:27:16 | 显示全部楼层
加上公路模型和互动的汽车 公交 行人 非机动车  完整的一个模型 可以直接变成研究交通管理的东东

楼主跟我一样 我也是买了一堆的教具 给孩子留着以后教她用
回复 支持 反对

使用道具 举报

     
发表于 2016-12-28 18:12:03 | 显示全部楼层
装饰一下把,做的很好
回复 支持 反对

使用道具 举报

     
发表于 2017-1-11 22:46:50 | 显示全部楼层
楼主做的很好! 想必是一位非常用心的父亲。 有意楼主套件。不知价格几何?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-1-12 09:50:36 | 显示全部楼层
hqboy 发表于 2017-1-11 22:46
楼主做的很好! 想必是一位非常用心的父亲。 有意楼主套件。不知价格几何?

我刚才估算了一下,应该不超过15元……
但是拿BOM简单统计一下,直接3倍不止:

十字路口红绿灯模型_V0.1-成本粗算.png

当然了,里面的价格在批量时候能降不少。
这一算,更坚定了我不出套件的想法……但如果有人愿意出,我可以支持。
回复 支持 反对

使用道具 举报

     
发表于 2017-1-12 20:08:59 | 显示全部楼层
感谢提供!
回复 支持 反对

使用道具 举报

     
发表于 2017-2-3 20:30:57 | 显示全部楼层
赞楼主的精湛。

业余管理交通信号13年的飘过。当时交通队穷,也曾经给他们DIY过自动信号机和预警系统。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-2-14 10:14:47 | 显示全部楼层
刘老根 发表于 2017-2-3 20:30
赞楼主的精湛。

业余管理交通信号13年的飘过。当时交通队穷,也曾经给他们DIY过自动信号机和预警系统。: ...

好奇预警是怎么实现的,视频分析么?
回复 支持 反对

使用道具 举报

     
发表于 2017-2-14 10:31:46 | 显示全部楼层
amo 发表于 2017-2-14 10:14
好奇预警是怎么实现的,视频分析么?

那个年代没这么先进(包括思维)因为搞铁路信号几年,利用嫁接了铁路轮对计数改成光电分析单位时间的轮对,预告车流而已,不理想。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2017-2-14 18:13:54 | 显示全部楼层
刘老根 发表于 2017-2-14 10:31
那个年代没这么先进(包括思维)因为搞铁路信号几年,利用嫁接了铁路轮对计数改成光电分析单位时间的轮对 ...

光电计数如果允许改造路口,应该还是好搞的。
十多年前给某省一个面粉厂做过面粉计数器,类似原理。好不容易跟偷面粉的工人们斗勇斗志,通过验收了,没想到还要跟厂长斗勇斗志才能拿到钱,更没想到的是厂长翻脸如翻书,把收款的同事揍一拳,钱就黄了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-26 07:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表