我有一套led的设置,每个其他引线反向,所以当我应用权力单向光,1,3,5.灯。改变力量和2,4,6.我正试图在数字引脚上使用PWM来设置亮度。这是我的密码:
unsigned long flashCount = 0;
bool bSwitch = true;
void setup()
{
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}
void loop()
{
if((flashCount + 1000) < millis())
{
if(bSwitch)
{
analogWrite(6, 0);
analogWrite(7, 1);
bSwitch = false;
}
else
{
analogWrite(7, 0);
analogWrite(6, 1);
bSwitch = true;
}
flashCount = millis();
}
}如果我将analogWrite改为255而不是1,它将切换两组leds。如果我将analogWrite更改为127或更少,只有一组会亮。如果我把引线换到引脚上,问题就会转到另一组灯上。
leds是这样的:
GPIO pin 6 --------.-LED+.---.-LED+.---.-LED+.---.-LED+.---|
GPIO pin 7 ---.+LED-.---.+LED-.---.+LED-.---.+LED-.--------|发布于 2019-02-08 03:14:31
将LED的连接改为两种支持PWM的引脚。
并不是所有的引脚都支持PWM。analogWrite文档指定了哪些引脚取决于哪个板:
在大多数Arduino板(带有ATmega168或ATmega328P的板)上,这个函数工作在引脚3、5、6、9、10和11上。在Arduino Mega上,它工作在引脚2-13和44-46上。带有ATmega8的旧Arduino板只支持引脚9、10和11上的analogWrite()。
另一个因素是,analogWrite(255)和analogWrite(0)将恢复以数字输出的形式驱动输出。所以写255会导致两个引脚输出(一个是数字输出,另一个是PWM模式)。但是写1到127只会导致PWM能力的引脚改变。
发布于 2019-02-08 02:15:09
来自arduino的手册:
语法analogWrite(引脚,值)
参数引脚:要写入的引脚。允许的数据类型: int。值:工作周期:0(始终关闭)到255 (始终打开)之间。允许的数据类型: int
使用值为1的analogWrite本质上是接近零的.255是全电压。您试图像使用analogWrite()一样使用digitalWrite()。
考虑在代码中使用数字写入:https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/
至于你的LED的行为,似乎你的电路也需要调试:你的电路只允许电流流动时,引脚7是开着。二极管(发光二极管)只允许一个方向的电流。如果你打算有LED的替代,他们都应该是定向的积极指向他们的GPIO引脚和他们见面的地方,他们应该被一个拉下电阻接地。
https://stackoverflow.com/questions/54585098
复制相似问题