質問
いよいのかフェードの複数のLEDの機能とArduino.使用できませんの遅延時間()がその他のものを走らせることも必要ですが、光の通りです。こうすることがあるのか"という動作しません。
int value = 0; // variable to keep the actual value
int ledpin = 9; // light connected to digital pin 9
int p1 = 0;
void setup()
{
// nothing for setup
Serial.begin(9600);
}
void loop()
{
inout(50, 30, 9, 0, 0);
//inout(20, 20, 10);
}
void inout(int inDelay, int outDelay, int ledpin, long previousmil, int done)
{
if(millis() - previousmil>inDelay){
if (value <=255){
analogWrite(ledpin, value); // sets the value (range from 0 to 255)
value+=5;
}
previousmil=millis();
}
if(value = 260)
done = 1;
if(millis() - previousmil>outDelay && done == 1){
if (value >0){
analogWrite(ledpin, value); // sets the value (range from 0 to 255)
value-=5;
}
previousmil=millis();
}
}
解決
の明らかなことになった状態フラグのための道を増加価値がないをテストするのに最い。したほうが良いと思われますの構造コードビットです。可能にしたいトラック以上の値の場合以上に一つのピンをなるべきフェードで、でも同時に行います。その場合はまさによると、ファッションの配列 struct
sパラメータで各松葉になりました。
片道の使用の遅延に複数の課題である各タスクの時間経過去ループは、調整の遅れのループは、時間の作業です。ごループのようなもの:
static unsigned long last_time = 0; // set to millis() in setup
static unsigned long refresh_period = 20; // 50Hz
void loop()
{
unsigned long time = millis();
unsigned long delta = time - last_time;
doTask1( delta );
doTask2( delta );
doTask3( delta );
doTask4( delta );
// as tasks may have taken some millis, adjust delay
unsigned long post_time = millis();
if ( post_time - last_time < refresh_period )
delay( refresh_period - ( post_time - last_time ) );
last_time = time;
}
その後、各タスクの実行に一度は20ms、渡されます20は、数ミリ秒単位で更新する状態です。いたしますので、あら遅れでもチャンスを更新してしまいました。
他のヒント
したい場合にスローハードウェアの問題は、できるフックアップLedの外部コントローラーチップのように、TI TLC5940.者またはプログラム明るさのレベル毎にLEDを取り扱いPWM出力のLedとは別にATMega CPUのArduino.するために必要な再プログラムは、東急不動産(株)チップを行いたい場合の輝度レベルに変化します。あのダイニングテーブル 東急不動産(株)ライブラリー対応のチップ Googleのコードです。
所属していません StackOverflow