Fiat Linea Konsol Tuşu ile Cam İndirme ve Kaldırma
Merhaba arkadaşlar, Fiat linea aracımıza pasif olan konsol tuşu ile cam indirme ve kaldırma uygulaması yaptım. Si̇zleri̇nde bu uygulamayı yapabi̇lmesi̇ açısından bu makaleyi̇ hazırladım umarım si̇zler i̇çi̇n faydalı olur.
Öncelikle aracınıza orjinal tuşu kullanarak cam indirme ve kaldırma uygulamasını gerçekleştirebilmeniz için Fiat Linea Arduino ile Cam Kaldırma ve İndirme Nasıl Yapılır ? isimli makalemizi okumuş ve araçlarınıza uygulamış olmanız gerekmektedir.
Öncelikle işlemimize sonradan takma veya orjinal araç teybinizi yerinden çıkartarak başlıyoruz.
Teybimizi söktükten sonra üst paneli alabilmeniz için teyp kasasını yukarıdaki görsel deki ok ile gösterilen vidaları sökerek çıkartınız.
Havalandırma ve konsol düğmelerine ait bölümü çıkartmak için yukarıdaki resimde ok ile gösterilen vidaları çıkartınız.
İlgili vidaları söktükten sonra konsol bolümünü yukardaki görseldeki gibi yukarı ve kendinize çekerek yerinden çıkartınız.
Yukardaki görseldeki gibi elektrik soketini sökmek için turuncu ile gösterilen tırnağa bastırarak kırmızı mandalı yeşil ok yönünde çekiniz.
Pcb devre içerisinde buton ve çıkış pinleri yukarıdaki görseldeki gibidir. Bagaj butonu bastığınızda 9 numaralı pinden GND (Şase) iletilmektedir. Cam kontrolü için seçtiğimiz butonların çalışma prensibi bagaj butonundan farklı olup adi anahtar görevi görmekte ve araç tesisatı ile alakası bulunmamaktadır. Elektrik bağlantı soketinde 11 numaralı pin buton giriş 18 numaralı pin buton çıkış olarak kullanabilirsiniz.
Aktif edeceğiniz cam kontrol butonunda kullanmak için yukarıda görselde daire içerisindeki 4 lü sinyal butonu altındaki 2 li slikon butonu kesebilir ve adet şeklinde kullanabilirsiniz.
Cam reziztansına ait tuşu ve aktif edeceğimiz tuşu arkasından tornavida yardımı ile çıkartıp İptal edilen butonumuzda basmayı engelleyen tırnakları maket bıçağı yardımı ile kesiniz.
Aktif edeceğiniz tuşun içi boş olduğundan yeni koyduğunuz lastik butonlara baskı yapması için çıkıntıya ihtiyacınız olacaktır ve bu işlemi sıcak silikon kürdan veya dal parçası yardımı ile yapabilirsiniz.
Eğer dişi pin temin edebilirseniz üstteki görseldeki gibi 11 ve 18 nolu boş olan pinlere giriş yapabilir ve kabloyu arduino cam modulüne iletebilirsiniz.
Dişi pin temin edemeyen arkadaşlar sizlerde görseldeki pcb devrenin 11 ve 18 nolu pinlerine kablo lehimleyip arduino cam modulüne iletebilirsiniz.
Buton aktif etme işlemi tamam ve cam modulümüze yeni kabloları ilettiyseniz eğer dağıttığınız buton ve konsolu toplayablirsiniz..
Herşey tamamsa yazılım ve uygulama kısmına geçebiliriz.
Kontak beslemesi için kullandığınız 7805 regülatörün +5v çıkışını veya arduino modülünüzün üzerinde mevcut bulunan +5v çıkışını kullanarak bu çıkıştan aldığımız kabloyu yeni aktif ettiğiniz butonun 11 nolu çıkışı ile irtibatlayalım ve aktif edilen butonun 18 nolu pin çıkış kablosunu arduino modülünüzün D13 numaralı digital pinine girmelisiniz.
Butonumuzun çalışma prensibi araç kontağı açıkken hatırlarsanız cam modulümüz pasif olup merkezi kilit ile otomatik cam kaldırma ve indirme işlemi yapmıyordu, şimdi ise araç kontağımız açıkken arduinomuzda buton aktif olacak ve modülümüz sadece buton yardımı ile cam indirme ve kaldırma yapacaktır. Butonumuzun bir ucunda bekleyen +5v butona basmamızla birlikte arduino D13 nolu digital pinimize iletilecek ve arduino butona basma süresi 1sn den az ise indirme, 1sn ve fazla ise kaldırma işlemi yapacaktır.
ARDUİNO YAZILIM KODLARIMIZ
ÇİFT KAPATMA TETİĞİ CAM KAPATIR – ÇİFT AÇMA TETİĞİ CAM AÇAR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
//--------------------------------------------------------------------- //--------------------------------------------------------------------- //---Son Güncelleme 13.06.2020 yazılım kaynaklı hatalar giderildi.----- //---Güvenlik nedeniyle tek kapı kapatma tetiği ile cam kapatma iptal edilmiş olup çift tetik olacak şekilde güncellenmiştir----- //---Gereksiz delay bekleme suresi kaldırıldı----- //--------------------------------------------------------------------- #define Cam1Up 9 // Cam 1 kaldırma digital pin. #define Cam1Down 2 // Cam 1 indirme digital pin. #define Cam2Up 8 // Cam 2 kaldırma digital pin. #define Cam2Down 3 // Cam 2 indirme digital pin. #define Cam3Up 7 // Cam 3 kaldırma digital pin. #define Cam3Down 4 // Cam 3 indirme digital pin. #define Cam4Up 6 // Cam 4 kaldırma digital pin. #define Cam4Down 5 // Cam 4 indirme digital pin. #define kontak 10 // Kontak koruma digital pin. #define unlocktetik 11 // Kapı açma tetik digital pin. #define locktetik 12 // Kapı kapatma tetik digital pin. #define ButtonAuto 13 // Tüm camlar için butondan gelen açma ve kapatma digital pin. int lt_durum; int ult_durum; int k_durum; int strdurum; int newstrdurum; int bt_durum; int sayac = 0; int locksayac = 0; int btsayac = 0; unsigned long lastTime = 0; unsigned long locklastTime = 0; unsigned long btlastTime = 0; long onTime = 10000; long stronTime = 2000; long strlockTime = 1000; long strUpDownTime = 4000; // Cam indirme ve kaldırma bekleme süresi void setup() { pinMode(Cam1Up, OUTPUT); pinMode(Cam2Up, OUTPUT); pinMode(Cam3Up, OUTPUT); pinMode(Cam4Up, OUTPUT); pinMode(Cam1Down, OUTPUT); pinMode(Cam2Down, OUTPUT); pinMode(Cam3Down, OUTPUT); pinMode(Cam4Down, OUTPUT); pinMode(kontak, INPUT); pinMode(locktetik, INPUT); pinMode(unlocktetik, INPUT); pinMode(ButtonAuto, INPUT); Serial.begin(9600); } void loop() { lt_durum = digitalRead(locktetik); ult_durum = digitalRead(unlocktetik); k_durum = digitalRead(kontak); bt_durum = digitalRead(ButtonAuto); Serial.print("Lock Tetik: "); Serial.println(lt_durum); Serial.print("Unlock Tetik: "); Serial.println(ult_durum); Serial.print("Kontak Durum: "); Serial.println(k_durum); Serial.print("Buton Durum: "); Serial.println(bt_durum); if (k_durum == HIGH && bt_durum == LOW){ newstrdurum = false; btsayac = 0; btlastTime = 0; } else if (k_durum == HIGH && bt_durum == HIGH){ newstrdurum = true; } else { newstrdurum = false; btsayac = 0; btlastTime = 0; } if (k_durum == HIGH && bt_durum == HIGH) while (digitalRead(ButtonAuto)); { if (btsayac == 0) { btlastTime = millis(); } btsayac++; } if (newstrdurum == true) { if (k_durum == HIGH && bt_durum == HIGH && (millis() - btlastTime) < 1000) { digitalWrite(Cam1Down, HIGH); digitalWrite(Cam2Down, HIGH); digitalWrite(Cam3Down, HIGH); digitalWrite(Cam4Down, HIGH); delay(strUpDownTime); digitalWrite(Cam1Down, LOW); digitalWrite(Cam2Down, LOW); digitalWrite(Cam3Down, LOW); digitalWrite(Cam4Down, LOW); btsayac = 0; btlastTime = millis(); } else if (bt_durum == LOW && (millis() - btlastTime) >= 1000) { btsayac = 0; btlastTime = millis(); } else if (k_durum == HIGH && bt_durum == HIGH && (millis() - btlastTime) >= 1000) { digitalWrite(Cam1Up, HIGH); digitalWrite(Cam2Up, HIGH); digitalWrite(Cam3Up, HIGH); digitalWrite(Cam4Up, HIGH); delay(strUpDownTime); digitalWrite(Cam1Up, LOW); digitalWrite(Cam2Up, LOW); digitalWrite(Cam3Up, LOW); digitalWrite(Cam4Up, LOW); btsayac = 0; btlastTime = millis(); } } if (k_durum == LOW && lt_durum == HIGH) { while (digitalRead(locktetik)); if (locksayac == 0) { locklastTime = millis(); } locksayac++; delay(10); } if (locksayac == 2 && (millis() - locklastTime) <= strlockTime) { strdurum = false; locksayac = 1; locklastTime = millis(); } else { strdurum = true; } if (strdurum == true) { if (locksayac == 2 && (millis() - locklastTime) <= onTime) { digitalWrite(Cam1Up, HIGH); digitalWrite(Cam2Up, HIGH); digitalWrite(Cam3Up, HIGH); digitalWrite(Cam4Up, HIGH); delay(strUpDownTime); digitalWrite(Cam1Up, LOW); digitalWrite(Cam2Up, LOW); digitalWrite(Cam3Up, LOW); digitalWrite(Cam4Up, LOW); locksayac = 0; locklastTime = millis(); } } if (locksayac == 2 && (millis() - locklastTime) > onTime) { locksayac = 1; locklastTime = millis(); } if (k_durum == LOW && ult_durum == HIGH) { while (digitalRead(unlocktetik)); if (sayac == 0) { lastTime = millis(); } sayac++; delay(10); } if (sayac == 2 && (millis() - lastTime) <= strlockTime) { strdurum = false; sayac = 1; lastTime = millis(); } else { strdurum = true; } if (strdurum == true) { if (sayac == 2 && (millis() - lastTime) <= onTime) { digitalWrite(Cam1Down, HIGH); digitalWrite(Cam2Down, HIGH); digitalWrite(Cam3Down, HIGH); digitalWrite(Cam4Down, HIGH); delay(strUpDownTime); digitalWrite(Cam1Down, LOW); digitalWrite(Cam2Down, LOW); digitalWrite(Cam3Down, LOW); digitalWrite(Cam4Down, LOW); sayac = 0; lastTime = millis(); } } if (sayac == 2 && (millis() - lastTime) > onTime) { sayac = 1; lastTime = millis(); } } //--------------------------------------------------------------------- //--------------------------------------------------------------------- |
Benim gibi aracında çift kapı açma tetiği ile bagaj kapağı açma modülü kullanan arkadaşlar için arduino kodlarımız aşağıdaki gibi olup çalışma prensibi 5 saniye içinde 2. kapı kapatma tetiği ile açık olan camlar aynı anda kapanacak, ilk kapı açma tetiği ile kapılar açılacak eğer 2 saniye içinde tekrar kapı açma tetiği gönderirseniz bagaj kapağınız açılacatır. Bagaj kapağı etkilenmeden camlarınızın açılması için ilk kapı açma tetiği ile ikinci kapı açma tetiği arasında 3sn olmak zorundadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
//--------------------------------------------------------------------- //--------------------------------------------------------------------- //---Son Güncelleme 13.06.2020 yazılım kaynaklı hatalar giderildi.----- //---Güvenlik nedeniyle tek kapı kapatma tetiği ile cam kapatma iptal edilmiş olup çift tetik olacak şekilde güncellenmiştir----- //---Gereksiz delay bekleme suresi kaldırıldı----- //--------------------------------------------------------------------- #define Cam1Up 9 // Cam 1 kaldırma digital pin. #define Cam1Down 2 // Cam 1 indirme digital pin. #define Cam2Up 8 // Cam 2 kaldırma digital pin. #define Cam2Down 3 // Cam 2 indirme digital pin. #define Cam3Up 7 // Cam 3 kaldırma digital pin. #define Cam3Down 4 // Cam 3 indirme digital pin. #define Cam4Up 6 // Cam 4 kaldırma digital pin. #define Cam4Down 5 // Cam 4 indirme digital pin. #define kontak 10 // Kontak koruma digital pin. #define unlocktetik 11 // Kapı açma tetik digital pin. #define locktetik 12 // Kapı kapatma tetik digital pin. #define ButtonAuto 13 // Tüm camlar için butondan gelen açma ve kapatma digital pin. int lt_durum; int ult_durum; int k_durum; int strdurum; int newstrdurum; int bt_durum; int sayac = 0; int locksayac = 0; int btsayac = 0; unsigned long lastTime = 0; unsigned long locklastTime = 0; unsigned long btlastTime = 0; long onTime = 10000; long stronTime = 2000; long strlockTime = 1000; long strUpDownTime = 4000; // Cam indirme ve kaldırma bekleme süresi void setup() { pinMode(Cam1Up, OUTPUT); pinMode(Cam2Up, OUTPUT); pinMode(Cam3Up, OUTPUT); pinMode(Cam4Up, OUTPUT); pinMode(Cam1Down, OUTPUT); pinMode(Cam2Down, OUTPUT); pinMode(Cam3Down, OUTPUT); pinMode(Cam4Down, OUTPUT); pinMode(kontak, INPUT); pinMode(locktetik, INPUT); pinMode(unlocktetik, INPUT); pinMode(ButtonAuto, INPUT); Serial.begin(9600); } void loop() { lt_durum = digitalRead(locktetik); ult_durum = digitalRead(unlocktetik); k_durum = digitalRead(kontak); bt_durum = digitalRead(ButtonAuto); Serial.print("Lock Tetik: "); Serial.println(lt_durum); Serial.print("Unlock Tetik: "); Serial.println(ult_durum); Serial.print("Kontak Durum: "); Serial.println(k_durum); Serial.print("Buton Durum: "); Serial.println(bt_durum); if (k_durum == HIGH && bt_durum == LOW){ newstrdurum = false; btsayac = 0; btlastTime = 0; } else if (k_durum == HIGH && bt_durum == HIGH){ newstrdurum = true; } else { newstrdurum = false; btsayac = 0; btlastTime = 0; } if (k_durum == HIGH && bt_durum == HIGH) while (digitalRead(ButtonAuto)); { if (btsayac == 0) { btlastTime = millis(); } btsayac++; } if (newstrdurum == true) { if (k_durum == HIGH && bt_durum == HIGH && (millis() - btlastTime) < 1000) { digitalWrite(Cam1Down, HIGH); digitalWrite(Cam2Down, HIGH); digitalWrite(Cam3Down, HIGH); digitalWrite(Cam4Down, HIGH); delay(strUpDownTime); digitalWrite(Cam1Down, LOW); digitalWrite(Cam2Down, LOW); digitalWrite(Cam3Down, LOW); digitalWrite(Cam4Down, LOW); btsayac = 0; btlastTime = millis(); } else if (bt_durum == LOW && (millis() - btlastTime) >= 1000) { btsayac = 0; btlastTime = millis(); } else if (k_durum == HIGH && bt_durum == HIGH && (millis() - btlastTime) >= 1000) { digitalWrite(Cam1Up, HIGH); digitalWrite(Cam2Up, HIGH); digitalWrite(Cam3Up, HIGH); digitalWrite(Cam4Up, HIGH); delay(strUpDownTime); digitalWrite(Cam1Up, LOW); digitalWrite(Cam2Up, LOW); digitalWrite(Cam3Up, LOW); digitalWrite(Cam4Up, LOW); btsayac = 0; btlastTime = millis(); } } if (k_durum == LOW && lt_durum == HIGH) { while (digitalRead(locktetik)); if (locksayac == 0) { locklastTime = millis(); } locksayac++; delay(10); } if (locksayac == 2 && (millis() - locklastTime) <= strlockTime) { strdurum = false; locksayac = 1; locklastTime = millis(); } else { strdurum = true; } if (strdurum == true) { if (locksayac == 2 && (millis() - locklastTime) <= onTime) { digitalWrite(Cam1Up, HIGH); digitalWrite(Cam2Up, HIGH); digitalWrite(Cam3Up, HIGH); digitalWrite(Cam4Up, HIGH); delay(strUpDownTime); digitalWrite(Cam1Up, LOW); digitalWrite(Cam2Up, LOW); digitalWrite(Cam3Up, LOW); digitalWrite(Cam4Up, LOW); locksayac = 0; locklastTime = millis(); } } if (locksayac == 2 && (millis() - locklastTime) > onTime) { locksayac = 1; locklastTime = millis(); } if (k_durum == LOW && ult_durum == HIGH) { while (digitalRead(unlocktetik)); if (sayac == 0) { lastTime = millis(); } sayac++; delay(10); } if (sayac == 2 && (millis() - lastTime) <= stronTime) { strdurum = false; sayac = 1; lastTime = millis(); } else { strdurum = true; } if (strdurum == true) { if (sayac == 2 && (millis() - lastTime) <= onTime) { digitalWrite(Cam1Down, HIGH); digitalWrite(Cam2Down, HIGH); digitalWrite(Cam3Down, HIGH); digitalWrite(Cam4Down, HIGH); delay(strUpDownTime); digitalWrite(Cam1Down, LOW); digitalWrite(Cam2Down, LOW); digitalWrite(Cam3Down, LOW); digitalWrite(Cam4Down, LOW); sayac = 0; lastTime = millis(); } } if (sayac == 2 && (millis() - lastTime) > onTime) { sayac = 1; lastTime = millis(); } } //--------------------------------------------------------------------- //--------------------------------------------------------------------- |