Страница 1 из 6 123456 ПоследняяПоследняя
Показано с 1 по 10 из 58
  1. #1
    Пользователь
    Регистрация
    21.10.2009
    Возраст
    39
    Сообщений
    44
    Вес репутации
    193

    Вопрос TouchScreen контроллер на Arduino.

    Добрый день.
    Есть идея сделать контроллер для тач скрина из arduino (примерно так ).


    Хочется просто получать координаты точки нажатия на панель.

    Буду признателен за любую помощь или совет по реализации.
    Интересует принципиальная схема подключения и алгоритм считывания координат.
    Последний раз редактировалось Chip; 19.03.2017 в 02:33.

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,380
    Вес репутации
    10

    По умолчанию Re: Arduino и тач скрин

    Немного теории.
    Когда на сенсорный экран нажимают, панель и мембрана замыкаются, и контроллер с помощью аналогово-цифрового преобразователя делает изменение сопротивления и преобразует его в координаты X и Y. Алгоритм считывания таков:

    На верхний электрод подаётся логический уровень +5В, нижний подтягивается к земле. Левый с правым соединяются накоротко и проверяется напряжение на них. Это напряжение соответствует Y-координате экрана.
    Аналогично на левый и правый электрод подаётся логический уровень +5В и «земля», а с верхнего и нижнего считывается X-координата.
    Нажмите на изображение для увеличения. 

Название:	touch_screen.png 
Просмотров:	1467 
Размер:	197.2 Кб 
ID:	8214
    Последний раз редактировалось Chip; 01.04.2010 в 21:00.

  3. #3
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,380
    Вес репутации
    10

    По умолчанию Re: Arduino и тач скрин

    Нажмите на изображение для увеличения. 

Название:	CARDUINO_touch.png 
Просмотров:	2307 
Размер:	6.9 Кб 
ID:	8227

    Написал драйвер для ПК , тачь отлично работает в Windows 7 и XP , не забудте при первом запуске откалибровать .

    Sketch для Arduino работающий с выложенным драйвером

    PHP код:
    #define x1 14   
    #define y1 15  
    #define x2 16   
    #define y2 17  
    int oldXoldYxy;  
    byte bytes[4]; 

    void setup()   
    {   
      
    Serial.begin(115200);   
    }   
        
    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( 20 && 20 )  
       {   
            
    bytes[0] = 255;          // преобразовать x в 2-байта    
            
    bytes[1] = (768) >> 8;   
            
    bytes[2] = 255;          // преобразовать y в 2-байта    
            
    bytes[3] = (768) >> 8;          
          
    Serial.writebytes,4);  
            
    oldX=x;  
            
    oldY=y;   
       }  

    Sketch для Arduino / Carduinio работающий с serial monitor
    PHP код:
    #define x1 14 
    #define y1 15
    #define x2 16 
    #define y2 17
    int oldXoldYxy;

    void setup() 

      
    Serial.begin(115200); 

      
    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( 20 && 20 )
       {
        
    Serial.print(x,DEC);    
        
    Serial.print(",");      
        
    Serial.println(y,DEC); 
        
    oldX=x;
        
    oldY=y;
       }



    Тест работы Ардуино с тачь скрином можно посмотреть на видео.
    Под рукой была Touch панель 10" , пришлось ее использовать для опытов
    Вложения Вложения
    Последний раз редактировалось Chip; 20.03.2017 в 02:38.

  4. #4
    Пользователь
    Регистрация
    21.10.2009
    Возраст
    39
    Сообщений
    44
    Вес репутации
    193

    По умолчанию Re: Arduino и Touch Screen

    Эдуард, огромное спасибо за оперативный и развернутый ответ!
    Все работает отлично

  5. #5
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,380
    Вес репутации
    10

    По умолчанию Re: TouchScreen контроллер на Arduino.

    Подправил схему, код и выложил свое видео , теперь можно использовать вместо контроллера тачь панели , быстродействия хватает, мышка бегает как настоящая Осталось реализовать нажатие правой кнопки и калибровку
    Последний раз редактировалось Chip; 05.04.2010 в 12:07.

  6. #6
    Пользователь
    Регистрация
    21.10.2009
    Возраст
    39
    Сообщений
    44
    Вес репутации
    193

    По умолчанию Re: TouchScreen контроллер на Arduino.

    Здорово а чем была плоха схема с 4 резисторами по 10К? Я принципиальной разницы не заметил...

  7. #7
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,380
    Вес репутации
    10

    По умолчанию Re: TouchScreen контроллер на Arduino.

    С двумя резисторами проще и линейность лучше

  8. #8
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,380
    Вес репутации
    10

    По умолчанию Re: TouchScreen контроллер на Arduino.

    Написал драйвер Тача, теперь все отлично работает как настоящий Touch Screen. После калибровки требуется перезапуск.
    Последний раз редактировалось Chip; 06.04.2010 в 11:04.

  9. #9
    Продвинутый Аватар для xDriver
    Регистрация
    26.03.2008
    Сообщений
    268
    Вес репутации
    302

    По умолчанию Re: TouchScreen контроллер на Arduino.

    Ну Эдик, ты даешь !
    Так скоро блок питания на Arduino появится
    Молодец.
    ECS H67H2-I Intel® Core™ i3-2130, RAM 4гб, SSD 160 гб, моник XD, БП M4-ATX, BU-353, Yota, SkyLink, WiFi и т.д.

  10. #10
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,380
    Вес репутации
    10

    По умолчанию Re: TouchScreen контроллер на Arduino.

    Я делал на нем ШИМ стабилизатор с обратной связью , но есть опасение что при неконтролируемых моментах(сброс) может полностью открытся ключь и тогда не стабиллизирование питание будет на выходе.

Страница 1 из 6 123456 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •