출판 날짜: 04.09.2024
 
                		LED가 상당히 밝게 빛나기 때문에 카메라에서는 이 효과를 잘 전달하지 못합니다. 실제로는 모든 것이 좋아 보입니다.
아두이노 스케치:
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는 장치가 정지되지 않았음을 상징합니다.
        No Comments Yet
    
        
