Charlieplexing LED
Charlieplexing LEDs
我正在尝试使用 Uno 的 4 个引脚对 9 个 LED 进行 charlieplex。我可以点亮单个 LED,但不知道如何同时点亮多个 LED。任何人都可以解释正确的方法吗?
我有一个正在 Tinkercad 在线开发的版本:https://www.tinkercad.com/things/4vsov86j8ca-charlieplexing-2/
这是我的代码:
const int UPPERPIN = 13; //upmost pin
const int LOWERPIN = 10; //lowest pin
void setup()
{
}
void loop()
{
//update the leds
updatePins();
}
//the function which manages the leds
void updatePins()
{
// Each of these seem to work individually but not together.
//LED 2
pinMode(11, OUTPUT);
digitalWrite(11, HIGH);
pinMode(13, INPUT);
digitalWrite(13, HIGH);
//LED 8
pinMode(12, INPUT);
digitalWrite(12, HIGH);
pinMode(11, OUTPUT);
digitalWrite(11, LOW);
delay(1000);
//reset all LEDs
resetAllPins();
}
void resetAllPins()
{
for(int i = LOWERPIN; i <= UPPERPIN; i++)
{
pinMode(i, INPUT);
digitalWrite(i, LOW);
}
//set everything to high impendance, so it will not function in the circuit
}
我附上了接线截图。
正如您所说,您可以打开单个 LED,但您不知道如何同时打开两个 LED,我从您的问题中得出您根本不了解 Charlieplexing。
Charlieplexing 是一种特殊形式的复用。与传统多路复用相比,它使用 I/O 引脚的三态功能来减少引脚数量。
举个最简单的例子
X1 和 X2 都作为输出,X1 高电平和 X2 低电平状态将点亮 LED 1,X1 低电平和 X2 高电平状态将点亮 LED2
很明显不能同时点亮LED1和LED2
但是你可以让它们看起来像是在同时开启,从而滥用人类视觉的持久性。如果你闪烁 1 个 led 的速度足够快,它看起来就像一直亮着。因此,您所要做的就是以该频率交替闪烁 LED1 和 LED2。
我正在尝试使用 Uno 的 4 个引脚对 9 个 LED 进行 charlieplex。我可以点亮单个 LED,但不知道如何同时点亮多个 LED。任何人都可以解释正确的方法吗?
我有一个正在 Tinkercad 在线开发的版本:https://www.tinkercad.com/things/4vsov86j8ca-charlieplexing-2/
这是我的代码:
const int UPPERPIN = 13; //upmost pin
const int LOWERPIN = 10; //lowest pin
void setup()
{
}
void loop()
{
//update the leds
updatePins();
}
//the function which manages the leds
void updatePins()
{
// Each of these seem to work individually but not together.
//LED 2
pinMode(11, OUTPUT);
digitalWrite(11, HIGH);
pinMode(13, INPUT);
digitalWrite(13, HIGH);
//LED 8
pinMode(12, INPUT);
digitalWrite(12, HIGH);
pinMode(11, OUTPUT);
digitalWrite(11, LOW);
delay(1000);
//reset all LEDs
resetAllPins();
}
void resetAllPins()
{
for(int i = LOWERPIN; i <= UPPERPIN; i++)
{
pinMode(i, INPUT);
digitalWrite(i, LOW);
}
//set everything to high impendance, so it will not function in the circuit
}
我附上了接线截图。
正如您所说,您可以打开单个 LED,但您不知道如何同时打开两个 LED,我从您的问题中得出您根本不了解 Charlieplexing。
Charlieplexing 是一种特殊形式的复用。与传统多路复用相比,它使用 I/O 引脚的三态功能来减少引脚数量。
举个最简单的例子
X1 和 X2 都作为输出,X1 高电平和 X2 低电平状态将点亮 LED 1,X1 低电平和 X2 高电平状态将点亮 LED2
很明显不能同时点亮LED1和LED2
但是你可以让它们看起来像是在同时开启,从而滥用人类视觉的持久性。如果你闪烁 1 个 led 的速度足够快,它看起来就像一直亮着。因此,您所要做的就是以该频率交替闪烁 LED1 和 LED2。