Stap 21: De gecodeerde Rat
Aan som dingen omhoog, hier is wat ik wilde de rat te doen, licht betreffende:
-De ogen moest worden blauw punten, dat wil zeggen één blauwe LED's. Zij moeten veranderen in intensiteit na verloop van tijd terwijl niet flikkeren, en ze moeten "blink" (uitschakelen) zo nu en dan. Twee keer knipperen willekeurig zou leuk zijn, en dus zou worden winking, d.w.z. slechts één oog knippert.
-De hourclass moet een of andere manier, glinsterende worden als mogelijk een uneartly lichte in het zand ingesloten.
Ik begon met twee LED's op PWM pennen, en iets voor de subtiele verandering in helderheid geprogrammeerd. Ik heb toegevoegd dan knipperen met behulp van een willekeurige element, en na het overwinnen van een glitch waardoor de ogen te knipperen herhaaldelijk na het eerste knipperen heb ik besloten dat ik niet echt de rat wilden op het wink immers.
Na verloop van tijd verbeterde ik de code om de knipperende gladder en de subtiele verschuiving randomize.
Voor de glinsterende besloten heb ik te gebruiken een shift register, minstens aanvankelijk. Ik dacht dat dit zou me te zetten een aantal LEDs in de zandloper met minder draden toestaan. Het was een leuke manier om te oefenen, maar ik het idee op het breadboard gesloopt. Het draden kan redden, maar ik zou met behulp van een microcontroller met ongeveer 10 pinnen ongebruikte.
Dus besloten heb ik te slaan het shift register en de LEDs direct, waardoor het me om te profiteren van de PWM voor meer effecten, te gebruiken.
Het grootste probleem er was om te beslissen welke kleur te gebruiken. In de films en de boeken in het algemeen, is er een probleem. Tuurlijk, er is veel afbeeldingen en beschrijvingen van de dood (hij is een van de beste personages, geloof me), en hourglasses zijn featured, ook, maar het ding is... Death's domain is
.
Going door wat ik had was niet haalbaar, want ik heb nog een vrij grote voorraad van LEDs van verschillende kleuren - de goedkope ones, maar ze oplichten en dat is wat telt. Dus had ik groen, rood, blauw, geel, oranje... Houdend in mening dat de ogen zijn blauw ik dacht groen zou een goede keuze, maar vervolgens een kleine stem in mijn hoofd - de ene schelden me voor het gebruik van een verschuiving te registreren in de eerste plaats wanneer ik kon hebben PWM in plaats daarvan - zei "Waarom koos?".
Dus besloten heb ik om te gaan voor groen als knipperende lichten, slechts aan/uit, en andere kleuren die zou verdwijnen, vooral rood en geel toevoegen. Die 2-3 LEDs zou doen sommige willekeurige en neergaande dimmen terwijl 5-7 groene degenen zou willekeurig knipperen.
Ik samen te stellen iets bevalt en na sommige spelen arround, besloot ik dat mijn beslissing had zijn ontsierd. Dus overgestapt ik naar groen en oranje, meer groen dan oranje, met vervagen en knipperende LEDs in beide kleuren.
En toen kwam het punt dat ik moet verontschuldigen voor, waardoor je dat alles alleen om u te vertellen dat in het einde, zijn ontevreden met mijn opties en wat ze zag eruit als lezen, ik het licht voor de zandloper volledig gesloopt.
Dus, hier is de code die ik voor de rat gebruikte. Alles wat dat het doet het maken het knipperen.
-----
int auge1 = 6; de pin die de ogen zijn aangesloten op
int auge2 = 5;
int auge_hell = 100; Hoe helder de LED is
int auge_fade = 4; Hoeveel punten te vervagen van de LED door
int auge_hellmax = 250;
int auge_hellmin = 80;
int blinkytime = 0;
int auge_hellalt = 0;
VOID Setup {}
pinMode (auge1, OUTPUT);
pinMode (auge2, OUTPUT);
}
void loop {}
analogWrite (auge1, auge_hell);
analogWrite (auge2, auge_hell);
Als (blinkytime == 0 & & random(175) == 1) {}
blinkytime = willekeurige (4, 14);
auge_hellalt = auge_hell;
auge_hell = 0;
}
schakelaar (blinkytime) {}
Case 0:
auge_hell = auge_hell auge_fade;
Als (auge_hell < = auge_hellmin) {}
auge_fade = - auge_fade;
auge_hellmin = random(50,100);
}
anders als (auge_hell > = auge_hellmax) {}
auge_fade = - auge_fade;
auge_hellmax = random(120,250);
}
breken;
Case 1:
auge_hell = auge_hellalt;
blinkytime = 0;
breken;
standaard:
blinkytime--;
breken;
}
delay(60);
}