Last active
February 4, 2019 12:05
-
-
Save erdemarslan/f3ed359dc25945ea026aeb757f9ce37b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * Trafik Yoğunluğu | |
| * Biga İmam Hatip Ortaokulu | |
| * | |
| * Proje Öğrencileri | |
| * İsmail Eray Karaman | |
| * Alperen Çakmak | |
| * | |
| */ | |
| // Sensörleri bir sayı dizisi içine koyalım. Sensör pinleri aynı zamanda kesme pinleridir. | |
| int sensor[] = {2,3,18,19}; | |
| // Trafik Lambalarının her birini bir sayı dizisinin içine koyalım. 0 - K | 1 - S | 2 - Y | |
| int lamba1[] = {23,25,27}; | |
| int lamba2[] = {29,31,33}; | |
| int lamba3[] = {35,37,39}; | |
| int lamba4[] = {41,43,45}; | |
| // Lambalarının aktif olup olmadığını bir bool dizisi içinde saklayalım! | |
| bool lambaDurumu[] = {false, false, false, false}; | |
| // hangi trafik lambası aktif! | |
| int aktifLamba = 0; | |
| void setup() { | |
| // Sensörleri tanımalayalım ve bu sensörleri birer kesmeye atayalım! | |
| for(int i = 0; i < 4; i++) { | |
| pinMode(sensor[i], INPUT_PULLUP); | |
| attachInterrupt(digitalPinToInterrupt(sensor[i]), hareketAlgilandi, CHANGE); | |
| } | |
| // Trafik lambalarının her birini tanımlayalım. | |
| for(int i = 0; i < 3; i++) { | |
| pinMode(lamba1[i], OUTPUT); | |
| pinMode(lamba2[i], OUTPUT); | |
| pinMode(lamba3[i], OUTPUT); | |
| pinMode(lamba4[i], OUTPUT); | |
| } | |
| } | |
| void hareketAlgilandi() { | |
| for(int i = 0; i < 4; i++) { | |
| // lambadurumunu - sensörde engel varsa true, yoksa false yapar! | |
| lambaDurumu[i] = digitalRead(sensor[i]) == LOW ? true : false; | |
| } | |
| } | |
| void loop() { | |
| // Sonsuza kadar dönecek kodlar! | |
| // Önce bütün lambaları kırmızı yapalım! | |
| for(int i = 0; i < 3; i++) { | |
| int durum = i == 0 ? HIGH : LOW; | |
| digitalWrite(lamba1[i], durum); | |
| digitalWrite(lamba2[i], durum); | |
| digitalWrite(lamba3[i], durum); | |
| digitalWrite(lamba4[i], durum); | |
| } | |
| // 1. Lamba aktifse | |
| if(aktifLamba == 0 && lambaDurumu[0] == true) { | |
| digitalWrite(lamba1[0], LOW); | |
| digitalWrite(lamba1[1], HIGH); | |
| delay(2000); // 2 saniye | |
| digitalWrite(lamba1[1], LOW); | |
| digitalWrite(lamba1[2], HIGH); | |
| delay(5000); // 5 saniye | |
| } | |
| // 2. lamba aktifse | |
| if(aktifLamba == 1 && lambaDurumu[1] == true) { | |
| digitalWrite(lamba2[0], LOW); | |
| digitalWrite(lamba2[1], HIGH); | |
| delay(2000); // 2 saniye | |
| digitalWrite(lamba2[1], LOW); | |
| digitalWrite(lamba2[2], HIGH); | |
| delay(5000); // 5 saniye | |
| } | |
| // 3. lamba aktifse | |
| if(aktifLamba == 2 && lambaDurumu[2] == true) { | |
| digitalWrite(lamba3[0], LOW); | |
| digitalWrite(lamba3[1], HIGH); | |
| delay(2000); // 2 saniye | |
| digitalWrite(lamba3[1], LOW); | |
| digitalWrite(lamba3[2], HIGH); | |
| delay(5000); // 5 saniye | |
| } | |
| // 4. lamba aktifse | |
| if(aktifLamba == 3 && lambaDurumu[3] == true) { | |
| digitalWrite(lamba4[0], LOW); | |
| digitalWrite(lamba4[1], HIGH); | |
| delay(2000); // 2 saniye | |
| digitalWrite(lamba4[1], LOW); | |
| digitalWrite(lamba4[2], HIGH); | |
| delay(5000); // 5 saniye | |
| } | |
| // aktif lamba değerini 1 arttır. eğer bu değer 3 ten büyükse hop 0 a çek!x | |
| aktifLamba++; | |
| if(aktifLamba > 3) { | |
| aktifLamba = 0; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment