Arduino Program Yardım

Mete355

Üye
Katılım
11 Nis 2012
Mesajlar
7
Puanları
1
Yaş
32
Merhaba arkadaşlar,

Size birşey soracaktım. Kuzenimin lise projesi var. Ambulans duyarlı trafik lambası vermişler proje olarak.

Devreye başladım yapmaya simulasyonu ve yazılımını. Bir yerde takıldım arduino alanına hakim değilim fazla. Yardımcı olursanız çok sevinirim.

Trafik lambası normal çalışıyor kırmızı,sarı,yeşil yanıyor sırayla daha sonra ambulansı algılayınca yeşil yanıyor. Bundan sonra ambulans geçtikten sonra tekrar lamba normal çalışma akışına dönmesi lazım ama ben bunu yapamadım. Yeşilde takılı kalıyor butona basınca. Video çektim ekte yolluyorum. Kodlarıda ek'e koydum.

Sensör yerine buton koydum devrede; çalışma mantıgı aynı zaten sensör ve butonun. Butona basınca ambulansı algılamış oluyor ve yeşil yanıyor. Sonrasında dediğim gibi ambulans geçtikten sonra döngüyü tekrar başa alıp normal trafik lambasının çalışma akışına döndüremedim. Çözümü çok kolay bişi gibi duruyor interrupt koyulcak sanırım ama dediğim gibi bilgim olmadığı için yapamadım.


int KIRMIZI=3;
int SARI=4;
int YESIL=5;
int sinyalpin = A0;
int degisken;
int sayac;
int sayac2;
int zamanlayici;

void setup() {
pinMode (YESIL, OUTPUT);
pinMode (SARI, OUTPUT);
pinMode (KIRMIZI, OUTPUT);
digitalWrite(sinyalpin,INPUT);
degisken = digitalRead(sinyalpin) ;
}

void loop() {
if(degisken=HIGH){
kod();
}
else{
kod2();
}
}

void kod(){
sayac=millis();
zamanlayici=sayac % 24000;
degisken = digitalRead(sinyalpin) ;

if(degisken == HIGH){
kod2();
}
else if(sayac==0){

digitalWrite (KIRMIZI,HIGH);
digitalWrite (SARI,LOW);
digitalWrite (YESIL,LOW);
}
else if(sayac==10000){
digitalWrite (KIRMIZI,HIGH);
digitalWrite (SARI,HIGH);
digitalWrite (YESIL,LOW);
}
else if(sayac==12000){
digitalWrite (KIRMIZI,LOW);
digitalWrite (SARI,LOW);
digitalWrite (YESIL,HIGH);
}
else if(sayac==22000){
digitalWrite (KIRMIZI,LOW);
digitalWrite (SARI,HIGH);
digitalWrite (YESIL,LOW);
}
else if(zamanlayici==0) {
digitalWrite (KIRMIZI,HIGH);
digitalWrite (SARI,LOW);
digitalWrite (YESIL,LOW);
}
}

void kod2(){
digitalWrite (KIRMIZI, LOW);
digitalWrite (SARI, LOW);
digitalWrite (YESIL, HIGH);
}
 
Anladığım kadarı ile buton basılı olduğu sürece ambulans gelecek ve ışık yeşil olacak. Butonu bıraktığında ambulans geçmiş olacak ve ışıklar normale dönecek. Programın burası işini görür. Başka yerlere yönlendirmeye gerek yok.
void loop()
{
if(degisken=HIGH) Buton basılı ise;
{
Ambulans geldi kodlarını buraya
}
else Değilse;
{
Ambulans geçti kodları buraya
}
}
 

Forum istatistikleri

Konular
128,188
Mesajlar
915,703
Kullanıcılar
449,956
Son üye
CharmanDear

Yeni konular

Geri
Üst