Малаток-меню
Авторизация

Наш опрос
Какие языки программирования вы используете?

Всего ответов: 10
Мини-чат
200
Статистика


Наш линк
Malatok.at.ua
Полезные ссылки
Это может быть интересно
[
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Викр, Дмытрохан  
Arduino uno и резистивный сенсор
Дмытрохан Дата: Вторник, 22.10.2013, 23:23 | Сообщение # 1
Создатель сайта
Группа: Администраторы
Сообщений: 178
Награды: 7
Репутация: 103
Статус: Офлайн
Привет, нашел немного времени для создания такого топика. Скажу честно, что тема заезженна и жевать по конкретному я ее не буду.
И так, у нас есть резистивный сенсор от китайского телефона и нам нужно подключить его к ардуино.
Что мы делаем:
Изучаем строение сенсора.



Он состоит грубо говоря из "двух резисторов" не имеющими между собой "никакого отношения"(пока не идет физическое воздействие на сенсор), у китайцев они порядком 400-800 Ом...
Но когда вы нажмете на него то увидите, что он немного прогибается под предметом, что на него давит. Именно тогда верхний защищающий слой (резистивная пленка) касается к твердой стеклянной, пластиковой подложке(на нее тоже нанесена резистивная поверхность). Не буду вникать этого полно в инете.
Что нужно нам, то это знать, что эти "два резистора" не совсем не имеют между собой "никакого отношения",отношение хорошо дает знать про себя при большой частоте опроса сенсора. Именно тогда эти две резистивные пластины становятся, черт его возьми, конденсатором! Поэтому скорость опроса резистивного сенсора не совсем радует...
Можно приступать к Ардуино.

Код
int a,b;
void GetXY( int*,int*) ;         // прототип функции, что возвращает значения х и у

void setup() { Serial.begin(9600); }

void loop() {

GetXY(&a,&b);

   Serial.print("X =");
   Serial.println(b);

   Serial.print("Y =");
   Serial.println(a);
   delay(100);       }

void GetXY( int *ypos,int *xpos)
{ pinMode(15, OUTPUT);  //A1  верхний "Резистор" начало
   pinMode(17, OUTPUT);  //A3 верхний "Резистор" конец
   pinMode(14, OUTPUT);  //A0 нижний "Резистор" конец
   pinMode(16, OUTPUT);  //A2 нижний "Резистор" начало
    digitalWrite(14, LOW );    
    digitalWrite(15, LOW);   
    digitalWrite(16, HIGH );  
    digitalWrite(17, LOW);  
   pinMode(15, INPUT);      
   pinMode(17, INPUT);

                      
    *ypos = analogRead(A1);  
//  delay(1);
    
   pinMode(15, OUTPUT);      
   pinMode(17, OUTPUT);
   pinMode(14, OUTPUT);  
   pinMode(16, OUTPUT);  
    digitalWrite(14, LOW );    
    digitalWrite(15, HIGH);   
    digitalWrite(16, LOW );  
    digitalWrite(17, LOW);  
   pinMode(14, INPUT);      
   pinMode(16, INPUT);

                      
    *xpos = analogRead(A2);     
//  delay(1);
     
    
   pinMode(15, OUTPUT);      
   pinMode(17, OUTPUT);
   pinMode(14, OUTPUT);  
   pinMode(16, OUTPUT);  
    digitalWrite(14, LOW );    
    digitalWrite(15, LOW );   
    digitalWrite(16, LOW );  
    digitalWrite(17, LOW );  

}

Такой вот вышел код. Все просто сначала конфигурируем пины Ардуино  на выход.
Нижний резистор запитан (начало +,конец 0).
Нижний на 0. Таким образом "снимаем" паразиточный ток между площадками
GetXY(&a,&b); - возвращает значения текущей позиции нажатия.
В ваших проектах рабочие значения рекомендовано брать от 120 до 980.
Вообщем дерзайте, удачи вам)))
Прикрепления: 8619635.png (197.2 Kb) · 4566906.jpg (31.9 Kb)


Нет человека-которого нельзя научить...
Есть человек-который не хочет учиться!!!
 
  • Страница 1 из 1
  • 1
Поиск:
Новый ответ
Имя:
Текст сообщения:
Опции сообщения:
Код безопасности:
Яндекс.Метрика
24 log 24 LOG statistick
счетчик посещений
Если вы видите это,
то ваш браузер устарел
и не поддерживает технологий
CSS 3.0