c# 中的光敏电阻和 RGB LEDS

Photoresistors and RGB LEDS in c#

我多次尝试编写代码,根据(当前房间的)灯是开还是关,让 2 个 RGB LED 以特定方式闪烁或保持点亮。 当灯亮起时,2 个 RGB 应该交替闪烁蓝色,一次一秒。 当灯熄灭时,两个 RGB 都应该打开并保持红色。 我正在使用 2 个 RGB、电线、一个面包板、电阻器、一个光敏电阻和一个 arduino UNO(不是原来的,但它是一个非常接近的复制品……除了它没有说 "UNO")。 RGB 连接到引脚 5、6、7 和 8、9、10。光敏电阻位于引脚 13 中。 这是我目前的代码(它在 c# 中,顺便说一句):

int sensPin = 13;

void setup()
{
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(13,INPUT);
  Serial.begin(9600);
}

void loop()
{
  int prVal = analogRead(sensPin);
  Serial.write(prVal);
    if(prVal>225)
    {
      digitalWrite(5,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,LOW);
      digitalWrite(9,HIGH);
      digitalWrite(10,HIGH);
      delay(500);
      digitalWrite(5,LOW);
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,HIGH);
      digitalWrite(9,HIGH);
      digitalWrite(10,HIGH);
      delay(500);
    }
    else
    {
      digitalWrite(5,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(7,LOW);
      digitalWrite(8,HIGH);
      digitalWrite(9,HIGH);
      digitalWrite(10,LOW);
      delay(10);
    }
}

我遇到的问题是两个 RGB 都保持红色...无论如何。我试过摆弄电线,并反复检查一切是否正确插入,但没有任何变化发生。我发现 st运行ge 的另一件事是,在 运行dom 点,几秒钟后,RGB(房间内的照明没有改变,也没有触摸或移动任何硬件)将开始交替闪烁蓝色,然后立即返回保持红色。

感谢任何和所有的建议和帮助。

~已编辑~ 我稍微更改了代码(和硬件)。由于评论中提出的建议,我将光敏电阻放在引脚 12 中,并相应地更改了我的代码。此外,还更改了一个变量(名称为 sensPin,现在声明为 prPin),但除此之外没有太多变化。这是我拥有的:

int prPin = 12;

void setup()
{
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(prPin,INPUT);
  Serial.begin(9600);
}

void loop()
{
  int prVal = analogRead(prPin);
  Serial.write(prVal);
    if(prVal>225)
    {
      digitalWrite(5,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,LOW);
      digitalWrite(9,HIGH);
      digitalWrite(10,HIGH);
      delay(1000);
      digitalWrite(5,LOW);
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,HIGH);
      digitalWrite(9,HIGH);
      digitalWrite(10,HIGH);
      delay(1000);
    }
    else
    {
      digitalWrite(5,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(7,LOW);
      digitalWrite(8,HIGH);
      digitalWrite(9,HIGH);
      digitalWrite(10,LOW);
      delay(10);
    }
}

我上传了代码,然后运行它,但是发生了和上次一样的事情。 我有可能有一块坏板吗?我认为情况并非如此,但有机会。我已经测试了电路板上的所有内容,一切似乎都很好……我不知道发生了什么。 再一次,我将不胜感激任何帮助,无论是小提示或建议,还是明确彻底的回答。我是一本打开的书,所以我会接受任何你抛给我的东西。

只有某些具有专用硬件的引脚可以用作模拟输入。这些标记为 A0-A5,并且不与数字引脚 IO0-IO13 重叠。

当你定义

int prPin = 12;

然后不要期望调用

analogRead(prPin)

取得有意义的结果。

根据 Ben Voight 提到的最后一个代码示例,您对数字 IO 和 ADC(模数转换器)感到困惑。

我建议使用 WS2812 类型的 RGB LED,它们在 Arduino 上得到很好的支持需要 1 个数字 IO 支持 PWM(带 ~ 的那个)。

但是你也问了C#,有一个叫做NusbioMCU的设备,它允许任何.NET语言来控制不同形状的RGB LED WS2812(Strip,Ring,Square)。它还有 4 个 ADC,其中一个可用于连接您的光敏电阻。 Github[1].

上有很多 [样本]