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