あなたはそれがuint8_t
を期待しているところ、analogWrite
またはpinMode
に配列を渡しています。
Arduinoのピン操作機能は、一度に1つのピンのみを処理します。その周りには、AVR/ARM GPIOレジスタを直接操作する方法がありますが、これらは細かいことがあります(に実際にの速度が必要な場合を除き、使用することはお勧めしません)。
int *
という理由は、C/C++の配列がポインタとして表現されているためです。
両方のLEDに対してanalogWrite
またはpinMode
を使用する場合は、LEDごとにこの機能を1回呼び出す必要があります。例:あなたのプログラムのコンテキストで
analogWrite(ledPins[0], brightness);
analogWrite(ledPins[1], brightness);
それとも
for(int currentLED = 0;currentLED < ledCount;i++){
analogWrite(ledPins[currentLED], brightness);
}
:
int ledCount = 2;
int ledPins [] = {11, 12};
int brightness = 0;
int delayTime = 10;
#define INCREASE 1
#define DECREASE 2
int brightness_change = INCREASE;
void setup(){
for(int i = 0;i < ledCount;i++){
pinMode(i, OUTPUT);
}
}
void loop(){
while(brightness < 255 && brightness_change == INCREASE){
brightness = brightness + 1;
}
while(brightness > 0 && brightness_change == DECREASE){
brightness = brightness - 1;
}
if(brightness == 255){
brightness_change = DECREASE;
}
if(brightness == 0){
brightness_change = INCREASE;
}
for(int current_led = 0;current_led < ledCount;current_led++){
analogWrite(current_led, brightness;
}
delay(delayTime;
}
テストし、それが動作するはずはありません。