चूंकि एलईडी काफी तेज रोशनी करती है, इसलिए कैमरा इस प्रभाव को अच्छी तरह से व्यक्त नहीं करता है। हकीकत में सब कुछ अच्छा दिखता है.
अरुडिनो स्केच:
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);
}
यह कोड सभी एलईडी को चालू करता है और समायोज्य गति से प्रत्येक को बारी-बारी से बंद करता है, और सीरियल मॉनिटर में ऐसे अक्षर भी प्रदर्शित करता है जिन्हें प्रदर्शित किया जा सकता है।
उदाहरण डिवाइस की स्थिति को स्पष्ट रूप से प्रदर्शित करता है, और स्विचिंग एलईडी इस बात का प्रतीक है कि यह फ़्रीज़ नहीं हुआ है।
No Comments Yet