GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
KURUMI上のフルカラーLEDですが、RGBがそれぞれ22,23,24番ピンに接続され、SoftwarePWMでanalogWriteできたはずですが、V1.05で少し挙動がおかしいようです。
以下のコードはV1.04ではLEDが点滅しますが、V1.05では点きっぱなしになってしまいます。analogWriteの部分を245ではなく0で実行すれば点滅します(何故?)。
今回analogWriteの修正が入ったと思いますので、それ関連かと思いますが、よろしくお願い致します。
/*GR-KURUMI Sketch Template Version: V1.05*/#include <Arduino.h>
// Pin 22,23,24 are assigned to RGB LEDs.int led_red = 22; // LOW activeint led_green = 23; // LOW activeint led_blue = 24; // LOW active
// the setup routine runs once when you press reset:void setup() { //setPowerManagementMode(PM_STOP_MODE, 0, 1023); //Set CPU STOP_MODE in delay() //setOperationClockMode(CLK_LOW_SPEED_MODE); //Set CPU clock from 32MHz to 32.768kHz
// initialize the digital pin as an output. Serial.begin(9600); pinMode(led_red, OUTPUT); pinMode(led_green, OUTPUT); pinMode(led_blue, OUTPUT);
}
// the loop routine runs over and over again forever:void loop() { analogWrite(led_red, 245); analogWrite(led_green, 245); analogWrite(led_blue, 245); delay(500); // wait 500ms
analogWrite(led_red, 255); analogWrite(led_green, 255); analogWrite(led_blue, 255); delay(500); // wait 500ms}
なんか現状 analogWrite() の第2引数に 0 や 255 を与えるとうまく動作しないようで、254 とかにすると一応点滅するようです。
void loop() { analogWrite(led_red, 245); analogWrite(led_green, 245); analogWrite(led_blue, 245); delay(500); // wait 500ms analogWrite(led_red, 254); analogWrite(led_green, 254); analogWrite(led_blue, 254); delay(500); // wait 500ms }
ちなみに KURUMI の LED は負論理なので analogWrite() の第2引数に 245 や 254 を指定するとだいぶ暗いです。
fujitaさん。
例えば、0,255で行き来させれば点灯します。
また、1〜254の数値での行き来も上手く動いているように感じます。
1~254と255の組み合わせだと、255の時の消灯が上手く行きません。
0と1~254の組み合わせだと、0の時の完全点灯が所定の時間維持されていない状況となるようです。
結果的に、0もしくは255以外を使ってしまうと、消灯できない状況となります。
とりあえずV1.04に戻してしまいました。
申し訳ありません。バグを作りこんでいました。
RLduino78_basic.cppの_digitalWriteで以下の通り、_turnOffPWM(u8timer)の位置を修正していただき、オブジェクト(.o)を削除してビルドすると修正されます。近日v1.06として他の案件(再コンパイルで時間がかかる)も含めて修正したいと思います。
if (u8Timer != NOT_ON_TIMER) {
_turnOffPWM(u8Timer); // PWMの設定解除
if (g_u8AnalogWriteAvailableTable[u8Pin] == true){
g_u8AnalogWriteAvailableTable[u8Pin] = false;
Okamiyaさん、お世話になっております。
該当箇所は確認でき、修正後コンパイルできました。帰ったら実機で試してみます。
実機での動作も確認できました。ご対応有難うございました。