Περιεχόμενα
Είσοδος
Αναζήτηση
Ποιοι είναι εδώ
Δημοσκόπηση
32 Χριστουγεννιατικα LED
Ο Arduino έχει 14 εξόδους το μέγιστο αν δεν χρησιμοποιήσουμε σειριακή επικοινωνία, ενώ 12 εξόδους αν χρησιμοποιήσουμε σειριακή επικοινωνία. Είναι αρκετά εύκολο να επεκτείνουμε τον αριθμό εξόδων του αν χρησιμοποιήσουμε το ολοκληρωμένο κύκλωμα μετατροπής από σειριακή σε παράλληλη επικοινωνία 74HC595.



Code
/*
3 LED Fader using Flip-Flops
by Sebastian Tomczak
27 January 2007
*/
int strobe_time = 5;
void setup() {
DDRD = B11111111;
DDRB = B00111111 | DDRB;
PORTB = B00000000;
}
void write374(byte clkPin, byte data) {
PORTD = data;
digitalWrite(clkPin, HIGH);
delayMicroseconds(strobe_time);
digitalWrite(clkPin, LOW);
delayMicroseconds(strobe_time);
}
void loop() {
for(int loop1 = 0; loop1 < 4; loop1++) {
randomSeed(analogRead(0));
int a = random(255);
randomSeed(analogRead(1));
int b = random(255);
randomSeed(analogRead(2));
int c = random(255);
randomSeed(analogRead(3));
int d = random(255);
for(int k = 0; k < 256; k++) {
for(int i = 0; i < 3; i ++) {
delayMicroseconds(k * 10);
write374(8, a);
write374(9, b);
write374(10, c);
write374(11, d);
delayMicroseconds(2551 - (k * 10) + 1);
write374(8, 0);
write374(9, 0);
write374(10, 0);
write374(11, 0);
}
}
}
for(int j = 0; j < 256; j++) {
int a = 255 | j;
int b = j;
int c = 255 & j;
int d = 255 - j;
for(int k = 256; k > 0; k--) {
for(int i = 0; i < 3; i ++) {
delayMicroseconds(k * 10);
write374(8, a);
write374(9, 0);
write374(10, c);
write374(11, 0);
delayMicroseconds(2551 - (k * 10));
write374(8, 0);
write374(9, b);
write374(10, 0);
write374(11, d);
}
}
}
}

