Touch Screen Overlay med Arduino
Koden nedan är utformad att fungera med RBG led's. Eftersom det ger utmärkt samordna avläsningar och är mycket lätt att ställa in, kan det användas för mycket mer än bara lysdioder. Koden här emellertid är utformad att använda X-axeln för att styra nyans och Y-axeln att styra ljusstyrkan för ledde så småningom är placerad under Johans motorcykel.
När du arbetar med dessa pekskärmar som det visade sig snabbt att de inte är samma. Varje beröring skärm ger ut olika högsta och lägsta värden för både X- och Y-axeln så vissa justeringar för att koden behövs för kalibrering. Några har även vänt X och Y behandlingen som kan fästas i koden, eller helt enkelt genom att vrida din pekskärm.
Vad behövs för att justera de tryckkänsliga skärmarna?
-Hitta din minsta/högsta värdena för X och Y. (använda xPos / yPos)
-Beräkna ditt utbud
och det är i princip det!
Nintendo DS pekskärm:
http://www.Amazon.com/eForCity-touch-screen-Nintendo-DS-lite/DP/B0010LXJYC
https://www.Sparkfun.com/products/8977
Touch skärmen Breakout
https://www.Sparkfun.com/products/9170
<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>
/*
* Skapade av: Johan Verma & Cory Malantonio
* Kushy04
* cgmalantonio
*
* Y - analoga 0
* X + analog 1
* Y + analog 2
* X - analog 3
*
*/
int xVal = 0;
int yVal = 0;
int touchX;
int lättstött;
int xPos;
int yPos;
int redPin = 11;
int greenPin = 9;
int bluePin = 10;
int rL = 0;
int bL = 0;
int gL = 0;
void setup()
{
pinMode (redPin, produktionen);
pinMode (bluePin, produktionen);
pinMode (greenPin, produktionen);
Serial.BEGIN(38400);
}
void loop()
{
Ställ in analoga stiften i förberedelse för läsning av värdet för Y
pinMode (A1, indata); Analog pinne 1
pinMode (A3, indata); Analoga stift 3
pinMode (A0, OUTPUT); Analoga pin 0
digitalWrite (A0, låg); Analoga pin 0 som GND anslutning
pinMode (A2, OUTPUT); Analoga stift 2
digitalWrite (A2, hög); Analoga stift 2 som + 5V anslutning
yVal = analogRead (1). Läs Y-värde
Ställ in analoga stiften i förberedelse för läsning av värdet för Y
från pekskärmen
pinMode (A0, indata); Analoga pin 0
pinMode (A2, indata); Analoga stift 2
pinMode (A1, utgång); Analog pinne 1
digitalWrite (A1, låg); Analog pinne 1 som GND anslutning
pinMode (A3, OUTPUT); Analoga stift 3
digitalWrite (A3, hög); Analoga stift 3 som + 5V anslutning
xVal = analogRead (0); Läs x-värde
När touchscreen inte trycks vilar på vissa koordinater
Detta gör att koordinaterna i vila inte få beräknas
touchX = xVal;
om (touchX > 20 & & touchX < 900) {
Här är där du behöver din minst X värde och utbud av X
(touchX, minsta x, antal x, konverterar till 0-1024)
xPos = karta (touchX, 108.0, 899.0, 0, 1024);
xPos = begränsa (xPos, 0, 1024);
}
lättstött = yVal;
om (lättstött > 20 & & lättstött < 900) {
Här är där du behöver din minsta Y värde och utbud av Y
(lättstött, lägsta y, utbud av y, konverterar till 0-1024)
yPos = karta (lättstött, 145.0, 892.0, 0, 1024);
yPos = begränsa (yPos, 0, 1024);
}
float ljusstyrka;
ljusstyrka = int (yPos) / 1024.0;
denna härliga bit omvandlar 0-1024, till tre 255 värden
int värde = int (xPos);
flyta RGBslider = (float) värde/1024.0;
flyta redLevel = 128.0 * (2 * cos (2 * PI * (RGBslider + 0,125)));
flyta greenLevel = 128.0 * (2 * cos (2 * PI * (RGBslider + 0.375)));
flyta blueLevel = 128.0 * (2 * cos (PI * RGBslider));
gör att värden av färg påverkas av värde för ljusstyrka
redLevel = redLevel * (ljusstyrka);
greenLevel = greenLevel * (ljusstyrka);
blueLevel = blueLevel * (ljusstyrka);
/*
om (redLevel > 255) redLevel = 255;
om (redLevel < 0) redLevel = 0;
om (greenLevel > 255) greenLevel = 255;
om (greenLevel < 0) greenLevel = 0;
om (blueLevel > 255) blueLevel = 255;
om (blueLevel < 0) blueLevel = 0;
*/
gör samma sak som avsnitt kommenteras ut ovanför
redLevel = begränsa (redLevel, 0, 255);
greenLevel = begränsa (greenLevel, 0, 255);
blueLevel = begränsa (blueLevel, 0, 255);
RGB led är att vara används arbete bakåt
0 = på || 255 = av
Detta vänder normalvärden
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);
}