使用BLE屏蔽读取时,RGB LED将无法工作

时间:2015-10-05 09:45:24

标签: arduino arduino-uno

我有一个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

1 个答案:

答案 0 :(得分:0)

正如OP所问,这是答案。

问题是Arduino UNO在引脚12和13上没有PWM,所以这些引脚上的analogWrite什么都不做。

根据Arduino文档(here),“在大多数Arduino板(带有ATmega168或ATmega328的板)上,此功能适用于引脚3,5,6,9,10和11”。因此,更改R和G引脚可以解决问题。