출판 날짜: 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