Le code ci-dessous est conçu pour fonctionner avec les jardins botaniques royaux de conduit. Car il donne d’excellentes lectures coordonnées et est très facile à mettre en place, il peut être utilisé pour beaucoup plus que juste led. Le code ici, cependant, est conçu pour utiliser l’axe des X pour contrôler la teinte et l’axe des Y pour contrôler la luminosité pour conduit de finalement sous la moto de David.
Lorsque vous travaillez avec ces écrans tactiles, il est apparu rapidement qu’ils ne sont pas les mêmes. Chaque écran tactile donne différentes lectures maximales et minimales pour l’axe des X et de Y donc quelques ajustements au code est nécessaire à des fins d’étalonnage. Certains ont même renversé les valeurs X et Y qui peuvent être fixés dans le code, ou tout simplement en faisant tourner votre écran tactile.
Whats besoin de tordre les écrans tactiles ?
-Trouver vos valeurs mini/maxi X et Y. (utilisez xPos / yPos)
-Calculer votre plage
et c’est essentiellement ça !
Écran tactile de Nintendo DS :
http://www.Amazon.com/eForCity-Touch-Screen-Nintendo-DS-Lite/DP/B0010LXJYC
https://www.Sparkfun.com/Products/8977
Touch Screen Breakout
https://www.Sparkfun.com/Products/9170
<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>
/*
* Créé par : Ankush Verma & Cory Malantonio
* Kushy04
* cgmalantonio
*
* Y - 0 analogique
* X + 1 analogique
* Y + 2 analogiques
* X - 3 analogiques
*
*/
xVal int = 0 ;
yVal int = 0 ;
int touchX ;
int délicat ;
xPos int ;
yPos int ;
int redPin = 11 ;
int greenPin = 9 ;
bluePin int = 10 ;
rL int = 0 ;
bL int = 0 ;
gL int = 0 ;
void setup()
{
pinMode (redPin, sortie) ;
pinMode (bluePin, sortie) ;
pinMode (greenPin, sortie) ;
Serial.Begin(38400) ;
}
void loop()
{
Mettre en place les broches analogiques en préparation à la lecture de la valeur de Y
pinMode (entrée, A1) ; Broche analogique 1
pinMode (entrée, A3) ; Broche analogique 3
pinMode (A0, sortie) ; Broche analogique 0
digitalWrite (A0, faible) ; Broche analogique 0 comme connexion GND
pinMode (A2, sortie) ; Broche analogique 2
digitalWrite (A2, élevé) ; Broche analogique 2 sous + 5V connexion
yVal = analogRead (1) ; Lire la valeur de Y
Mettre en place les broches analogiques en préparation à la lecture de la valeur de Y
de l’écran tactile
pinMode (entrée, A0) ; Broche analogique 0
pinMode (entrée, A2) ; Broche analogique 2
pinMode (A1, sortie) ; Broche analogique 1
digitalWrite (A1, faible) ; Broche analogique 1 connexion GND
pinMode (A3, sortie) ; Broche analogique 3
digitalWrite (A3, élevé) ; Broche analogique 3 sous + 5V connexion
xVal = analogRead (0) ; Lire la valeur de x
Lorsque l’écran tactile n’est pas pressé, il repose à certaines coordonnées
Cela permet de s’assurer que les coordonnées au repos ne se calcule
touchX = xVal ;
Si (touchX > 20 & & touchX < 900) {}
Voici où vous avez besoin de votre minimum X valeur et gamme de X
(touchX, minimale x, gamme de x, se transforme en 0-1024)
PosX = carte (touchX, 108, 0, 0, 899.0, 1024) ;
PosX = contraindre (xPos, 0, 1024) ;
}
Délicat = yVal ;
Si (délicat > 20 & & délicat < 900) {}
Voici où vous devez votre valeur minimale de Y et la gamme de Y
(y ombrageux, minimal, gamme de y, convertit en 0-1024)
yPos = carte (délicat, 145,0 892,0, 0, 1024) ;
yPos = contraindre (Posy, 0, 1024) ;
}
flotteur de luminosité ;
luminosité = int (yPos) / 1024.0 ;
Cet bel bit 0-1024, convertit de trois 255 valeurs
int valeur = int (xPos) ;
float RGBslider = (float) valeur/1024.0 ;
float redLevel = 128,0 * (2 * cos (2 * PI * (RGBslider + 0,125))) ;
float greenLevel = 128,0 * (2 * cos (2 * PI * (RGBslider + 0,375))) ;
float blueLevel = 128,0 * (2 * cos (PI * RGBslider)) ;
autorise les valeurs de couleur d’être affectée par la valeur de la luminosité
redLevel = redLevel * (luminosité) ;
greenLevel = greenLevel * (luminosité) ;
blueLevel = blueLevel * (luminosité) ;
/*
Si redLevel (redLevel > 255) = 255 ;
Si redLevel (redLevel < 0) = 0 ;
Si greenLevel (greenLevel > 255) = 255 ;
Si (greenLevel < 0) greenLevel = 0 ;
Si blueLevel (blueLevel > 255) = 255 ;
Si blueLevel (blueLevel < 0) = 0 ;
*/
fait la même chose comme section commentée ci-dessus
redLevel = contraindre (redLevel, 0, 255) ;
greenLevel = contraindre (greenLevel, 0, 255) ;
blueLevel = contraindre (blueLevel, 0, 255) ;
RGB led étant utilisé le travail vers l’arrière
0 = sur || 255 = off
il inverse les valeurs 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) ;
}