Немного теории.
Когда на сенсорный экран нажимают, панель и мембрана замыкаются, и контроллер с помощью аналогово-цифрового преобразователя делает изменение сопротивления и преобразует его в координаты X и Y. Алгоритм считывания таков:
На верхний электрод подаётся логический уровень +5В, нижний подтягивается к земле. Левый с правым соединяются накоротко и проверяется напряжение на них. Это напряжение соответствует Y-координате экрана.
Аналогично на левый и правый электрод подаётся логический уровень +5В и «земля», а с верхнего и нижнего считывается X-координата.
Последний раз редактировалось Chip; 01.04.2010 в 21:00.
void loop() { pinMode(x1,OUTPUT); pinMode(x2,OUTPUT); digitalWrite(x1,LOW); digitalWrite(x2,HIGH); //подключаем к пластине Х напряжение +5в и GND digitalWrite(y1,LOW); digitalWrite(y2,LOW); //разряжаем емкость pinMode(y1,INPUT); pinMode(y2,INPUT); delay(10); x=analogRead(3); //считываем значение с пластины Х
pinMode(y1,OUTPUT); pinMode(y2,OUTPUT); digitalWrite(y1,LOW); digitalWrite(y2,HIGH); //подключаем к пластине У напряжение +5в и GND digitalWrite(x1,LOW); digitalWrite(x2,LOW); //разряжаем емкость pinMode(x1,INPUT); pinMode(x2,INPUT); delay(10); y=analogRead(0); //считываем значение с пластины У
if( x > 20 && y > 20 ) { bytes[0] = x & 255; // преобразовать x в 2-байта bytes[1] = (x & 768) >> 8; bytes[2] = y & 255; // преобразовать y в 2-байта bytes[3] = (y & 768) >> 8; Serial.write( bytes,4); oldX=x; oldY=y; } }
void loop() { pinMode(x1,OUTPUT); pinMode(x2,OUTPUT); digitalWrite(x1,LOW); digitalWrite(x2,HIGH); //подключаем к пластине Х напряжение +5в и GND digitalWrite(y1,LOW); digitalWrite(y2,LOW); //разряжаем емкость pinMode(y1,INPUT); pinMode(y2,INPUT); delay(10); x=analogRead(3); //считываем значение с пластины Х
pinMode(y1,OUTPUT); pinMode(y2,OUTPUT); digitalWrite(y1,LOW); digitalWrite(y2,HIGH); //подключаем к пластине У напряжение +5в и GND digitalWrite(x1,LOW); digitalWrite(x2,LOW); //разряжаем емкость pinMode(x1,INPUT); pinMode(x2,INPUT); delay(10); y=analogRead(0); //считываем значение с пластины У
if( x > 20 && y > 20 ) { Serial.print(x,DEC); Serial.print(","); Serial.println(y,DEC); oldX=x; oldY=y; } }
Тест работы Ардуино с тачь скрином можно посмотреть на видео.
Под рукой была Touch панель 10" , пришлось ее использовать для опытов
Последний раз редактировалось Chip; 20.03.2017 в 02:38.
Подправил схему, код и выложил свое видео , теперь можно использовать вместо контроллера тачь панели , быстродействия хватает, мышка бегает как настоящая Осталось реализовать нажатие правой кнопки и калибровку
Последний раз редактировалось Chip; 05.04.2010 в 12:07.
Я делал на нем ШИМ стабилизатор с обратной связью , но есть опасение что при неконтролируемых моментах(сброс) может полностью открытся ключь и тогда не стабиллизирование питание будет на выходе.