一道智力题

最近在同学的 QQ 空间上,发现了这样一道智力题:

有一条河,河边有一个猎人牵着一头狼,一个男人带着两个小男孩,还有一个女人带着两个小女孩。
如果猎人离开,狼就会把所有人吃掉。
如果男人离开,女人会把两个小男孩掐死。
如果女人离开,男人会把两个小女孩掐死。
河里有一条船,船上只能乘坐两人(狼算一人),只有猎人、男人、女人会划船。
如何使他们全部过河?

看到这道题,首先想到的是农夫过河问题。既然这两个问题十分相似,那我就尝试按照农夫过河问题的思路,通过程序来找出该题的解。

继续阅读“一道智力题”

[iOS] HackerRemote: 蓝牙遥控器 App, 支持数据的双向收发

这是我前段时间学习 Swift 时的练手作品,也是我的第一个 iOS App.

HackerRemote 是一个游戏手柄形状的蓝牙 (BLE) 遥控器,可搭配 DFRobot Bluno 或蓝牙转串口模块,用于各种需要手机遥控的电子制作。

除了能将数据发送至蓝牙设备,该 App 还可以从设备中接收数据(例如电池电量、飞行器飞行高度等),并显示在界面上,方便查看设备信息,对设备进行调试。

App 的界面还比较简陋,在功能上,还有一些想法尚未实现。我会在空闲时间,根据情况对其进行进一步完善。

下载链接:

https://itunes.apple.com/cn/app/id1120243546

继续阅读“[iOS] HackerRemote: 蓝牙遥控器 App, 支持数据的双向收发”

使用 C 和 Allegro 实现的 NES 模拟器

NES (Nintendo Entertainment System, Wikipedia) 是历史上一款著名的游戏机,由任天堂于 1983 年推出,又被称做 FC (Family Computer) 或红白机。在国内,或许大家对「小霸王学习机」这个名字更加熟悉,应该有不少人就是在这台学习机上第一次接触了电子游戏。其实,「小霸王学习机」就是 NES 的山寨版,兼容 NES 游戏,在硬件上与 NES 基本相同。

即使对游戏不感兴趣的人,听到「超级马里奥」(超级玛丽)等,也应该不会陌生。而这些游戏角色,正是由于 NES 的普及,才变得更加知名。

在 NES 推出的时候,计算机多媒体技术并不是十分发达。而且不论是 NES,还是当时流行的 Apple II,其内存只有几 KB 到几百 KB. 为了能够流畅地显示游戏画面、播放游戏声音,NES 采用了不少巧妙的技术。

继续阅读“使用 C 和 Allegro 实现的 NES 模拟器”

2015 电赛风力摆题:我的方案

2015 年全国大学生电子设计竞赛刚刚结束。我们组选择了 B 题:风力摆控制系统。题目要求如下:

一长约 60cm~70cm 的细管上端用万向节固定在支架上,下方悬挂一组 (2~4 只) 直流风机,构成一风力摆,如图 1 所示。风力摆上安装一向下的激光笔,静止时,激光笔的下端距地面不超过 20cm。设计一测控系统,控制驱动各风机使风力摆按照一定规律运动,激光笔在地面画出要求的轨迹。

趁这段时间,整理一下我们组的方案。

继续阅读“2015 电赛风力摆题:我的方案”

有限状态机在单片机编程中的应用

在单片机编程中,如果在不使用操作系统的情况下同时执行多个任务,可能会遇到下面这些情况:

  • 一个任务的执行时间过长,导致其他任务无法及时执行
  • 在一些任务中大量使用 delay() 等函数进行软件延时,这些延时函数占用过多时间,影响其他任务的执行
  • 一些复杂任务的程序逻辑不清晰,不便于以后对程序进行维护,或添加新功能

本文介绍的有限状态机,可以做到将一个耗时较长的复杂任务分解为多个简单任务,同时使代码逻辑更加清晰,从而解决上述问题。

目录:

继续阅读“有限状态机在单片机编程中的应用”

我常去的 DIY 网站

备注:本文已不再更新,关于科技类 DIY 的资源,后续我会在 GitHub 上整理和更新:


爱折腾:我接触的第一个 DIY 网站

果壳网DIY主题站:容易制作的趣味 DIY

Instructables:著名的 DIY 作品分享网站,内容比较全面

Make projects:DIY 杂志《Make》(中文名《爱上制作》)的一个网站。杂志中的一些 DIY 教程,也可以在这里找到

Arduino Blog | Arduino Forum:Arduino 的官方博客与论坛,内有许多 Arduino 项目和使用技巧

MAKERZONE:MathWorks 的 DIY 项目分享社区,涉及 Arduino,Raspberry Pi,LEGO NXT

继续阅读“我常去的 DIY 网站”

OmniFocus 快速收集脚本 v2

之前写过一个 OmniFocus 快速收集脚本,可以通过此脚本打开 OmniFocus 的 Quick Entry 窗口,快速将自己的灵感或者想做的事记录下来。但是,OmniFocus 的启动速度不是很快,第一次运行脚本后需要等上几秒钟,窗口才能出现,使用体验不是很好。

刚刚对这个脚本进行了一点改进,执行脚本时,会弹出一个简单的对话框,在对话框中输入要保存的内容即可,无需等待 OmniFocus 启动。


继续阅读“OmniFocus 快速收集脚本 v2”

QS30-1 辉光管时钟

用暑假的空闲时间,断断续续做了一个多月,辉光管时钟基本完成。

辉光管使用了 QS30-1,通过四个氖灯显示时间的冒号。每个辉光管下面各安装一个全彩 LED,可控制其显示颜色。

该时钟使用 MC34063,配合 MOS 管和电感等构成 DC-DC 升压电路,将 12V 电压升至 170V,供辉光管使用。通过 HV57708 驱动辉光管。LPD6803 用于控制全彩 LED。主控芯片采用 STC15F2K60S2,时钟芯片采用 SD2405ALPI,蓝牙模块采用 RF-BM-S02.

程序源代码和 PCB 图已上传至 GitHub:https://github.com/blanboom/NixieClock


继续阅读“QS30-1 辉光管时钟”

退出移动版