我正在做一个使用LED的脉宽调制项目。我已经根据链接建立了电路
http://www.ladyada.net/products/rgbledstrip/
现在,我正在尝试放弃Arduino,并应用Android IOIO板。我的arduino代码如下...
void setup() {
pinMode(REDPIN, OUTPUT);
pinMode(GREENPIN, OUTPUT);
pinMode(BLUEPIN, OUTPUT);
}
void loop() {
int r, g, b;
// fade from blue to violet
for (r = 0; r < 256; r++) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from violet to red
for (b = 255; b > 0; b--) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from red to yellow
for (g = 0; g < 256; g++) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
// fade from yellow to green
for (r = 255; r > 0; r--) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from green to teal
for (b = 0; b < 256; b++) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from teal to blue
for (g = 255; g > 0; g--) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
}当我读到有关Arduino的analogWrite时,它的最大脉宽调制为255。现在,当我插入IOIO板时,我的代码如下
public void setup() throws ConnectionLostException {
try {
blueOutput_ = ioio_.openPwmOutput(14, 490);
led_ = ioio_.openDigitalOutput(IOIO.LED_PIN, true);
enableUi(true);
} catch (ConnectionLostException e) {
enableUi(false);
throw e;
}
public void loop() throws ConnectionLostException {
try {
blueOutput_.setPulseWidth(seekBlue.getProgress());
led_.write(!toggle.isChecked());
sleep(10);
} catch (InterruptedException e) {
ioio_.disconnect();
} catch (ConnectionLostException e) {
enableUi(false);
throw e;
}
}
}请注意,我的频率与Arduino和IOIO匹配,频率为490 Hz。现在,当我在引脚14上输出一个PWM mod时,LED开始亮起,但在接近其最大亮度之前达到最大亮度。如果我将PWM调到255以上,蓝色(以及红色和绿色)的强度不会增加。我有12V的RGB灯条,有3个LED灯的长度(大约1.75英寸用于测试)
是不是有什么原因导致我无法从IOIO获得与Arduino相同的响应?谢谢。
发布于 2012-05-08 10:10:56
您希望将pwm占空比从0更改为1。现有代码以微秒为单位更改脉冲宽度。
https://stackoverflow.com/questions/10491289
复制相似问题