pumpitup 发表于 2013-6-3 23:17:09

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

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



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

darkorigin 发表于 2013-6-4 00:44:49

本帖最后由 darkorigin 于 2013-6-4 00:47 编辑

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

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

darkorigin 发表于 2013-6-4 00:50:21

毕竟 ARDUINO的直连开关不像高级键盘那样复杂 有时候会有键位冲突(经常玩游戏的知道,一般的键盘最多4个键不冲突 你同时按下上下左右 程序就会不知所措了, 高级游戏键盘可以多键不冲突)但是ARDUINO不会工作模式不同。

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

pumpitup 发表于 2013-6-4 11:09:04

darkorigin 发表于 2013-6-4 00:50 static/image/common/back.gif
毕竟 ARDUINO的直连开关不像高级键盘那样复杂 有时候会有键位冲突(经常玩游戏的知道,一般的键盘最多4个键 ...

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

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

按个问法吧。

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

Ansifa 发表于 2013-6-4 11:11:59

http://www.geek-workshop.com/thread-4852-1-1.html

林定祥 发表于 2013-6-4 14:03:42

关于亮灯问题,还没有描述太清楚,初始说清楚了,但是需要加快或减慢是什么要求呢,比方准备设计快慢是个状态,速度加一,会怎样,最快是怎样?如果按加快键三个多加快吗?给出这样一个需求吧,即初始状态(已知),最快状态,和步长.
大概觉得困惑的是三个灯速度互相隔离的问题,实际很简单,不能简单地加延时,建议应用millis()函数功能,三个灯各自读出自己的时间,加上各自需要延时的数,在loop中不断比较各自需要延迟的时间是否到,到了进行必要的操作,不到跳过.
页: [1]
查看完整版本: 简单的程序+简单的程序=复杂的问题,请教