Skip to content

Instantly share code, notes, and snippets.

@erdemarslan
Last active February 4, 2019 12:05
Show Gist options
  • Select an option

  • Save erdemarslan/f3ed359dc25945ea026aeb757f9ce37b to your computer and use it in GitHub Desktop.

Select an option

Save erdemarslan/f3ed359dc25945ea026aeb757f9ce37b to your computer and use it in GitHub Desktop.
/*
* 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