Hey!
I'm trying to hook up my nintendo ds capacitive touchscreen in order to use it for sending midi.
I hooked it up following these instructions:
http://bildr.org/2011/06/ds-touch-screen-arduino/
I'm getting perfect values for the x-value, but I'm struggling with the y-value:
I'm reading correct values as long as my finger is touching the pad, but as soon as I'm lifting my finger the y-value immediately jumps back to it's maximum output.
here's the code I'm using:
const int channel = 1;
int Y1 = A5;
int X2 = A6;
int Y2 = A7;
int X1 = A8;
int TouchX;
int OldTouchXVal = 0;
int NewTouchXVal = 0;
int MappedTouchXVal = 0;
int NewMappedTouchXVal = 0;
int TouchY;
int OldTouchYVal = 0;
int NewTouchYVal = 0;
int MappedTouchYVal = 0;
int NewMappedTouchYVal = 0;
const int TouchXThreshold = 2;
const int TouchYThreshold = 2;
void setup()
{
Serial.begin(9600);
}
int readXValue()
{
pinMode(Y1, INPUT);
pinMode(X2, OUTPUT);
pinMode(Y2, INPUT);
pinMode(X1, OUTPUT);
digitalWrite(X2, LOW);
digitalWrite(X1, HIGH);
delay(5); //pause to allow lines to power up
return analogRead(Y1);
}
int readYValue()
{
pinMode(Y1, OUTPUT);
pinMode(X2, INPUT);
pinMode(Y2, OUTPUT);
pinMode(X1, INPUT);
digitalWrite(Y1, LOW);
digitalWrite(Y2, HIGH);
delay(5); //pause to allow lines to power up
return analogRead(X2);
}
void loop()
{
int TouchX = readXValue();
int TouchY = readYValue();
TouchX = abs(TouchX-800);
TouchX = TouchX-100;
TouchY = TouchY-130;
int MappedTouchXVal = map(TouchX, 0, 600, 0, 127);
int MappedTouchYVal = map(TouchY, 0, 850 , 0, 127);
NewTouchXVal = TouchX;
if (abs(NewTouchXVal - OldTouchXVal) >= TouchXThreshold)
{
MappedTouchXVal = map(TouchX, 0, 600, 0, 127);
if (abs(MappedTouchXVal - NewMappedTouchXVal) >= 1)
{
usbMIDI.sendControlChange(9, MappedTouchXVal, channel);
Serial.println("TouchX:");
Serial.println(MappedTouchXVal);
delay(50);
}
OldTouchXVal = NewTouchXVal;
NewMappedTouchXVal = MappedTouchXVal;
}
NewTouchYVal = TouchY;
if (abs(NewTouchYVal - OldTouchYVal) >= TouchYThreshold)
{
MappedTouchYVal = map(TouchY, 0, 850, 0, 127);
if (abs(MappedTouchYVal - NewMappedTouchYVal) >= 1)
{
usbMIDI.sendControlChange(10, MappedTouchYVal, channel);
Serial.println("TouchY");
Serial.println(MappedTouchYVal);
delay(50);
}
OldTouchYVal = NewTouchYVal;
NewMappedTouchYVal = MappedTouchYVal;
}
}
Yes, I'm new at this ![]()
Thanks for your help!