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]);
}
}
}







Bir yanıt yazın