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].
上有很多 [样本]
我多次尝试编写代码,根据(当前房间的)灯是开还是关,让 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].
上有很多 [样本]