Juego protector del RGB LED para arduino (5 / 6 paso)

Paso 5: El código

El código para este proyecto es bastante simple. La primera parte es para defing todo, el segundo para crear un color aleatorio y el tercero para uso de los potenciómetros y dando los comandos pulsador y LED.
Aquí está:

/ * Código para rgb led shield juego. Por Ikestarm17. Agradecimiento especial a Ladyada para
todos los productos grandes, mbeckler por su sitio informativo, marklar, grumpy_mike,
y AWOL en el forums.* de Arduino /

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

int redled1 = 19;
int redled2 = 7;
int redled3 = 12;     LEDs que indican si usted justo o no

int buttonstate;
int val;
int val2;
val3 int;
int switchpin = 2;
int switchpin2 = 0;   variables para la materia de botón

int redactual;
int greenactual;
int blueactual;       variables para almacenar los colores que usted necesita para que coincida con

redPin int = 3;
bluePin int = 5;
int greenPin = 6;     Pins para el rgb led de control se

redIn int = 2;
int greenIn = 3;
int blueIn = 4;       Pins para los potenciómetros para el rgb led

int redguess;
int greenguess;
int blueguess;        variables para almacenar los valores de su conducido para comparar a los aleatorios

/ * Esta parte siguiente antes de "void setup()"
* trata de hacer el rgb led
* un color aleatorio "bueno", no sólo una whited hacia fuera.
* No sé mucho sobre esta parte,
* porque sólo he cambiado una pequeña parte,
* Marklar desde los foros de arduino creados * /

#ifndef RGBCommonLED_H
#define RGBCommonLED_H

#include "WProgram.h"

clase RGBCommonLED {}
público:
RGBCommonLED (int rpin, gpin int, int bpin);
~ RGBCommonLED();

void setRGB (byte r, byte g, byte b);
void setHSV (byte h, s byte, byte v);
Colores vacío (v largo sin signo);
void setHue (nivel de byte);
void setSat (nivel de byte);
setVal nula (nivel de byte);

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

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

void setHSVLevel (int sección, nivel de byte);
void adjHSVLevel (int sección, int nivel);
void setRandomHSVLevel (int sección);

void updateLED();

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

void RGBToHSV (unsigned int inRed, unsigned int inGreen, unsigned int inBlue,
unsigned int * oH, unsigned int * oS, unsigned int * oV);

void updateHSVFromRGB();

pernos de int [3];

int rgb [3];

hsv int [3];

privado:

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

#endif

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

RGBCommonLED:: ~ RGBCommonLED() {}
}

void RGBCommonLED::setColor (unsigned v largo)
{
Esto -> setRGB ((v y 255), ((v >> 8) y 255), (v >> 16) & 255);
}

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

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

void RGBCommonLED::setHSVLevel (int sección, nivel de byte) {}
updateHSVFromRGB();
HSV [sección] = nivel;
Esto -> setRGBFromHSV();
}

void RGBCommonLED::setHue (nivel de byte) {}
Esto -> setHSVLevel(0,level);
}

void RGBCommonLED::setSat (nivel de byte) {}
Esto -> setHSVLevel(1,level);
}

void RGBCommonLED::setVal (nivel de byte) {}
Esto -> setHSVLevel(2,level);
}

void RGBCommonLED::adjHSVLevel (int sección, int nivel) {}
updateHSVFromRGB();
int th = hsv [sección] + nivel;

Si (th < 0) {}
TH = 255 + th;
}
else if (th > 255) {}
TH = 255 - th;
}

TH = constrain(th,0,255);
HSV [sección] = th;
Esto -> setRGBFromHSV();
}

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

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

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

void RGBCommonLED::RGBToHSV (unsigned int inRed, unsigned int inGreen, unsigned int inBlue,
unsigned int * oH, unsigned int * oS, unsigned int * oV)
{
doble vals [3];
unsigned char maxc = 0, minc = 0;
doble matiz, sat, val;

Vals [0] = inRed;
Vals [1] = inGreen;
Vals [2] = inBlue;
rojo se establece como máximo y mínimo
Si (vals [1] > maxc vals[maxc]) = 1;
Si (vals [2] > maxc vals[maxc]) = 2;
Si (vals [1] < vals[minc]) minc = 1;
Si (vals [2] < vals[minc]) minc = 2;
Val = vals [maxc];
if(vals[maxc]==0)
SAT = hue = 0;
otra cosa
{
SAT=255*(1-(vals[MinC]/vals[maxc]));
Hue = 60 * ((maxc*2) + (vals [(maxc+1) %3]-vals [(maxc+2) %3]) / (vals [maxc] - vals[minc]));
}
Si += de hue (tonalidad < 0) 360; Corrector de tonos de -60 a 0 gama
* oH = hue; Map(Hue,0,360,0,255);
* oS = sentado;
* oV = val;
}

void RGBCommonLED::HSVToRGB (unsigned int inHue, inSaturation unsigned int, unsigned int inValue,
unsigned int * o, unsigned int * oG, unsigned int * oB)
{
Si (inSaturation == 0)
{
acromáticos (grises)
* o = * oG = * oB = inValue;
}
otra cosa
{
unsigned int scaledHue = (inHue * 6);
unsigned int sector = scaledHue >> 8; sector de 0 a 5 en la rueda de color
unsigned int offsetInSector = scaledHue - (sector << 8); posición dentro del sector
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;

interruptor (sector) {}
caso 0:
* o = inValue;
* oG = t;
* oB = p;
rotura;
caso 1:
* o = q;
* oG = inValue;
* oB = p;
rotura;
caso 2:
* o = p;
* oG = inValue;
* oB = t;
rotura;
caso 3:
* o = p;
* oG = q;
* oB = inValue;
rotura;
caso 4:
* o = t;
* oG = p;
* oB = inValue;
rotura;
default: / / caso 5:
* o = inValue;
* oG = p;
* oB = q;
rotura;
}
}
}

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

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

void RGBCommonLED::setRandomHSVLevel (int sección) {}
Esto -> setHSVLevel (sección, (sin firmar int)random(0x0100));
}

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

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

}

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

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

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

Led1(10,11,9) de RGBCommonLED;

void setup()
{
pinMode (redled1, salida);
pinMode (redled2, salida);
pinMode (redled3, salida);
pinMode (greenled1, salida);
pinMode (greenled2, salida);
pinMode (greenled3, salida);
pinMode (switchpin, entrada);
pinMode (switchpin2, entrada); / / configurar el LED como salida y el interruptor de entrada
Serial.Begin(9600);          Inicio serie
randomSeed(analogRead(0));   leyó el pin analógico 0 para obtener el valor aleatorio

LED1.setRandomHue();
LED1.setSat(255);
LED1.setVal(255);
LED1.setRandomColor();
LED1.updateLED();             establecer un color al azar en el primer rgb led

ButtonState = digitalRead(switchpin);  leer como apagar

}

void loop() {}

redguess = analogRead(redIn);
greenguess = analogRead(greenIn);
blueguess = analogRead(blueIn);               leer los potenciómetros

redguess = mapa (redguess, 0, 1023, 0, 255);
greenguess = mapa (greenguess, 0, 1023, 0, 255);
blueguess = mapa (blueguess, 0, 1023, 0, 255);    escala de los valores

analogWrite (redPin, redguess);
analogWrite (greenPin, greenguess);
analogWrite (bluePin, blueguess);              establecer los valores de color

redguess = 255 - redguess;
blueguess = 255 - blueguess;
greenguess = 255 - greenguess;                  fijar el valor los números 0 es 255 y 255 es 0

Val = digitalRead(switchpin);
Delay(10);
val2 = digitalRead(switchpin);
val3 = digitalRead(switchpin2);               leer interruptores y fijar el rebote

Si (val3 == baja & & val == val2 & & val! = buttonstate & & val == LOW & & redactual + 55 < redguess ||
val3 == baja & & val == val2 & & val! = buttonstate & & val == LOW & & redactual - 55 > redguess ||
val3 == baja & & val == val2 & & val! = buttonstate & & val == LOW & & blueactual + 55 < blueguess ||
val3 == baja & & val == val2 & & val! = buttonstate & & val == LOW & & blueactual - 55 > blueguess ||
val3 == baja & & val == val2 & & val! = buttonstate & & val == LOW & & greenactual + 55 < greenguess ||
val3 == baja & & val == val2 & & val! = buttonstate & & val == LOW & & greenactual - 55 > greenguess ||
val3 == alto & & val == val2 & & val! = buttonstate & & val == LOW & & redactual + 85 < redguess ||
val3 == alto & & val == val2 & & val! = buttonstate & & val == LOW & & redactual - 85 > redguess ||
val3 == alto & & val == val2 & & val! = buttonstate & & val == LOW & & blueactual + 85 < blueguess ||
val3 == alto & & val == val2 & & val! = buttonstate & & val == LOW & & blueactual - 85 > blueguess ||
val3 == alto & & val == val2 & & val! = buttonstate & & val == LOW & & greenactual + 85 < greenguess ||
val3 == alto & & val == val2 & & val! = buttonstate & & val == LOW & & greenactual - 85 > greenguess) {/ / asegurarse de que colores de su led no coinciden con el otro para el nivel más fácil

digitalWrite (greenled1, bajo), / / enciende LED rojo
digitalWrite (redled1, HIGH),
Delay(500),
digitalWrite (redled1, bajo),
digitalWrite (redled2, HIGH),
Delay(500),
digitalWrite (redled2, bajo),
digitalWrite (redled3, HIGH),
Delay(500),
digitalWrite(redled3,LOW);
digitalWrite (redled1, HIGH),
Delay(500),
digitalWrite (redled1, bajo),
digitalWrite (redled2, HIGH),
Delay(500),
digitalWrite (redled2, bajo),
digitalWrite (redled3, HIGH),
Delay(500),
digitalWrite(redled3,LOW),
digitalWrite (redled1, HIGH),
digitalWrite (redled2, HIGH),
digitalWrite (redled3, HIGH),
Delay(250),
digitalWrite (redled1, bajo),
digitalWrite (redled2, bajo),
digitalWrite (redled3, bajo),
Delay(250),
digitalWrite (redled1, HIGH),
digitalWrite (redled2, HIGH),
digitalWrite (redled3, HIGH),
Delay(250),
digitalWrite (redled1, bajo),
digitalWrite (redled2, bajo),
digitalWrite (redled3, bajo),
Delay(250),
digitalWrite (redled1, HIGH),
digitalWrite (redled2, HIGH),
digitalWrite (redled3, HIGH),
Delay(250),
digitalWrite (redled1, bajo),
digitalWrite (redled2, bajo),
digitalWrite (redled3, bajo),
Delay(250),
digitalWrite (redled1, HIGH),
digitalWrite (redled2, HIGH),
digitalWrite (redled3, HIGH),
Delay(250),
digitalWrite (redled1, bajo),
digitalWrite (redled2, bajo),
digitalWrite (redled3, bajo),
Delay(250);
}

mientras que (val3 == baja & & val == val2 & & val! = buttonstate & & val == LOW & & / / asegurarse de que se presiona el botón
redactual + 55 > = redguess & & redactual - 55 < = redguess & &
blueactual + 55 > = blueguess & & blueactual - 55 < = blueguess & &
greenactual + 55 > = greenguess & & greenactual - 55 < = greenguess ||
val3 == alto & & val == val2 & & val! = buttonstate & & val == LOW & &
redactual + 85 > = redguess & & redactual - 85 < = redguess & &
blueactual + 85 > = blueguess & & blueactual - 85 < = blueguess & &
greenactual + 85 > = greenguess & & greenactual - 85 < = greenguess) {/ / asegurarse de que colores de su led es lo suficientemente cerca como para el otro para el nivel fácil

digitalWrite(redled1,LOW), / / enciende el LED verde
digitalWrite (greenled1, HIGH),
Delay(500),
digitalWrite (greenled1, bajo),
digitalWrite (greenled2, HIGH),
Delay(500),
digitalWrite (greenled2, bajo),
digitalWrite (greenled3, HIGH),
Delay(500),
digitalWrite (greenled3, bajo),
digitalWrite(redled1,LOW), / / enciende el LED verde
digitalWrite (greenled1, HIGH),
Delay(500),
digitalWrite (greenled1, bajo),
digitalWrite (greenled2, HIGH),
Delay(500),
digitalWrite (greenled2, bajo),
digitalWrite (greenled3, HIGH),
Delay(500),
digitalWrite (greenled3, bajo),
digitalWrite (greenled1, HIGH),
digitalWrite (greenled2, HIGH),
digitalWrite (greenled3, HIGH),
Delay(250),
digitalWrite (greenled1, bajo),
digitalWrite (greenled2, bajo),
digitalWrite (greenled3, bajo),
Delay(250),
digitalWrite (greenled1, HIGH),
digitalWrite (greenled2, HIGH),
digitalWrite (greenled3, HIGH),
Delay(250),
digitalWrite (greenled1, bajo),
digitalWrite (greenled2, bajo),
digitalWrite (greenled3, bajo),
Delay(250),
digitalWrite (greenled1, HIGH),
digitalWrite (greenled2, HIGH),
digitalWrite (greenled3, HIGH),
Delay(250),
digitalWrite (greenled1, bajo),
digitalWrite (greenled2, bajo),
digitalWrite (greenled3, bajo),
Delay(250),
digitalWrite (greenled1, HIGH),
digitalWrite (greenled2, HIGH),
digitalWrite (greenled3, HIGH),
Delay(250),
digitalWrite (greenled1, bajo),
digitalWrite (greenled2, bajo),
digitalWrite (greenled3, bajo),
Delay(250);
}
}

Artículos Relacionados

Cadete de Dub: Holográfica MIDI y controlador de LED para Arduino - parte 1

Cadete de Dub: Holográfica MIDI y controlador de LED para Arduino - parte 1

Creo que instrumentos musicales holográficos será común en el futuro, mostrando en todas partes de las escuelas (para educación), a los hogares (para divertirse), a las oficinas de los medios de comunicación (para la creatividad) y en los estudios de
EMERGENCIA del RGB LED FLASHER

EMERGENCIA del RGB LED FLASHER

INTRO: EMERGENCIA RGB LED FLASHEREste Instructable fue hecho antes incluso de empezarlo la mitad.Todo comenzó después de ordenara una luz de la bicicleta 5 LED trasero rojo con 7 modos de flasheo de Ebay.Yo estaba impresionado con todos los modos que
Salida de escudo Simple DIY LED para Arduino UNO R3

Salida de escudo Simple DIY LED para Arduino UNO R3

Arduino uno no utiliza sin escudo externo. En este tutorial podemos chared cómo hacer Sheid para arduino usando 4 unidades LED.Paso 1: Salida esquema de pantalla de LED para arduino Este esquema explica cómo se conectod al pin digital a arduino uno R
Arduino controla la tira RGB LED para el salón

Arduino controla la tira RGB LED para el salón

La idea detrás de este pequeño proyecto fue que alguna luz indirecta bastante humor en la sala de estar. Es controlado por el servidor de openHAB (que el proyecto todavía está en la lista que se añade a este sitio) instalado en un Raspberry Pi. Por s
BRICOLAJE | 3 x 3 x 3 cubo del LED para Arduino Nano +

BRICOLAJE | 3 x 3 x 3 cubo del LED para Arduino Nano +

Hi todo el mundo!Mi nombre es RGBFreak y he creado un canal en YouTube hace poco.Me encanta el bricolaje y me gusta sobre todo LED, por lo que decidí hacer mi propia 3 x 3 x 3 cubo del LED!Usted necesitará los siguientes elementos para hacer este cub
Luz del estroboscópico del policía con escáner rgb LED y Arduino

Luz del estroboscópico del policía con escáner rgb LED y Arduino

No es un patrón real flash utilizado por la policía.Pocos loops programados por mí para demostrar algunas posibilidades.DESCARGO DE RESPONSABILIDAD:NO SOY RESPONSABLE DE LAS ACCIONES O CONSECUENCIAS CON RESPECTO A ESTE TUTORIAL.Usar sólo en interiore
Construir un tablero de conductor del LED para Arduino (y otros diputados) utilizando cuatro H-puentes

Construir un tablero de conductor del LED para Arduino (y otros diputados) utilizando cuatro H-puentes

salidas digitales del Arduino pueden bombear sobre 40 mA de corriente de cada uno.  Esto está lejos de lo suficiente para la mayoría de las aplicaciones iluminación o motor, por lo que el uso de un escudo de controlador relé impreso o motor son neces
Multicolor de Knight Rider con RGB LED PL9823 + Arduino UNO

Multicolor de Knight Rider con RGB LED PL9823 + Arduino UNO

Si conoces el famoso LED WS1012 no ignore este tutorial.El PL9823 que utilizan el mismo protocolo de la WS1012 led led el más barato. Puede usar esto para hacer un ledstrip o también una matriz de led. PIX (http://www.0lab.it/portfolio/pix-rgb-led-ma
Bajo responsiva RGB Leds utilizando Arduino

Bajo responsiva RGB Leds utilizando Arduino

Este tutoiral le mostrará cómo usar Arduino y a un conjunto de leds utilizando música del ordenador de control. Este tutorial requiere:-Arduino (utilicé un leonardo)-pequeña protoboard con los cables de puente (kit es la mejor oferta)-rgb led tira (u
Una guía completa de puentes a bordo en el kit del Intel Edison para Arduino

Una guía completa de puentes a bordo en el kit del Intel Edison para Arduino

Kit Intel® Edison para Arduino permite el Edison de Intel® compatible con Arduino shields diseñados para el R3 del UNO. La Junta de expansión de Arduino incluye varias cabeceras de jumper para configurar el tablero con diferentes ajustes como niveles
Transición del RGB LED (Arduino)

Transición del RGB LED (Arduino)

Hola chicos, en este instructable le daré un código de transtioning un LED. Mi grupo, los laboratorios Newton, ha pasado muy poco tiempo en esto. La transición no es tan fácil como parece para una transición suave agradable.Enviado por Newton Labs pa
Bombilla LED para Arduino

Bombilla LED para Arduino

¡ Hola! En este Instructable, mostrará usted cómo crear una bombilla de LED que se puede conectar un Arduino, o una batería. Puedes incorporar en tus proyectos ya existentes.Se necesita:Una pajaAlgunos cablesUn LEDUna vieja bombillaPaso 1: Hacia fuer
Controlado por Arduino RGB LED Infinity Mirror

Controlado por Arduino RGB LED Infinity Mirror

Actualización 22/11/2013: gracias a todos los que votaron por este proyecto en el concurso de microcontrolador! Fue uno de los tres ganadores del primer premio.Actualización 17/09/2013: gracias a todos los que votaron por este proyecto en el concurso
RGB LCD Shield para Arduino 65K color KIT V2 Asamblea guía

RGB LCD Shield para Arduino 65K color KIT V2 Asamblea guía

protector de la pantalla RGB para Arduino 65K color KIT incluye todos los componentes para armar una lista para usar protector de pantalla LCD para Arduino y placas compatibles como Freeduino.(visita http://store.nkcelectronics.com/rgb-lcd-shield-for