Yeni başlayanlar ve kendini geliştirmek isteyenler

TTP224 4 Kanal Dokunmatik Sensör Kullanımı

TTP224 4 Kanal Dokunmatik Sensör Kullanımı

Gerekli Parçalar

  • Arduino™ Uno
  • 1x 6 kanal Dişi – Erkek Jumper Kablo
  • 1 x 4 kanal Dişi – Dişi  Jumper Kablo
  • 1 x 1 kanal Dişi – Dişi Jumper Kablo
  • 4 x LED (Mavi, Yeşil, Sarı, Kırmızı)
  • 1x BreadBoard (Orta veya tam boy)
  • TTP224 4-Kanal Dokunmatik SensörModülü

Açıklama

Projede öncelikli olarak dikkat edilmesi gereken konu, besleme voltajı ve bağlantıları(Vcc/Gnd). TTP224 4-Kanal Dokunmatik SensörModülü 3.3 volt ile çalışmaktadır. Daha yüksek voltaj değerleri modüle zarar verebilir. Modülün kod bölümü, her kanal için yak/söndür işlemini gerçekleştirebilecek şeklinde tasarlanmıştır. Kolay gelsin..

//Pin eşleşmeleri
//  Arudino   Touch Sensor
//  +3.3V --> Vcc
//  Gnd   --> Gnd
//  5     --> Out1
//  4     --> Out2
//  3     --> Out3
//  2     --> Out4    

// Buton sayısı tanımlanıyor
const int touchButtonCount = 4;

// Sensör pinleri tanımlanıyor
const int sPinArray[touchButtonCount] = {2,3,4,5};
const int sPinArraySize = sizeof(sPinArray)/sizeof(sPinArray[0]);

// Led pinleri tanımlanıyor
const int lPinArray[touchButtonCount] = {9,10,11,12};
const int lPinArraySize = sizeof(lPinArray)/sizeof(lPinArray[0]);

// Ledler sönük olacak şekilde tanımlanıyor
int ledStateArray[touchButtonCount] = {LOW, LOW, LOW, LOW};
const int ledStateArraySize = sizeof(ledStateArray)/sizeof(ledStateArray[0]);

// Butonların sondan bir önceki basıldı/basılmadı bilsi
int lastTouchStateArray[touchButtonCount] = {0, 0, 0, 0};
const int lastTouchStateArraySize = sizeof(lastTouchStateArray)/sizeof(lastTouchStateArray[0]);

// Butonların son basıldı/basılmadı bilgisi
int currentTouchStateArray[touchButtonCount] = {0, 0, 0, 0};
const int currentTouchStateArraySize = sizeof(currentTouchStateArray)/sizeof(currentTouchStateArray[0]);

// Arduino ve dokunmatik sensör bağlantısında pinlerin hangi modda çalışacağı bilgisi
void setsPinMode(){
  for (int i=sPinArray[0];i<sPinArraySize;i++){
    pinMode(sPinArray[i], INPUT);
  }
}

// Arduino ve led bağlantısında pinlerin hangi modda çalışacağı bilgisi
void setlPinMode(){
  for(int i=lPinArray[0];i<lPinArraySize;i++){
    pinMode(lPinArray[i], OUTPUT);
  }
}

// Arduino ve dokunmatik sensör bağlantısında dijital pinlerin son durumu (0/1) alınıyor
void getCurrentTouchState(){
  for(int i=0;i<currentTouchStateArraySize;i++){
      currentTouchStateArray[i] = digitalRead(sPinArray[i]);
  }
}

void setup() {
  // Seri bağlantı başlatılıyor
  Serial.begin(9600);

  setsPinMode();
  setlPinMode();
  getCurrentTouchState();

}

void loop() {
  // Sensörün bir önceki durumu alınıyor
  for(int i=0;i<lastTouchStateArraySize;i++){
    lastTouchStateArray[i] = currentTouchStateArray[i];
  }
  // Sensörün şu anki durumu alınıyor
  for(int i=0;i<currentTouchStateArraySize;i++){
    currentTouchStateArray[i] = digitalRead(sPinArray[i]);
  }

  // Sensörün bir önceki buton değeri 0 yeni değeri 1 ise led yakılıyor
  for(int i=0;i<lastTouchStateArraySize;i++){
    if((lastTouchStateArray[i] == LOW ) && (currentTouchStateArray[i] == HIGH)){
     ledStateArray[i] = !ledStateArray[i];
     digitalWrite(lPinArray[i], ledStateArray[i]);
    }
  }
}
İsmail Atilla Biçmen avatarı

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir