首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Charlieplexing LED

Charlieplexing LED
EN

Stack Overflow用户
提问于 2019-12-08 19:16:13
回答 1查看 206关注 0票数 0

我正在尝试使用Uno的4个引脚对9个LED进行charlieplex。我可以点亮一个单独的LED,但不知道如何同时点亮多个LED。CAn有谁能解释一下正确的方法吗?

我在Tinkercad网站上有一个正在开发的版本:https://www.tinkercad.com/things/4vsov86j8ca-charlieplexing-2/

下面是我的代码:

代码语言:javascript
复制
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
}

我已经附上了布线的截图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-09 15:09:56

正如您所说,您可以打开单独的LED,但您不知道如何同时打开两个LED。我从您的问题中得知,您根本不了解Charlieplexing。

Charlieplexing是多路复用的一种特殊形式。与传统的多路复用相比,它利用I/O引脚的三态能力来减少引脚的个数。

让我们举一个最简单的例子

当X1和X2都作为具有X1高电平和X2低电平状态的输出时,X1低电平和X2高电平状态将打开LED2

很明显,您不能同时打开LED1和LED2。

但你可以让它看起来像是同时开启的,滥用人类视觉的持久性。如果你闪烁1 led足够快,它将看起来像它是在整个时间。所以你所要做的就是用这个频率交替地闪烁LED1和LED2。

https://en.wikipedia.org/wiki/Flicker_fusion_threshold

https://en.wikipedia.org/wiki/Persistence_of_vision

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59234827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档