Programlama Yardım
  • 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);
    }


    Linkte video mevcut. isis'te devreyi kurup bu kodu arduino'da çalıştırdım.

    http://dosya.co/n28d6q89giyl/WhatsApp_Video_2018-02-13_at_14.47.14.mp4.html
  • pinMode (YESIL, OUTPUT);
    pinMode (SARI, OUTPUT);
    pinMode (KIRMIZI, OUTPUT);

    digitalWrite(sinyalpin,INPUT); burayı değiştirip deneyin pinMode(sinyalpin,INPUT);

    degisken = digitalRead(sinyalpin) ;
  • Hocam denedim söylediğinizi değişen birşey olmadı aynı hala.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.