Enklaste och billigaste Arduino (7 / 9 steg)
Steg 7: En mer komplicerad skiss
Här är en annan mycket mer komplicerade skiss som du kan överföra till ATtiny85, det upptog 1508 Byte av Flash-minne.# Definiera MAX_CHANNEL 5 int kanal [MAX_CHANNEL] = {CH1, CH2, CH3, CH4, CH5}; långa intervall = 500. / / hastighet = 0,5 sekund Ogiltiga inställningar () { allChannelOn (); / / slå på alla LED i en sekund vid start Ogiltig loop) / / / / / / / / / / / / / / / / / / / / / / / / / Turn on all LED / / / / / / / / / / / / / / / / / / / / / / / / / Turn off all LED / / / / / / / / / / / / / / / / / / / / / / / / / Kör LED i sekvens void runKnightRider (void) { / / / / / / / / / / / / / / / / / / / / / / / / / Kör LED slumpmässigt för (byte jag = 0; jag < MAX_CHANNEL; jag + +) { om (allChannelState == 0) {/ / om alla LED avstängd
# Definiera CH1 0 / / ATTiny45/85 PIN5
# Definiera CH2 1 / / ATTiny45/85 PIN6
# Definiera CH3 2 / / ATTiny45/85 PIN7
# Definiera CH4 3 / / ATTiny45/85 PIN2
# Definiera CH5 4 / / ATTiny45/85 PIN3
/ / Serial.begin (9600);
för (byte jag = 0; jag < MAX_CHANNEL; jag + +) {
pinMode (kanal [i], OUTPUT); / / deklarera alla kanal som utgång
}
fördröjning (1000);
}
{
nedgångna ();
runKnightRider ();
för (byte jag = 0; jag < 10; jag + +) {/ / slinga 10 gånger för slumpmässiga LED
runRandom ();
}
}
void allChannelOn (void) {
för (byte jag = 0; jag < MAX_CHANNEL; jag + +) {
digitalWrite (kanal [i], hög);
}
}
void allChannelOff (void) {
för (byte jag = 0; jag < MAX_CHANNEL; jag + +) {
digitalWrite (kanal [i], låg);
}
}
Annullera genomgång (void) {
för (byte jag = 0; jag < MAX_CHANNEL; jag + +) {
allChannelOff ();
digitalWrite (kanal [i], hög);
fördröjning (intervall);
}
}
allChannelOff ();
för (byte jag = 0; jag < MAX_CHANNEL; jag + +) {
digitalWrite (kanal [i], hög);
fördröjning (intervall);
}
för (byte jag = 0; jag < MAX_CHANNEL; jag + +) {
digitalWrite (kanal [i], låg);
fördröjning (intervall);
}
}
void runRandom (void) {
int allChannelState, previousState, staten.
allChannelState = 0;
State = random (2).
allChannelState = allChannelState + staten.
digitalWrite (kanal [i], staten);
}
/ / Reserverad
} Annat {
fördröjning (intervall);
}
}