Bouclier jeu LED RGB pour arduino (5 / 6 étapes)

Étape 5: Le code

Le code de ce projet est assez simple. La première partie est pour defing tout, la seconde pour créer une couleur au hasard et la troisième pour utilisant les potentiomètres et en donnant les commandes bouton poussoir et LED.
C’est ici :

/ * Code pour rgb led jeu bouclier. Par Ikestarm17. Merci à Ladyada pour
tous les produits grandes, mbeckler pour son site d’information, marklar, grumpy_mike,
et AWOL sur l’Arduino forums.* /

int greenled1 = 13 ;
int verteLED2 = 8 ;
int greenled3 = 4 ;

int redled1 = 19 ;
int redled2 = 7 ;
int redled3 = 12 ;     LEDs qui montrent si vous étiez juste ou pas

buttonstate int ;
int val ;
val2 int ;
int val3 ;
int switchpin = 2 ;
int switchpin2 = 0 ;   variables pour les trucs de bouton

int redactual ;
int greenactual ;
int blueactual ;       variables pour stocker les couleurs que vous devez faire correspondre

int redPin = 3 ;
bluePin int = 5 ;
int greenPin = 6 ;     broches pour le rgb led vous contrôle

redIn int = 2 ;
int greenIn = 3 ;
int blueIn = 4 ;       broches pour les potentiomètres pour le rgb led

int redguess ;
int greenguess ;
int blueguess ;        variables pour stocker les valeurs de votre conduit à comparer à ceux au hasard

/ * Cette partie suivante avant « void setup() »
* est tout au sujet de rendre le rgb led
* une couleur au hasard « bonne », pas juste un blanc dehors.
* Je ne sais pas beaucoup sur cette partie,
* parce que j’ai changé seulement une petite partie,
* Marklar des forums arduino a créé * /

#ifndef RGBCommonLED_H
#define RGBCommonLED_H

#include « WProgram.h »

Class RGBCommonLED {}
public :
RGBCommonLED (int rpin, int gpin, int bpin) ;
~ RGBCommonLED() ;

void setRGB (byte r, g octet, byte b) ;
void setHSV (byte h, s octet, octet v) ;
void setColor (unsigned long v) ;
void setHue (niveau de l’octet) ;
void setSat (niveau de l’octet) ;
setVal Sub (niveau de l’octet) ;

void adjHue (int level) ;
void adjSat (int level) ;
void adjVal (int level) ;

void setRandomColor() ;
void setRandomHue() ;
void setRandomSat() ;
void setRandomVal() ;

void setHSVLevel (int section, niveau octet) ;
void adjHSVLevel (int section, int niveau) ;
void setRandomHSVLevel (int section) ;

void updateLED() ;

void HSVToRGB (unsigned int inHue, inSaturation unsigned int, unsigned int inValue,
unsigned int * ou, unsigned int * oG, unsigned int * oB) ;

void RGBToHSV (int unsigned énonce, unsigned int inGreen, unsigned int bleu,
unsigned int * oH, unsigned int * oS, unsigned int * oV) ;

void updateHSVFromRGB() ;

broches int [3] ;

int rgb [3] ;

int hsv [3] ;

privé :

Boolean hsvSet ;
void setRGBFromHSV() ;
void setHSVFromRGB() ;
};

#endif

RGBCommonLED::RGBCommonLED (int rpin, int gpin, int bpin) {}
broches [0] = rpin ;
pins [1] = gpin ;
broches [2] = bpin ;
hsvSet = false ;
}

RGBCommonLED:: ~ RGBCommonLED() {}
}

void RGBCommonLED::setColor (unsigned long v)
{
This -> setRGB ((v & 255), ((v >> 8) & 255), (v >> 16) & 255) ;
}

void RGBCommonLED::setRGB (byte r, g octet, byte b) {}
RVB [0] = r ;
RVB [1] = g ;
RVB [2] = b ;
hsvSet = false ;
}

void RGBCommonLED::setHSV (byte h, s octet, octet v) {}
HSV [0] = h ;
HSV [1] = s ;
HSV [2] = v ;
This -> setRGBFromHSV() ;
hsvSet = true ;
}

void RGBCommonLED::setHSVLevel (int section, niveau octet) {}
updateHSVFromRGB() ;
HSV [section] = niveau ;
This -> setRGBFromHSV() ;
}

void RGBCommonLED::setHue (niveau de l’octet) {}
This -> setHSVLevel(0,level) ;
}

void RGBCommonLED::setSat (niveau de l’octet) {}
This -> setHSVLevel(1,level) ;
}

void RGBCommonLED::setVal (niveau de l’octet) {}
This -> setHSVLevel(2,level) ;
}

void RGBCommonLED::adjHSVLevel (int niveau, section int) {}
updateHSVFromRGB() ;
int e = hsv [section] + niveau ;

Si (e < 0) {}
Th = 255 + th ;
}
ElseIf (th > 255) {}
Th = 255 - th ;
}

Th = constrain(th,0,255) ;
HSV [section] = th ;
This -> setRGBFromHSV() ;
}

void RGBCommonLED::adjHue (int level) {}
This -> adjHSVLevel(0,level) ;
}

void RGBCommonLED::adjSat (int level) {}
This -> adjHSVLevel(1,level) ;
}

void RGBCommonLED::adjVal (int level) {}
This -> adjHSVLevel(2,level) ;
}

void RGBCommonLED::RGBToHSV (int unsigned énonce, unsigned int inGreen, unsigned int bleu,
unsigned int * oH, unsigned int * oS, unsigned int * oV)
{
double vals [3] ;
unsigned char maxc = 0, minc = 0 ;
double teinte, samedi val ;

Vals [0] = inRed ;
Vals [1] = inGreen ;
Vals [2] = inBlue ;
rouge est défini comme valeurs maximale et minimale
Si (vals [1] > vals[maxc]) maxc = 1 ;
Si (vals [2] > vals[maxc]) maxc = 2 ;
Si (vals [1] < vals[minc]) minc = 1 ;
Si (vals [2] < vals[minc]) minc = 2 ;
Val = vals [maxc] ;
if(Vals[maxc]==0)
Sam = teinte = 0 ;
d’autre
{
Sat=255*(1-(Vals[MiNC]/Vals[maxc])) ;
teinte = 60 * ((maxc*2) + (vals [(maxc+1) %3]-vals [(maxc+2) %3]) / (vals [maxc] - vals[minc])) ;
}
Si += de hue (teinte < 0) 360 ; correcteur pour les teintes de -60 à 0 plage
* oH = teinte ; Map(Hue,0,360,0,255) ;
* oS = sat ;
* oV = val ;
}

void RGBCommonLED::HSVToRGB (unsigned int inHue, inSaturation unsigned int, unsigned int inValue,
unsigned int * ou, unsigned int * oG, unsigned int * oB)
{
Si (inSaturation == 0)
{
achromatique (gris)
* RC = * oG = * oB = inValue ;
}
d’autre
{
unsigned int scaledHue = (inHue * 6) ;
unsigned int secteur = scaledHue >> 8 ; secteur de 0 à 5 autour de la roue de couleur
unsigned int offsetInSector = scaledHue - (secteur << 8) ; position dans le secteur
unsigned int p = (inValue * (255 - inSaturation)) >> 8 ;
unsigned int q = (inValue * (255 - ((inSaturation * offsetInSector) >> 8))) >> 8 ;
unsigned int t = (inValue * (255 - ((inSaturation * (255 - offsetInSector)) >> 8))) >> 8 ;

commutateur (secteur) {}
case 0 :
* RC = inValue ;
* oG = t ;
* oB = p ;
rupture ;
cas 1 :
* RC = q ;
* oG = inValue ;
* oB = p ;
rupture ;
cas 2 :
* RC = p ;
* oG = inValue ;
* oB = t ;
rupture ;
cas 3 :
* RC = p ;
* oG = q ;
* oB = inValue ;
rupture ;
cas 4 :
* RC = t ;
* oG = p ;
* oB = inValue ;
rupture ;
par défaut: / / case 5 :
* RC = inValue ;
* oG = p ;
* oB = q ;
rupture ;
}
}
}

void RGBCommonLED::setRandomColor() {}
This -> setColor ((unsigned long)random(0x01000000)) ;
}

void RGBCommonLED::setRandomHue() {}
This -> setRandomHSVLevel(0) ;
}
void RGBCommonLED::setRandomSat() {}
This -> setRandomHSVLevel(1) ;
}
void RGBCommonLED::setRandomVal() {}
This -> setRandomHSVLevel(2) ;
}

void RGBCommonLED::setRandomHSVLevel (int section) {}
This -> setHSVLevel (section, (unsigned int)random(0x0100)) ;
}

void RGBCommonLED::updateHSVFromRGB() {}
This -> setHSVFromRGB() ;
hsvSet = true ;
}
void RGBCommonLED::updateLED() {}
analogWrite (ce-> pins [0], rgb[0]) ;
analogWrite (ce-> pins [1], rgb[1]) ;
analogWrite (ce-> pins [2], rgb[2]) ;

redactual = RVB [0] ;
greenactual = RVB [1] ;
blueactual = RVB [2] ;

}

void RGBCommonLED::setRGBFromHSV() {}
unsigned int h = hsv [0] ;
unsigned int s = hsv [1] ;
unsigned int v = hsv [2] ;
unsigned int r = 0 ;
unsigned int g = 0 ;
unsigned int b = 0 ;
HSVToRGB (h, s, v, r, g, & b) ;
This -> setRGB(r,g,b) ;
}

void RGBCommonLED::setHSVFromRGB() {}
unsigned int r = RVB [0] ;
unsigned int g = RVB [1] ;
unsigned int b = RVB [2] ;
unsigned int h ;
unsigned int s ;
unsigned int v ;

This -> RGBToHSV (r, g, b et h & s et v) ;
HSV [0] = map(h,0,360,0,255) ;
HSV [1] = s ;
HSV [2] = v ;
hsvSet = true ;
}

RGBCommonLED led1(10,11,9) ;

void setup()
{
pinMode (redled1, sortie) ;
pinMode (redled2, sortie) ;
pinMode (redled3, sortie) ;
pinMode (greenled1, sortie) ;
pinMode (verteLED2, sortie) ;
pinMode (greenled3, sortie) ;
pinMode (switchpin, entrée) ;
pinMode (switchpin2, INPUT); / / réglage de la LED comme sortie et l’interrupteur comme entrée
Serial.Begin(9600) ;          commencer la série
randomSeed(analogRead(0)) ;   lire les broches analogiques 0 pour obtenir la valeur aléatoire

LED1.setRandomHue() ;
LED1.setSat(255) ;
LED1.setVal(255) ;
LED1.setRandomColor() ;
LED1.updateLED() ;             Définissez une couleur au hasard sur le premier rgb led

ButtonState = digitalRead(switchpin) ;  lire le contacteur comme

}

void loop() {}

redguess = analogRead(redIn) ;
greenguess = analogRead(greenIn) ;
blueguess = analogRead(blueIn) ;               lire les potentiomètres

redguess = carte (redguess, 0, 1023, 0, 255) ;
greenguess = carte (greenguess, 0, 1023, 0, 255) ;
blueguess = carte (blueguess, 0, 1023, 0, 255) ;    réduire les valeurs

analogWrite (redPin, redguess) ;
analogWrite (greenPin, greenguess) ;
analogWrite (bluePin, blueguess) ;              Définissez les valeurs de couleur

redguess = 255 - redguess ;
blueguess = 255 - blueguess ;
greenguess = 255 - greenguess ;                  fixer la valeur nombre 0 est 255 et 255 est 0

Val = digitalRead(switchpin) ;
Delay(10) ;
val2 = digitalRead(switchpin) ;
val3 = digitalRead(switchpin2) ;               lire les commutateurs et fixer le rebondissement

Si (val3 == LOW & & val == val2 & & val! = buttonstate & & val == LOW & & redactual + 55 < redguess ||
val3 == LOW & & val == val2 & & val! = buttonstate & & val == LOW & & redactual - 55 > redguess ||
val3 == LOW & & val == val2 & & val! = buttonstate & & val == LOW & & blueactual + 55 < blueguess ||
val3 == LOW & & val == val2 & & val! = buttonstate & & val == LOW & & blueactual - 55 > blueguess ||
val3 == LOW & & val == val2 & & val! = buttonstate & & val == LOW & & greenactual + 55 < greenguess ||
val3 == LOW & & val == val2 & & val! = buttonstate & & val == LOW & & greenactual - 55 > greenguess ||
val3 == HIGH & & val == val2 & & val! = buttonstate & & val == LOW & & redactual + 85 < redguess ||
val3 == HIGH & & val == val2 & & val! = buttonstate & & val == LOW & & redactual - 85 > redguess ||
val3 == HIGH & & val == val2 & & val! = buttonstate & & val == LOW & & blueactual + 85 < blueguess ||
val3 == HIGH & & val == val2 & & val! = buttonstate & & val == LOW & & blueactual - 85 > blueguess ||
val3 == HIGH & & val == val2 & & val! = buttonstate & & val == LOW & & greenactual + 85 < greenguess ||
val3 == HIGH & & val == val2 & & val! = buttonstate & & val == LOW & & greenactual - 85 > greenguess) {/ / Assurez-vous couleurs de votre led ne correspondent pas à l’autre un pour le niveau plus facile

digitalWrite (greenled1, basse), / / allumer les leds rouges
digitalWrite (redled1, HIGH),
Delay(500),
digitalWrite (redled1, basse),
digitalWrite (redled2, HIGH),
Delay(500),
digitalWrite (redled2, basse),
digitalWrite (redled3, HIGH),
Delay(500),
digitalWrite(redled3,LOW) ;
digitalWrite (redled1, HIGH),
Delay(500),
digitalWrite (redled1, basse),
digitalWrite (redled2, HIGH),
Delay(500),
digitalWrite (redled2, basse),
digitalWrite (redled3, HIGH),
Delay(500),
digitalWrite(redled3,LOW),
digitalWrite (redled1, HIGH),
digitalWrite (redled2, HIGH),
digitalWrite (redled3, HIGH),
Delay(250),
digitalWrite (redled1, basse),
digitalWrite (redled2, basse),
digitalWrite (redled3, basse),
Delay(250),
digitalWrite (redled1, HIGH),
digitalWrite (redled2, HIGH),
digitalWrite (redled3, HIGH),
Delay(250),
digitalWrite (redled1, basse),
digitalWrite (redled2, basse),
digitalWrite (redled3, basse),
Delay(250),
digitalWrite (redled1, HIGH),
digitalWrite (redled2, HIGH),
digitalWrite (redled3, HIGH),
Delay(250),
digitalWrite (redled1, basse),
digitalWrite (redled2, basse),
digitalWrite (redled3, basse),
Delay(250),
digitalWrite (redled1, HIGH),
digitalWrite (redled2, HIGH),
digitalWrite (redled3, HIGH),
Delay(250),
digitalWrite (redled1, basse),
digitalWrite (redled2, basse),
digitalWrite (redled3, basse),
Delay(250) ;
}

tandis que (val3 == LOW & & val == val2 & & val! = buttonstate & & val == LOW & & / / Assurez-vous que le bouton est enfoncé
redactual + 55 > = redguess & & redactual - 55 < = redguess & &
blueactual + 55 > = blueguess & & blueactual - 55 < = blueguess & &
greenactual + 55 > = greenguess & & greenactual - 55 < = greenguess ||
val3 == HIGH & & val == val2 & & val! = buttonstate & & val == LOW & &
redactual + 85 > = redguess & & redactual - 85 < = redguess & &
blueactual + 85 > = blueguess & & blueactual - 85 < = blueguess & &
greenactual + 85 > = greenguess & & greenactual - 85 < = greenguess) {/ / Assurez-vous couleurs de votre led sont assez proches à l’autre de niveau facile

digitalWrite(redled1,LOW), / / allumer les leds vertes
digitalWrite (greenled1, HIGH),
Delay(500),
digitalWrite (greenled1, basse),
digitalWrite (verteLED2, HIGH),
Delay(500),
digitalWrite (verteLED2, basse),
digitalWrite (greenled3, HIGH),
Delay(500),
digitalWrite (greenled3, basse),
digitalWrite(redled1,LOW), / / allumer les leds vertes
digitalWrite (greenled1, HIGH),
Delay(500),
digitalWrite (greenled1, basse),
digitalWrite (verteLED2, HIGH),
Delay(500),
digitalWrite (verteLED2, basse),
digitalWrite (greenled3, HIGH),
Delay(500),
digitalWrite (greenled3, basse),
digitalWrite (greenled1, HIGH),
digitalWrite (verteLED2, HIGH),
digitalWrite (greenled3, HIGH),
Delay(250),
digitalWrite (greenled1, basse),
digitalWrite (verteLED2, basse),
digitalWrite (greenled3, basse),
Delay(250),
digitalWrite (greenled1, HIGH),
digitalWrite (verteLED2, HIGH),
digitalWrite (greenled3, HIGH),
Delay(250),
digitalWrite (greenled1, basse),
digitalWrite (verteLED2, basse),
digitalWrite (greenled3, basse),
Delay(250),
digitalWrite (greenled1, HIGH),
digitalWrite (verteLED2, HIGH),
digitalWrite (greenled3, HIGH),
Delay(250),
digitalWrite (greenled1, basse),
digitalWrite (verteLED2, basse),
digitalWrite (greenled3, basse),
Delay(250),
digitalWrite (greenled1, HIGH),
digitalWrite (verteLED2, HIGH),
digitalWrite (greenled3, HIGH),
Delay(250),
digitalWrite (greenled1, basse),
digitalWrite (verteLED2, basse),
digitalWrite (greenled3, basse),
Delay(250) ;
}
}

Articles Liés

Modifier un kit LED RGB pour alimenter des LEDs plus

Modifier un kit LED RGB pour alimenter des LEDs plus

La réponse est: « Oui » et « Non ».C'est en effet possible de modifier un kit LED RGB pour accueillir une plus longue longueur de bande de RVB. Cependant, il existe deux types de limites :(a) la limitation de l'alimentation électrique se trouvant à l
Circuit de Strip LED RGB avec Arduino

Circuit de Strip LED RGB avec Arduino

Ce Instructable couvre l'Assemblée d'un circuit capable d'ing PWM (modulation de largeur d'impulsion) une bande de RVB LED 9-12v et un Arduino pour faire défiler une gamme de couleurs de programmation. Je vais discuter de comment monter un transistor
Meilleur LED RGB pour n’importe quel projet (WS2812, aka NeoPixels)

Meilleur LED RGB pour n’importe quel projet (WS2812, aka NeoPixels)

Quand nous travaillons en collaboration avec LEDs, nous aimons souvent contrôler leur état (marche/arrêt), la luminosité et la couleur. Il y a beaucoup, beaucoup de différentes façons d'aller à ce sujet, mais aucun n'est qu'une solution comme la WS28
En utilisant une LED RGB pour détecter les couleurs

En utilisant une LED RGB pour détecter les couleurs

je vais vous montrer comment vous pouvez utiliser une LED RVB et une cellule photoélectrique de CD comme un capteur de couleur pour un micro-contrôleur. Je vais illustrer la méthode pour récupérer une couleur à l'aide d'Arduino, et je vais vous montr
Commander une Led RGB avec Arduino et traitement

Commander une Led RGB avec Arduino et traitement

cette instructable (mon premier pas moins) indique comment contrôler une RGB a conduit à l'aide de la transformation et arduino.La caractéristique principale étant que la couleur est sélectionnée en cliquant sur une image, la valeur RGB du pixel sur
Contrôle LED RGB avec arduino et traitement.

Contrôle LED RGB avec arduino et traitement.

Je vais vous dire aujourd'hui comment contrôler un LED RGB avec l'aide du langage Arduino et traitement. Il s'agit de mon premier instructable alors, s'il vous plaît laissez-moi savoir si je pouvais rien améliorer et si vous avez n'importe quel genre
Comment écrire votre propre 4 x 4 x 4 Cube LED montrer pour Arduino

Comment écrire votre propre 4 x 4 x 4 Cube LED montrer pour Arduino

Là-bas, il y a beaucoup de Instructables vous enseigner la façon de construire un cube de LED, cependant seulement quelques-uns réellement vous aident à écrire le code pour aller avec elle, mais plutôt juste vous donner certains à utiliser, stoppant
Comment contrôler une bande de LED RGB - Tutorial Arduino

Comment contrôler une bande de LED RGB - Tutorial Arduino

Dans ce tutoriel, nous allons utiliser une bande avec 8 LEDs RGB avec la carte de Arduino uno. Nous allons utiliser la bibliothèque de NeoPixel de la Adafruit pour changer la couleur de chaque led.Let's get started !Étape 1: Ce que vous aurez besoinP
Multi couleur lumière rayonnant épée - LED RGB pour la peinture avec la lumière.

Multi couleur lumière rayonnant épée - LED RGB pour la peinture avec la lumière.

je viens de lames neuves pour mon essuie-glace et le paquet instantanément m'a donné envie de commencer le combat à l'épée. Blinky épées de lumière pour la peinture avec la lumière?!?! OUI!!!Vous pouvez créer ce projet pour :Photographie des effets s
Capteur d’impulsions de la LED (PPG) pour Arduino

Capteur d’impulsions de la LED (PPG) pour Arduino

Au sein de ce Instructable je vais vous montrer, comment implémenter un simple capteur PPG (photoplethysmogram) pour arduino. Cet appareil utilise la lumière infrarouge pour mesurer l'impulsion vous. Vous connaissez peut-être cette technique des capt
BRICOLAGE | 3 x 3 x 3 LED Cube pour Arduino Nano +

BRICOLAGE | 3 x 3 x 3 LED Cube pour Arduino Nano +

Salut tout le monde !Mon nom est RGBFreak et j'ai créé une chaîne YouTube tout récemment.J'aime le bricolage et j'aime surtout le LED, c'est pourquoi j'ai décidé de faire mon propre 3 x 3 x 3 LED Cube !Vous aurez besoin des éléments suivants pour fai
Tutoriel de LED RGB (en utilisant un Arduino) (RGBL)

Tutoriel de LED RGB (en utilisant un Arduino) (RGBL)

Les LEDs sont grands. Mais avec n'importe quel projet, il arrive un moment où clignotant est tout simplement pas assez. Pour ces cas un RVB (rouge, vert, bleu) LED est la réponse.Avec une LED RVB, vous serez en mesure de produire n'importe quelle cou
Lampe à LED RGB Arduino + 4 bit écran LCD

Lampe à LED RGB Arduino + 4 bit écran LCD

c'est mon premier instructable!!! Yay...Avant de continuer. Je ne pas entrer dans les détails de la façon de couper le bois, ou tout reconstituer. J'ai chorégraphié le processus de génération entière, quelle que soit venu à l'esprit est ce que j'ai r
Comment utiliser une LED RGB - Arduino Tutorial

Comment utiliser une LED RGB - Arduino Tutorial

Une LED RGB a 4 broches, un pour chaque couleur (rouge, vert, bleu) et une cathode commune. Il dispose d'arbre différente couleur-électroluminescentes qui peuvent être combinés pour créer toutes sortes de couleur ! N'importe quelle couleur est possib