yazılım sorunu))
  • Herkese selam. elimde calışır durumda bir yazılım var degişdirmek icin ugraşdım amma hep sorun cıkdı.
    Ardunıo + 4 role + 4 buton + 1lcd 4*20. sistem şöyle calışıyor buton 1 2 3 veya 4 e her basdıgımda role 1, 2 ,3 , 4 1 saat acılıyor ve gerıde kalan sureyı lcd de gosterıyor sure bitdiyinde role kapanıyor. bu sıstem sorunsuz calısıyor. simdi ben 5 buton kullanmak istiyorum. 5 ci butonu basdıgdıqdan sonra yukarda anlatdıgım sistem activ olsun. ve her butonu 1 kes aktıv etme sansım olsun ıstıyorum.
    oceden herkese tesekurler..

    #include
    /* LCD pinleri tanımlanıyor */
    LiquidCrystal lcd(9, 8, 7, 6, 5, 4, 3); /* 4-bit modu için */


    int b1 = A0;
    int b2 = A1;
    int b3 = A2;
    int b4 = A3;

    unsigned long sure1 = 0;
    unsigned long sure2 = 0;
    unsigned long sure3 = 0;
    unsigned long sure4 = 0;

    unsigned long kalan1 = 0;
    unsigned long kalan2 = 0;
    unsigned long kalan3 = 0;
    unsigned long kalan4 = 0;


    unsigned long bas1 = 0;
    unsigned long bas2 = 0;
    unsigned long bas3 = 0;
    unsigned long bas4 = 0;

    unsigned long simdi = 0;

    int saat1 = 0;
    int saat2 = 0;
    int saat3 = 0;
    int saat4 = 0;

    int sa1 = 0;
    int da1 = 0;
    int sn1 = 0;

    int sa2 = 0;
    int da2 = 0;
    int sn2 = 0;

    int sa3 = 0;
    int da3 = 0;
    int sn3 = 0;

    int sa4 = 0;
    int da4 = 0;
    int sn4 = 0;



    int db1 = 0;
    int db2 = 0;
    int db3 = 0;
    int db4 = 0;

    int role1 = 13;
    int role2 = 12;
    int role3 = 11;
    int role4 = 10;

    void setup() {
    lcd.begin(20,4); /* LCD tanımlanıyor*/
    lcd.clear(); /* LCD'yi temizle */
    pinMode(b1, INPUT_PULLUP);
    pinMode(b2, INPUT_PULLUP);
    pinMode(b3, INPUT_PULLUP);
    pinMode(b4, INPUT_PULLUP);

    pinMode(role1, OUTPUT);
    pinMode(role2, OUTPUT);
    pinMode(role3, OUTPUT);
    pinMode(role4, OUTPUT);

    digitalWrite(role1, LOW);
    digitalWrite(role2, LOW);
    digitalWrite(role3, LOW);
    digitalWrite(role4, LOW);

    lcd.setCursor(0,0);
    lcd.print("KAPALI ");

    lcd.setCursor(0,1);
    lcd.print("KAPALI ");

    lcd.setCursor(0,2);
    lcd.print("KAPALI ");

    lcd.setCursor(0,3);
    lcd.print("KAPALI ");
    }

    void loop() {

    simdi = millis();

    //sureGoster();
    sureGoster1();
    sureGoster2();
    sureGoster3();
    sureGoster4();



    if (digitalRead(b1)==LOW) buton1();
    if (digitalRead(b2)==LOW) buton2();
    if (digitalRead(b3)==LOW) buton3();
    if (digitalRead(b4)==LOW) buton4();

    delay(100);
    }



    void buton1(){
    arttir(1);
    delay(300);
    }

    void buton2(){
    arttir(2);
    delay(300);
    }

    void buton3(){
    arttir(3);
    delay(300);
    }

    void buton4(){
    arttir(4);
    delay(300);
    }


    void arttir(int sure){

    if (sure==1){
    if (bas1==0){
    bas1 = simdi;
    kalan1=3600000;
    digitalWrite(role1, HIGH);

    }
    saat1++;
    if (saat1==10) kapat1();
    else sure1+=3600000;
    }

    if (sure==2){
    if (bas2==0){
    bas2 = simdi;
    kalan2=3600000;
    digitalWrite(role2, HIGH);

    }
    saat2++;
    if (saat2==10) kapat2();
    sure2+=3600000;
    }

    if (sure==3){
    if (bas3==0){
    bas3 = simdi;
    kalan3=3600000;
    digitalWrite(role3, HIGH);

    }
    saat3++;
    if (saat3==10) kapat3();
    sure3+=3600000;
    }

    if (sure==4){
    if (bas4==0){
    bas4 = simdi;
    kalan4=3600000;
    digitalWrite(role4, HIGH);

    }
    saat4++;
    if (saat4==10) kapat4();
    sure4+=3600000;
    }

    }



    void sureGoster1(){
    if (bas1>0){
    lcd.setCursor(0,0);
    kalan1 = sure1 - (simdi - bas1);
    if (kalan1<=1000){<br /> kapat1();
    }
    else{
    sa1 = kalan1 / 3600000;
    da1 = (kalan1 - (sa1*3600000)) / 60000 ;
    sn1 = (kalan1 - (sa1*3600000) - (da1*60000)) / 1000;
    lcd.print(sa1);
    lcd.print(":");
    if (da1<10) lcd.print("0");<br /> lcd.print(da1);
    lcd.print(":");
    if (sn1<10) lcd.print("0");<br /> lcd.print(sn1);
    lcd.print(" ");
    lcd.setCursor(14,0);
    lcd.print(saat1);
    lcd.print(" SAAT");
    }
    }
    else kapat1();
    }


    void sureGoster2(){
    if (bas2>0){
    lcd.setCursor(0,1);
    if (kalan2<=1000){<br /> kapat2();
    }
    else{
    kalan2 = sure2 - (simdi - bas2);
    sa2 = kalan2 / 3600000;
    da2 = (kalan2 - (sa2*3600000)) / 60000 ;
    sn2 = (kalan2 - (sa2*3600000) - (da2*60000)) / 1000;
    lcd.print(sa2);
    lcd.print(":");
    if (da2<10) lcd.print("0");<br /> lcd.print(da2);
    lcd.print(":");
    if (sn2<10) lcd.print("0");<br /> lcd.print(sn2);
    lcd.print(" ");
    lcd.setCursor(14,1);
    lcd.print(saat2);
    lcd.print(" SAAT");
    }
    }
    else kapat2();
    }


    void sureGoster3(){
    if (bas3>0){
    lcd.setCursor(0,2);
    if (kalan3<=1000){<br /> kapat3();
    }
    else{
    kalan3 = sure3 - (simdi - bas3);
    sa3 = kalan3 / 3600000;
    da3 = (kalan3 - (sa3*3600000)) / 60000 ;
    sn3 = (kalan3 - (sa3*3600000) - (da3*60000)) / 1000;
    lcd.print(sa3);
    lcd.print(":");
    if (da3<10) lcd.print("0");<br /> lcd.print(da3);
    lcd.print(":");
    if (sn3<10) lcd.print("0");<br /> lcd.print(sn3);
    lcd.print(" ");
    lcd.setCursor(14,2);
    lcd.print(saat3);
    lcd.print(" SAAT");
    }
    }
    else kapat3();
    }


    void sureGoster4(){
    if (bas4>0){
    lcd.setCursor(0,3);
    if (kalan4<=1000){<br /> kapat4();
    }
    else{
    kalan4 = sure4 - (simdi - bas4);
    sa4 = kalan4 / 3600000;
    da4 = (kalan4 - (sa4*3600000)) / 60000 ;
    sn4 = (kalan4 - (sa4*3600000) - (da4*60000)) / 1000;
    lcd.print(sa4);
    lcd.print(":");
    if (da4<10) lcd.print("0");<br /> lcd.print(da4);
    lcd.print(":");
    if (sn4<10) lcd.print("0");<br /> lcd.print(sn4);
    lcd.print(" ");
    lcd.setCursor(14,3);
    lcd.print(saat4);
    lcd.print(" SAAT");
    }
    }
    else kapat4();
    }

    void kapat1(){
    digitalWrite(role1, LOW);
    kalan1 = 0;
    bas1 = 0;
    sure1 = 0;
    saat1 = 0;
    lcd.setCursor(0,0);
    lcd.print("KAPALI ");
    }

    void kapat2(){
    digitalWrite(role2, LOW);
    kalan2 = 0;
    bas2 = 0;
    sure2 = 0;
    saat2 = 0;
    lcd.setCursor(0,1);
    lcd.print("KAPALI ");
    }

    void kapat3(){
    digitalWrite(role3, LOW);
    kalan3 = 0;
    bas3 = 0;
    sure3 = 0;
    saat3 = 0;
    lcd.setCursor(0,2);
    lcd.print("KAPALI ");
    }

    void kapat4(){
    digitalWrite(role4, LOW);
    kalan4 = 0;
    bas4 = 0;
    sure4 = 0;
    saat4 = 0;
    lcd.setCursor(0,3);
    lcd.print("KAPALI ");
    }







  • Hi dude,
    I write the message for you about your the thread name.
    Firstly, you have to write Turkish correctly, otherwise nobody will not answer your question ok?
    Secondly, you should change the thread name which it should be problem what you have, it's not acceptable like " help me"
    Totally, I think your problem is so easy but it's not clear.You will try to explain step by step ok?
    See you dude.
  • Turkcem ıyı olmadıgı ıcın kusura bakmayın. Azerbaycanlıyım o yuzden net konuşa ve yazamıyorum. Bşlıga gelınce ise başlıgı ne yazıcagımı bilemedim. ve anıden help me dıye başlıg geldi aklıma.
  • O halde özür diliyorum, kusura kalma,
    ama sen başlığı düşün yinede,
    sorunun 5. butonu sistemi aktifleştirmek için mi kullanacaksın, yani 5. butona basılmadan ilk 4 buton çalışmayacak ta ki 5.buton basılana kadar.
  • yok estafurullah efendim. ben anladım zaten sizi. )


    1) buton 1 e basdıgımda röle 1 saat calışıyor 2 kez basdıgımda 2 saat calışıyor. Sürenide lcd de gösteriyor. 4 butonun 4 de aynı sekilde calışıyor. bu kısım yukarıda atmış oldugum yazılımdır.

    2) degişdirmek istediyim kısım. buton1, buton 2, buton 3, buton 4, buton 5 eklenicek,
    buton 1 ,2 3, ve 4 calışmasın buton 5 e basılmayınca. buton 5 e basdııgdan sonra bir kez 4 butondan birine basma şansım olsun mesela ben buton 5 e basdım daha sonra buton 3 e basdım role3, 1 saat aktıv olsun. sure bitdiyinde dursun. buton 5 e iki kez basdım ondan sonra buton 1 e basdıgımda role1, 2 saat calıssın.

    inşallah anlata bilmişimdir.. önceden teşekurler
  • Sahte kodu şöyle olmalı,süreyi sen halledersin:)Umarım yardımcı olur.
    int buton1 =5;
    int buton2 =6;
    int buton3 =7;
    int buton4 =8;
    int buton5 =9;
    unsigned long ikinciBes= 0;
    unsigned long zaman= 0;
    bool ikinciBesKontrol = false;
    setup(){}
    loop(){
    if(digitalRead(buton5)){ // 5.buton basıldı mı
    ikinciBes = millis();
    while(millis()-ikinciBes<1000&&(ikinciBesKontrol =(!digitalRead(buton5));//2.bes icin 1 sn bekliyor( burasının düzenlenmesi gerekebilir)<br /> if(ikinciBes){ //////////////////////

    ikinci defa 5.butona basıldığında yapılacaklar bu if içine yazılacak

    ///////////////////////

    }
    //////////////////////////////////



    eski çalışma şekli buradan itibaren





    //////////////////////////////////

    }
    }

  • tesekur ederim. yardımcı oldugunuz icin. denıcem

Howdy, Stranger!

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

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