Étape 4: Programmer
J’ai essayé quelques programmes de cycle de couleur RVB, mais fini par modifier gravement quelqu'un d’autre programme. J’ai ajouté quelques randimizations pour rendre l’écran moins statique et j’espère que plus intéressant. Heres est la version actuelle.
/*******************************************************\
* RGB_Fade *
* Créé pour l’utilisation du common! cathodiques! LED RGB. *
* Navigue entre les trois couleurs, à la décoloration. *
* Les bornes utilisées doivent être PWM(~) broches. *
* *
* Auteur : Anthony Weber *
* Date de création: 3 avril 2012 *
* *
* Légèrement modifié par Hippynerd (hippynurd *
* pour faire des transitions plus lisse et faire du vélo *
* plus intéressant. *
\*******************************************************/
Variables de couleur Pin
int redPin = 11 ; N’est-il pas évident ?
int greenPin = 10 ;
bluePin int = 9 ;
Variables de paramètres de synchronisation
int fadeSpeed = 1 ; C’est combien chaque LED change sur chaque étape.
int delaytime = 1 ; délai entre les cycles.
int delayCount = 1 ;
int randCount = 10 ;
Remarque : J’ai essayé de faire fadeSpeed aléatoire, mais qui s’est passé de mauvaises choses.
Autres Variables. N’avez pas besoin de changer ces.
rouge int = 0 ; Positions de départ.
vert int = 0 ; Si vous modifiez ces derniers, étant donné que le code est mis en place
int bleu = 255 ; pour démarrer au bleu, il pourrait agir drôle sur le premier cycle.
mode d’int = 0 ; 0 - bleu à violet, 1 - violet au rouge, 2 - rouge au jaune,
3 - jaune à vert, 4 - vert Aqua, 5 - aqua bleu
void setup() {//3-5-g-6
déclarez la broche 9 faire une sortie :
pinMode (bluePin, sortie) ; bleu
pinMode (greenPin, sortie) ; vert
pinMode (redPin, sortie) ; rouge
}
void loop() {}
Em léger !
analogWrite (bluePin, bleu) ;
analogWrite (greenPin, vert) ;
analogWrite (redPin, rouge) ;
Maintenant changer em !
Si (mode == 0) {//blue au violet ;
Si (rouge > = 255) {//change places !
mode = 1 ;
Delay(DelayTime*50) ; ne changez pas tout de suite.
} else {}
fadeSpeed += rouge ;
}
}
ElseIf (mode == 1) {//purple rouge
Si (bleu < = 0) {//change places !
mode = 2 ;
Delay(DelayTime*50) ; //dont changement tout de suite.
} else {}
bleu-= fadeSpeed ;
}
}
ElseIf (mode == 2) {//red jaune
Si (vert > = 255) {//change places !
mode = 3 ;
Delay(DelayTime*50) ; //dont changement tout de suite.
} else {}
+= vert fadeSpeed ; ///2 ; J’ai cela ralentir car il semble clignoter par trop rapidement.
Si vert (vert > 255) = 255 ;
}
}
ElseIf (mode == 3) {//yellow au vert
Si (rouge < = 0) {//change places !
mode = 4 ;
Delay(DelayTime*50) ; //dont changement tout de suite.
} else {}
fadeSpeed = rouge ;
}
}
ElseIf (mode == 4) {//green Aqua
Si (bleu > = 255) {//change places !
mode = 5 ;
Delay(DelayTime*50) ; //dont changement tout de suite.
} else {}
fadeSpeed += bleu ;
}
}
ElseIf (mode == 5) {//aqua au bleu
Si (vert < = 0) {//change places !
mode = 0 ;
Delay(DelayTime*50) ; //dont changement tout de suite.
} else {}
fadeSpeed = vert ;
}
}
Ce retard fonctionne très bien, mais n’hésitez pas à
changer cette option si vous voulez un fondu plus rapide mais plus lisse.
Retard a changé d’aléatoire pour fun plus affichage.
delayCount ++ ;
Si (delayCount > = randCount) {}
delayCount = 1 ;
randCount = random (500, 5000) ;
DelayTime = aléatoire (1, 150) ; retards aléatoires pour garder les choses intéressantes
}
Delay(DelayTime) ;
}