LED は非常に明るく点灯するため、カメラではこの効果がうまく伝わりません。実際にはすべてがうまく見えます。
Arduino スケッチ:
const byte PinLeds [] = { A0, A1, A2, A3, A4, A5 };
int Nleds = sizeof(PinLeds);
int idxLed;
const char *CharList [] = { "|", "/", "-", "\\"};
int Nchar = sizeof(CharList)/sizeof(char*);
int idxChar;
void fLeds ()
{
for (int n = 0; n < Nleds; n++)
digitalWrite (PinLeds [n], HIGH);
digitalWrite (PinLeds [idxLed], LOW);
if (Nleds <= ++idxLed)
idxLed = 0;
}
void fChars ()
{
Serial.print (CharList [idxChar]);
Serial.print ('\r');
if (Nchar <= ++idxChar)
idxChar = 0;
}
struct Job {
const unsigned long MsecPeriod;
void (*func) (void);
const char *desc;
unsigned long msec;
};
Job jobs [] = {
{ 500, fLeds, "leds" },
{ 200, fChars, "chars" },
};
const int Njobs = sizeof(jobs)/sizeof(Job);
void loop ()
{
unsigned long msec = millis ();
for (int j = 0; j < Njobs; j++) {
if (msec - jobs [j].msec >= jobs [j].MsecPeriod) {
jobs [j].msec += jobs [j].MsecPeriod;
jobs [j].func ();
}
}
}
void setup()
{
Serial.begin(9600);
for (int n = 0; n < Nleds; n++)
pinMode (PinLeds [n], OUTPUT);
}
このコードは、すべての LED をオンにし、調整可能な速度で各 LED を順番にオフにし、表示可能なシリアル モニターに文字も表示します。
この例ではデバイスの状態が明確に表示され、スイッチング LED はデバイスがフリーズしていないことを示しています。
No Comments Yet