Bildirimler
Tümünü temizle

If mi? Switch&case mi?

8 Yazılar
2 Üyeler
1 Likes
54 Görüntüleme
cefreyTR
(@cefreytr)
Aktif Üye
Katılım : 11 ay önce
Gönderiler: 8
Konu başlatıcı  

Merhaba arkadaşlar,

aşağıdaki gibi 5 farklı röleyi ayrı ayrı bu şekilde koşullandırmam gerekiyor. switch case ile yapmak mümkün mü bunu? yada daha sade bir yol? 18x5=90 tane "if"   loopu cok kasacakdır diye düşünüyorum.

not;ocak1 1 sn de 1 artan 60 da sıfırlanan bir sayaç.

   

if( (digit0==0)                            {analogWrite(ocakrole1,LOW );}
      if( (digit0==1) && (ocak1<=2) )  {analogWrite(ocakrole1,HIGH);}   röle 2 saniye acık kalacak 
      if( (digit0==1) && (ocak1>=3) )  {analogWrite(ocakrole1,LOW );}  58 saniye kapalı kalacak
     
      if( (digit0==2) && (ocak1<=6) )  {analogWrite(ocakrole1,HIGH);}  röle 6 saniye acık kalacak 
      if( (digit0==2) && (ocak1>=7) )  {analogWrite(ocakrole1,LOW );}  54 saniye kapalı kalacak 
     
      if( (digit0==3) && (ocak1<=10) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit0==3) && (ocak1>=11) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit0==4) && (ocak1<=16) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit0==4) && (ocak1>=17) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit0==5) && (ocak1<=22) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit0==5) && (ocak1>=23) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit0==6) && (ocak1<=35) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit0==6) && (ocak1>=36) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit0==7) && (ocak1<=45) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit0==7) && (ocak1>=46) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit0==8) && (ocak1<=52) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit0==8) && (ocak1>=53) ) {analogWrite(ocakrole1,LOW );}
     
      if(  digit0==9)                  {analogWrite(ocakrole1,HIGH);}
      
Bu konu 2 hafta önce tarafından cefreyTR tarihinde düzenlendi
Bu konu 1 hafta önce tarafından devreyakan tarihinde düzenlendi

   
Alıntı
devreyakan
(@devreyakan)
Yönetici Admin
Katılım : 4 sene önce
Gönderiler: 73
 

Switch-case kullanabilirsiniz gibi duruyor,buradan kıyaslamasına bakabilirsiniz.


   
CevapAlıntı
cefreyTR
(@cefreytr)
Aktif Üye
Katılım : 11 ay önce
Gönderiler: 8
Konu başlatıcı  

denedim ama case içinde if çalıştıramadım. sadece (digit0==0) ve (digit0==9)  satırlarında kıyas yok. diğerlerinde case içinde yine if yapmak  gekecek. bu mümkün mü?


   
CevapAlıntı
devreyakan
(@devreyakan)
Yönetici Admin
Katılım : 4 sene önce
Gönderiler: 73
 

switch-case içinde doğrudan if-else ifadelerini kullanmak mümkün değildir. Ancak, switch-case ifadesi içinde iç içe switch-case ifadeleri kullanarak bir if-else yapısı taklit etmek mümkündür.

Örnek:

switch (değişken) {
  case 1:
    // Durum 1 için bir şeyler yapın
    switch (altDeğişken) {
      case 'a':
        // Alt durum 'a' için bir şeyler yapın
        break;
      case 'b':
        // Alt durum 'b' için bir şeyler yapın
        break;
      default:
        // Bilinmeyen alt durumlar için bir şeyler yapın
        break;
    }
    break;
  case 2:
    // Durum 2 için bir şeyler yapın
    switch (altDeğişken) {
      case 'x':
        // Alt durum 'x' için bir şeyler yapın
        break;
      case 'y':
        // Alt durum 'y' için bir şeyler yapın
        break;
      default:
        // Bilinmeyen alt durumlar için bir şeyler yapın
        break;
    }
    break;
  default:
    // Bilinmeyen durumlar için bir şeyler yapın
    break;
}

 


   
CevapAlıntı
cefreyTR
(@cefreytr)
Aktif Üye
Katılım : 11 ay önce
Gönderiler: 8
Konu başlatıcı  

alt durum sadece  digit8 için 50 case olacak. şu an aşağıdaki şekilde bayılmadan calışıyor wokwi'de

switch (k) {
  case 0:
    bAddDecimalPoint1= true;
    bAddDecimalPoint2= false;
    bAddDecimalPoint3= false;
    bAddDecimalPoint4= false;
    digit1=
    break;
  case 1:
    bAddDecimalPoint1= false;
    bAddDecimalPoint2= true;
    bAddDecimalPoint3= false;
    bAddDecimalPoint4= false;
    break;
    case 2:
    bAddDecimalPoint1= false;
    bAddDecimalPoint2= false;
    bAddDecimalPoint3= true;
    bAddDecimalPoint4= false;
    break;
    case 3:
    bAddDecimalPoint1= false;
    bAddDecimalPoint2= false;
    bAddDecimalPoint3= false;
    bAddDecimalPoint4= true;
    break;
  default:
    bAddDecimalPoint1= false;
    bAddDecimalPoint2= false;
    bAddDecimalPoint3= false;
    bAddDecimalPoint4= false;
    break;}
      if( (digit1==1) && (ocak1<=2) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit1==1) && (ocak1>=3) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit1==2) && (ocak1<=6) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit1==2) && (ocak1>=7) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit1==3) && (ocak1<=10) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit1==3) && (ocak1>=11) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit1==4) && (ocak1<=16) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit1==4) && (ocak1>=17) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit1==5) && (ocak1<=22) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit1==5) && (ocak1>=23) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit1==6) && (ocak1<=35) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit1==6) && (ocak1>=36) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit1==7) && (ocak1<=45) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit1==7) && (ocak1>=46) ) {analogWrite(ocakrole1,LOW );}
     
      if( (digit1==8) && (ocak1<=52) ) {analogWrite(ocakrole1,HIGH);}
      if( (digit1==8) && (ocak1>=53) ) {analogWrite(ocakrole1,LOW );}
     
      if(  digit1==9)                  {analogWrite(ocakrole1,HIGH);}
      if(  digit1==0)                  {analogWrite(ocakrole1,LOW );}
     
      if( (digit2==1) && (ocak1<=2) ) {analogWrite(ocakrole2,HIGH);}
      if( (digit2==1) && (ocak1>=3) ) {analogWrite(ocakrole2,LOW );}
     
      if( (digit2==2) && (ocak1<=6) ) {analogWrite(ocakrole2,HIGH);}
      if( (digit2==2) && (ocak1>=7) ) {analogWrite(ocakrole2,LOW );}
     
      if( (digit2==3) && (ocak1<=10) ) {analogWrite(ocakrole2,HIGH);}
      if( (digit2==3) && (ocak1>=11) ) {analogWrite(ocakrole2,LOW );}
     
      if( (digit2==4) && (ocak1<=16) ) {analogWrite(ocakrole2,HIGH);}
      if( (digit2==4) && (ocak1>=17) ) {analogWrite(ocakrole2,LOW );}
     
      if( (digit2==5) && (ocak1<=22) ) {analogWrite(ocakrole2,HIGH);}
      if( (digit2==5) && (ocak1>=23) ) {analogWrite(ocakrole2,LOW );}
     
      if( (digit2==6) && (ocak1<=35) ) {analogWrite(ocakrole2,HIGH);}
      if( (digit2==6) && (ocak1>=36) ) {analogWrite(ocakrole2,LOW );}
     
      if( (digit2==7) && (ocak1<=45) ) {analogWrite(ocakrole2,HIGH);}
      if( (digit2==7) && (ocak1>=46) ) {analogWrite(ocakrole2,LOW );}
     
      if( (digit2==8) && (ocak1<=52) ) {analogWrite(ocakrole2,HIGH);}
      if( (digit2==8) && (ocak1>=53) ) {analogWrite(ocakrole2,LOW );}
     
      if(  digit2==9)                  {analogWrite(ocakrole2,HIGH);}
      if(  digit2==0)                  {analogWrite(ocakrole2,LOW );}
     
      if( (digit3==1) && (ocak1<=2) ) {analogWrite(ocakrole3,HIGH);}
      if( (digit3==1) && (ocak1>=3) ) {analogWrite(ocakrole3,LOW );}
     
      if( (digit3==2) && (ocak1<=6) ) {analogWrite(ocakrole3,HIGH);}
      if( (digit3==2) && (ocak1>=7) ) {analogWrite(ocakrole3,LOW );}
     
      if( (digit3==3) && (ocak1<=10) ) {analogWrite(ocakrole3,HIGH);}
      if( (digit3==3) && (ocak1>=11) ) {analogWrite(ocakrole3,LOW );}
     
      if( (digit3==4) && (ocak1<=16) ) {analogWrite(ocakrole3,HIGH);}
      if( (digit3==4) && (ocak1>=17) ) {analogWrite(ocakrole3,LOW );}
     
      if( (digit3==5) && (ocak1<=22) ) {analogWrite(ocakrole3,HIGH);}
      if( (digit3==5) && (ocak1>=23) ) {analogWrite(ocakrole3,LOW );}
     
      if( (digit3==6) && (ocak1<=35) ) {analogWrite(ocakrole3,HIGH);}
      if( (digit3==6) && (ocak1>=36) ) {analogWrite(ocakrole3,LOW );}
     
      if( (digit3==7) && (ocak1<=45) ) {analogWrite(ocakrole3,HIGH);}
      if( (digit3==7) && (ocak1>=46) ) {analogWrite(ocakrole3,LOW );}
     
      if( (digit3==8) && (ocak1<=52) ) {analogWrite(ocakrole3,HIGH);}
      if( (digit3==8) && (ocak1>=53) ) {analogWrite(ocakrole3,LOW );}
     
      if(  digit3==9)                  {analogWrite(ocakrole3,HIGH);}
      if(  digit3==0)                  {analogWrite(ocakrole3,LOW );}
     
      if( (digit4==1) && (ocak1<=2) ) {analogWrite(ocakrole4,HIGH);}
      if( (digit4==1) && (ocak1>=3) ) {analogWrite(ocakrole4,LOW );}
     
      if( (digit4==2) && (ocak1<=6) ) {analogWrite(ocakrole4,HIGH);}
      if( (digit4==2) && (ocak1>=7) ) {analogWrite(ocakrole4,LOW );}
     
      if( (digit4==3) && (ocak1<=10) ) {analogWrite(ocakrole4,HIGH);}
      if( (digit4==3) && (ocak1>=11) ) {analogWrite(ocakrole4,LOW );}
     
      if( (digit4==4) && (ocak1<=16) ) {analogWrite(ocakrole4,HIGH);}
      if( (digit4==4) && (ocak1>=17) ) {analogWrite(ocakrole4,LOW );}
     
      if( (digit4==5) && (ocak1<=22) ) {analogWrite(ocakrole4,HIGH);}
      if( (digit4==5) && (ocak1>=23) ) {analogWrite(ocakrole4,LOW );}
     
      if( (digit4==6) && (ocak1<=35) ) {analogWrite(ocakrole4,HIGH);}
      if( (digit4==6) && (ocak1>=36) ) {analogWrite(ocakrole4,LOW );}
     
      if( (digit4==7) && (ocak1<=45) ) {analogWrite(ocakrole4,HIGH);}
      if( (digit4==7) && (ocak1>=46) ) {analogWrite(ocakrole4,LOW );}
     
      if( (digit4==8) && (ocak1<=52) ) {analogWrite(ocakrole4,HIGH);}
      if( (digit4==8) && (ocak1>=53) ) {analogWrite(ocakrole4,LOW );}
     
      if(  digit4==9)                  {analogWrite(ocakrole4,HIGH);}
      if(  digit4==0)                  {analogWrite(ocakrole4,LOW );}


  digit1=3;  {sevenSegWrite1(digit1, bAddDecimalPoint1); delay(150);}
  digit2=6;  {sevenSegWrite2(digit2, bAddDecimalPoint2); delay(150);}
  digit3=5;  {sevenSegWrite3(digit3, bAddDecimalPoint3); delay(150);}
  digit4=4;  {sevenSegWrite4(digit4, bAddDecimalPoint4); delay(150);}
Bu ileti 1 hafta önce tarafından devreyakan tarihinde düzenlendi

   
devreyakan reacted
CevapAlıntı
devreyakan
(@devreyakan)
Yönetici Admin
Katılım : 4 sene önce
Gönderiler: 73
 

Fiziksel olarakta test edin, duruma göre optimize etmek gerekir.


   
CevapAlıntı
cefreyTR
(@cefreytr)
Aktif Üye
Katılım : 11 ay önce
Gönderiler: 8
Konu başlatıcı  

@devreyakan  henüz test edemedim fiziksel olarak sonucu paylaşacam. yazmakta olduğum kod cocuk kilitli 3 dokunmatik tuşlu (+,- ,select/onoff) 4 adet 7 segmentli display göstergeli 4 gözlü indüksiyon ocak için. bitince yine burdan tamamını paylaşırım


   
CevapAlıntı
devreyakan
(@devreyakan)
Yönetici Admin
Katılım : 4 sene önce
Gönderiler: 73
 

Şimdiden elinize sağlık, kolay gelsin.


   
CevapAlıntı
Paylaş: