El código siguiente está diseñado para trabajar con RBG de led. Puesto que da lecturas de coordenadas excelentes y es muy fácil de configurar, puede ser utilizado para mucho más que sólo led. El código de aquí sin embargo está diseñado para utilizar el eje X para controlar el color, el eje Y para controlar el brillo para led de finalmente colocado debajo de motocicleta de Ankush.
Cuando se trabaja con estas pantallas táctiles se hizo evidente rápidamente que no son las mismas. Cada pantalla táctil reparte diferentes lecturas máximas y mínimas para el eje X e Y así algunos afinando el código es necesario para propósitos de calibración. Algunos incluso han revertido las lecturas X e Y que pueden ser fijadas en el código, o simplemente girando la pantalla táctil.
¿Qué es necesario para ajustar las pantallas táctiles?
-Encontrar sus valores mínimo/máximo de X e Y. (utiliza xPos / yPos)
-Calcular el rango
y eso básicamente es todo!
Pantalla táctil de Nintendo DS:
http://www.Amazon.com/EFORCITY-Touch-Screen-Nintendo-DS-Lite/DP/B0010LXJYC
https://www.Sparkfun.com/products/8977
Touch pantalla desbloqueo
https://www.Sparkfun.com/products/9170
<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>
/*
* Creado por: Ankush Verma & Cory Malantonio
* Kushy04
* cgmalantonio
*
* Y - 0 analógico
* X + 1 analógica
* Y + 2 analógicas
* X - 3 analógico
*
*/
xVal int = 0;
yVal int = 0;
int touchX;
int susceptible;
int xPos;
int yPos;
redPin int = 11;
int greenPin = 9;
bluePin int = 10;
rL int = 0;
bL int = 0;
gL de int = 0;
void setup()
{
pinMode (redPin, salida);
pinMode (bluePin, salida);
pinMode (greenPin, salida);
Serial.Begin(38400);
}
void loop()
{
Configurar los pines analógicos en preparación para la lectura del valor de Y
pinMode (A1, entrada); Pin analógico 1
pinMode (A3, entrada); Pin analógico 3
pinMode (A0, salida); Pin analógico 0
digitalWrite (A0, LOW); Pin analógico 0 como conexión de GND
pinMode (A2, salida); Pin analógico 2
digitalWrite (A2, alto); Pin analógico 2 como + 5V conexión
yVal = analogRead (1); Leer el valor de Y
Configurar los pines analógicos en preparación para la lectura del valor de Y
desde la pantalla táctil
pinMode (A0, entrada); Pin analógico 0
pinMode (A2, entrada); Pin analógico 2
pinMode (A1, salida); Pin analógico 1
digitalWrite (A1, LOW); Pin analógico 1 como conexión de GND
pinMode (A3, salida); Pin analógico 3
digitalWrite (A3, alta); Pin analógico 3 como + 5V conexión
xVal = analogRead (0); Leer el valor de x
cuando no se presiona la pantalla táctil se basa en ciertas coordenadas
Esto hace que no Haz calculadas las coordenadas en reposo
touchX = xVal;
Si (touchX > 20 & & touchX < 900) {}
Aquí es donde usted necesita su mínimo valor y rango de X
(touchX mínimo x, rango de x, se convierte en 0-1024)
xPos = mapa (touchX, 108.0, 899.0, 0, 1024);
xPos = restringir (xPos, 0, 1024);
}
Susceptible = yVal;
Si (epidérmica > 20 & & susceptible < 900) {}
Aquí es donde usted necesita su valor Y mínimo y rango de Y
(y susceptible, mínimo, rango de y, se convierte en 0-1024)
yPos = mapa (susceptible, 145.0, 892.0, 0, 1024);
yPos = restringir (yPos, 0, 1024);
}
brillo de flotador;
brillo = int (yPos) / 1024.0;
Este hermoso pedacito convierte el 0 al 1024, en tres 255 valores
int valor = int (xPos);
Float RGBslider = (float) valor/1024.0;
flotador de redLevel = 128.0 * (2 * cos (2 * PI * (RGBslider + 0.125)));
Float greenLevel = 128.0 * (2 * cos (2 * PI * (RGBslider + 0,375)));
flotador de blueLevel = 128.0 * (2 * cos (PI * RGBslider));
permite valores de color se ve afectada por el valor de brillo
redLevel = redLevel * (brillo);
greenLevel = greenLevel * (brillo);
blueLevel = blueLevel * (brillo);
/*
Si redLevel (redLevel > 255) = 255;
Si redLevel (redLevel < 0) = 0;
Si greenLevel (greenLevel > 255) = 255;
Si greenLevel (greenLevel < 0) = 0;
Si blueLevel (blueLevel > 255) = 255;
Si blueLevel (blueLevel < 0) = 0;
*/
hace lo mismo como sección comentada anteriormente
redLevel = restringir (redLevel, 0, 255);
greenLevel = restringir (greenLevel, 0, 255);
blueLevel = restringir (blueLevel, 0, 255);
RGB led de ser utilizado el trabajo hacia atrás
0 = en || 255 = off
Esto revierte a valores normales
rL = 255 - int(redLevel);
bL = 255 - int(blueLevel);
gL = 255 - int(greenLevel);
analogWrite (redPin, rL);
analogWrite (greenPin, gL);
analogWrite (bluePin, bL);
Serial.Print(Brightness);
Serial.Print(":");
Serial.Print(RL);
Serial.Print(".");
Serial.Print(GL);
Serial.Print(".");
Serial.println(BL);
Serial.Print(xPos);
Serial.println(yPos);
Delay(10);
}