极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10097|回复: 5

简单的程序+简单的程序=复杂的问题,请教

[复制链接]
发表于 2013-6-3 23:17:09 | 显示全部楼层 |阅读模式
    简单的程序1:七个按键,按下去的效果为弹出相应的音符CDEFGAB。(想到一个相关的问题,可以设置一个标志变量来使得当某个按键被按下去的时候,其他按键是没用的。但是如果不设定这样的标志的话,应该只会发一个音,也就是程序里写在后面的那个。还是会像电子琴那样,发出两个音的混音呢?)
    简单的程序2:一个LED,明->暗->明>暗->明->暗->明>暗->明->暗->明>暗……地发光,由两个按键来控制速度,明暗之间,暗明之间是渐变的,像呼吸灯那样。这个应该也好办



      我的问题:如果要做个系统,这两个功能都要,应该怎么做?
回复

使用道具 举报

发表于 2013-6-4 00:44:49 | 显示全部楼层
本帖最后由 darkorigin 于 2013-6-4 00:47 编辑

首先,这类问题,2个功能 分开考虑,最后可以融合到一起 ,一般不会冲突
第二个问题。其实就是涉及到PWM值的改变上,比如每次PWM变化幅50(正负50)和100(正负100) 自然速度是不一样的。 每个时间循环中加减一个固定的变量,变量值进行调整,这样呼吸灯就有快慢之分。而且你可以设置7种或者更多速度。

第一个问题。 答案其实是都能感应到(这个取决于你的接线)
如果只是简单的把每个脚都连接到ARDUNINO上 每次LOOP过程中只要检测管脚的电压就知道哪个脚被短接了(7根线都短接了都能检测到)
当然 仅限于直连。 你如果搞矩阵方式然后用SPI总线读写专用的键盘芯片 那就另当别论了。
回复 支持 反对

使用道具 举报

发表于 2013-6-4 00:50:21 | 显示全部楼层
毕竟 ARDUINO的直连开关不像高级键盘那样复杂 有时候会有键位冲突(经常玩游戏的知道,一般的键盘最多4个键不冲突 你同时按下上下左右 程序就会不知所措了, 高级游戏键盘可以多键不冲突)但是ARDUINO不会工作模式不同。

还有 就是楼主 你问的问题要清楚 不能含混,ARDUINO的问题是硬件和软件的结合 而不是光问软件。 接线不同程序就可能完全不同。  比如有的设备用SPI总线 和IIC总线 那程序就会完全不同
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-4 11:09:04 | 显示全部楼层
darkorigin 发表于 2013-6-4 00:50
毕竟 ARDUINO的直连开关不像高级键盘那样复杂 有时候会有键位冲突(经常玩游戏的知道,一般的键盘最多4个键 ...

键位应该能同时按的,只是响应哪个要看程序中怎么写。
这个问题我能试。

我问的是两个问题放在一块。

按个问法吧。

我要编一个程序,控制三个LED,第一个灯1.5秒闪一次,第二个灯1.7秒闪一次,第三个灯2.05秒闪一次,亮的时候各保持0.1秒,这0.1秒是不计延迟的,也就是说第一个灯在0秒时亮0.1秒,然后在1.5秒时亮0.1秒,在3秒时亮0.1秒,等等。三个灯单独编是很简单的,但是,要做成一个 = =!我感觉不是那么简单啊。特别是,如果我要给每个灯加上两个增加减少间隔时间的按钮,再各加一个开始停止的按钮,如上述一样,做一个很简单,但做三个。。。
回复 支持 反对

使用道具 举报

发表于 2013-6-4 11:11:59 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2013-6-4 14:03:42 | 显示全部楼层
关于亮灯问题,还没有描述太清楚,初始说清楚了,但是需要加快或减慢是什么要求呢,比方准备设计快慢是个状态,速度加一,会怎样,最快是怎样?如果按加快键三个多加快吗?给出这样一个需求吧,即初始状态(已知),最快状态,和步长.
大概觉得困惑的是三个灯速度互相隔离的问题,实际很简单,不能简单地加延时,建议应用millis()函数功能,三个灯各自读出自己的时间,加上各自需要延时的数,在loop中不断比较各自需要延迟的时间是否到,到了进行必要的操作,不到跳过.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 04:13 , Processed in 0.084135 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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