我有一个BLE屏蔽+ Arduino UNO,它连接并与我的IOS设备一起工作。我还想做的就是用RGB LED显示屏蔽的连接状态。
我正在使用以下代码,但不知何故,即使函数被调用,我也看不到颜色的变化。
int redPin = 13;
int greenPin = 12;
int bluePin = 11;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
// Init. and start BLE library.
ble_begin();
// Enable serial debug
Serial.begin(57600);
}
void loop()
{
Serial.println("Inside loop");
if ( ble_connected() )
{
setColor(200, 200, 200);
int sensorValue = analogRead(A0);
//Some code to write stuffs
}
ble_do_events();
delay(2000);
}
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
Serial.println("Inside setcolor");
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
当我在没有BLE的情况下单独执行时,LED代码工作正常。下面的代码将起作用。上面提到的同样的事情也行不通。
int redPin = 13;
int greenPin = 12;
int bluePin = 11;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop()
{
setColor(20, 20, 20);
delay(2000);
}
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
是什么原因?它是否必须对AnalogRead和AnalogWrite做任何事情? TIA
答案 0 :(得分:0)
正如OP所问,这是答案。
问题是Arduino UNO在引脚12和13上没有PWM,所以这些引脚上的analogWrite
什么都不做。
根据Arduino文档(here),“在大多数Arduino板(带有ATmega168或ATmega328的板)上,此功能适用于引脚3,5,6,9,10和11”。因此,更改R和G引脚可以解决问题。