Etape 21 : Le Rat codé
Aux choses de la somme, voici ce que je voulais le rat à faire, lumière effect-wise :
-Les yeux devaient être les points bleus, c'est-à-dire unique LEDs bleues. Ils devraient changer en intensité au fil du temps sans scintillement, et ils devrait « blink » (désactiver) chaque maintenant et puis. Clignote deux fois au hasard serait bien et donc pourrait être un clin de œil, clignotant c'est-à-dire qu’un seul œil.
-Le hourclass devrait être chatoyante en quelque sorte, si possible un uneartly lumineux incorporé dans le sable.
J’ai commencé avec deux LEDs sur les broches PWM et programmé quelque chose pour le subtil changement de luminosité. J’ai ensuite ajouté clignotant en utilisant un élément aléatoire, et après avoir surmonté un problème qui a provoqué les yeux clignote à plusieurs reprises après un premier clin, j’ai décidé que je ne voulais pas vraiment le rat pour clin d’oeil après tout.
Au fil du temps, j’ai amélioré le code pour faire le clignotement lisse et Alternez le renversement subtil.
Pour la vibration, j’ai décidé d’utiliser un registre à décalage, au moins dans un premier temps. J’ai pensé que cela me permettrait de mettre un certain nombre de voyants dans le sablier avec moins de fils. C’était une belle façon de pratiquer, mais j’ai abandonné l’idée sur le montage d’essai. Il pourrait sauver le fils, mais je voudrais utiliser un microcontrôleur avec environ 10 broches non utilisées.
J’ai donc décidé de sauter le registre à décalage et d’utiliser les LEDs directement, ce qui permet à moi de prendre avantage de PWM pour plus d’effets, trop.
Le principal problème il devait décider quelle couleur utiliser. Dans les films et dans les livres en général, il y a un problème. Bien sûr, il y a beaucoup d’images et descriptions de la mort (il est l’un des meilleurs personnages, croyez-moi) et les sabliers sont en vedette, et aussi, mais la chose est... Domaine de la mort est
.
Passe par ce que j’avais n’était pas possible non plus, car j’ai encore un stock assez important de LEDs de couleurs différentes - les plus bon marchés, mais ils s’allument et que c’est ce qui compte. J’ai donc dû vert, rouge, bleu, jaune, orange... Gardant à l’esprit que les yeux sont bleus, j’ai pensée verte serait un bon choix, mais alors une petite voix dans ma tête - celui me gronder pour à l’aide d’un changement s’inscrire en premier lieu quand je pourrais avoir PWM au lieu de cela - dit "pourquoi choisi?".
J’ai donc décidé d’aller pour le vert comme les lumières clignotantes, simples marche/arrêt et ajouter d’autres couleurs qui serait fade, surtout le rouge et le jaune. Ceux 2-3 LEDs feraient quelque gradation va-et-vient aléatoire tandis que 5-7 vert ceux clignoteraient au hasard.
J’ai mis en place quelque chose comme lui et après quelques arround jouant, j’ai décidé que ma décision a été entaché d’irrégularités. Donc je suis passé au vert et orange, orange, avec la décoloration et le clignotement des LEDs dans les deux couleurs plus verte.
Et puis vint le point que je voudrais présenter des excuses pour, vous faire lire tout cela seulement pour vous dire que dans la fin, être satisfait de mes options et quoi ils ressemblaient, j’ai abandonné la lumière pour le sablier complètement.
Donc, voici le code que j’ai utilisé pour le rat. Il n’il faire clignoter.
-----
int auge1 = 6 ; la broche attachés aux yeux à
int auge2 = 5 ;
int auge_hell = 100 ; la luminosité de la LED est
int auge_fade = 4 ; Combien de points se faner la LED par
int auge_hellmax = 250 ;
int auge_hellmin = 80 ;
int blinkytime = 0 ;
int auge_hellalt = 0 ;
void setup() {}
pinMode (auge1, sortie) ;
pinMode (auge2, sortie) ;
}
void loop() {}
analogWrite (auge1, auge_hell) ;
analogWrite (auge2, auge_hell) ;
Si (blinkytime == 0 & & random(175) == 1) {}
blinkytime = au hasard (4, 14) ;
auge_hellalt = auge_hell ;
auge_hell = 0 ;
}
Switch (blinkytime) {}
case 0 :
auge_hell = auge_hell auge_fade ;
Si (auge_hell < = auge_hellmin) {}
auge_fade = - auge_fade ;
auge_hellmin = random(50,100) ;
}
ElseIf (auge_hell > = auge_hellmax) {}
auge_fade = - auge_fade ;
auge_hellmax = random(120,250) ;
}
rupture ;
cas 1 :
auge_hell = auge_hellalt ;
blinkytime = 0 ;
rupture ;
par défaut :
blinkytime--;
rupture ;
}
Delay(60) ;
}