Rica etsem müsait olduğunuz zaman verdiğim link üzerinden kodu düzenleyebilirmisiniz?bir değişkene kaydettiyseniz değişkene yeni durum atayın.
void loop(){
if(buton1 == true){
sifirla();
// diğer kodlar
}
if(buton == true){
sifirla();
// diğer kodlar
}
}
void sifirla() {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
}
burdaki link üzerinden düzenleyebilirmisiniz rica etsem ?bir butona bastıktan sonra diğer butona basarsak, ilk bastığımız butonun kodları devam ediyor. 2. buton çalışmıyor yani.
https://www.tinkercad.com/things/8U...e=IhVHzcs-QNrGZ1PhjyIx5BYKCriz5uev73_gHYnzcLo
burdan detaylıca inceleyebilirsiniz
denedim olmadı
bir üstteki linkten detaylı bir şekilde inceleyebilirmisin rica etsem.
Sana çözümü söylemeden önce birkaç öneride bulunacağım. Birincisi dijital girişler int değil bool dur yani sayı değil durumdur onları öyle yani onlar high veya low değil −2,147,483,648 ve +2,147,483,647 arasında bir değermiş gibi davranamazsın. İkincisi birbirini tekrar eden işlerde fonksiyon kullanmalısın yoksa hem aletin hafızası dolar hemde boşa hamallık edersin. Üçüncüsü sırayla yapılacak işlerde for döngüsünü çok koşullu işlerde if yerine switch döngüsünü kullanman gerekir. Şimdi senin soruna gelirsek; Anladığım kadarıyla bir butona basıldığında başlanan işi tamamlanmadan diğer buton basılırsa yarıda kesmek istiyorsun. Bunu kesmeyle yapabilirdik ama 6 butona kesme vereeyiz o yüzden belirli aralıklarla butonlara bakmak zorundayız. delay(500) komutu aleti 500ms uyutacağı için butonları göremeyiz onun yerine aleti 500e kadar saydırıp her bir sayıda butonlara baktırmamız gerekir. bunun için bekle() adında bir fonksiyon yazmalıyız. Yazdığın kodu sadeleştirdim bi bakarsın. Derledim ama çalıştırmadım sen deneyip göreceksin. Daha fazla sadeleştirmek mümkün ama anlayamazsın o zaman. Şimdi aşağıdaki kodu incele çalıştır olmayan birşey varsa buraya yaz.Merhaba, ben bu devrede her yeni bir tuşa basıldığında önceki komutun iptal edilmesini istiyorum bunu nasıl yapabilirim?
Kod:const int led1 = 6; const int buton1 = 0; int butondurum1=0; const int led2 = 7; const int buton2 = 1; int butondurum2=0; const int led3 = 8; const int buton3 = 2; int butondurum3=0; const int led4 = 9; const int buton4 = 3; int butondurum4=0; const int led5 = 10; const int buton5 = 4; int butondurum5=0; const int led6 = 11; const int buton6 = 5; int butondurum6=0; void setup() { pinMode(led1,OUTPUT); pinMode(buton1,INPUT); pinMode(led2,OUTPUT); pinMode(buton2,INPUT); pinMode(led3,OUTPUT); pinMode(buton3,INPUT); pinMode(led4,OUTPUT); pinMode(buton4,INPUT); pinMode(led5,OUTPUT); pinMode(buton5,INPUT); pinMode(led6,OUTPUT); pinMode(buton6,INPUT); } void loop() { butondurum1 = digitalRead(buton1); butondurum2 = digitalRead(buton2); butondurum3 = digitalRead(buton3); butondurum4 = digitalRead(buton4); butondurum5 = digitalRead(buton5); butondurum6 = digitalRead(buton6); if(butondurum1 == HIGH) { digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led3,LOW); digitalWrite(led4,LOW); digitalWrite(led5,LOW); digitalWrite(led6,LOW); digitalWrite(led1,HIGH); delay(500); digitalWrite(led1,LOW); digitalWrite(led6,HIGH); delay(9999); } else if(butondurum2 == HIGH) { digitalWrite(led1,HIGH); digitalWrite(led2,HIGH); delay(500); digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led6,HIGH); delay(2000); } else if(butondurum3 == HIGH) { digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led3,LOW); digitalWrite(led4,LOW); digitalWrite(led5,LOW); digitalWrite(led6,LOW); digitalWrite(led1,HIGH); delay(250); digitalWrite(led1,LOW); digitalWrite(led2,HIGH); delay(250); digitalWrite(led2,LOW); digitalWrite(led3,HIGH); delay(250); digitalWrite(led3,LOW); digitalWrite(led4,HIGH); delay(250); digitalWrite(led4,LOW); digitalWrite(led5,HIGH); delay(250); digitalWrite(led5,LOW); digitalWrite(led6,HIGH); delay(9999); } else if(butondurum4 == HIGH) { digitalWrite(led4,HIGH); delay(250); digitalWrite(led4,LOW); delay(250); digitalWrite(led3,HIGH); delay(250); digitalWrite(led3,LOW); delay(250); digitalWrite(led4,HIGH); delay(250); digitalWrite(led4,LOW); delay(250); digitalWrite(led3,HIGH); delay(250); digitalWrite(led3,LOW); delay(250); digitalWrite(led4,HIGH); delay(250); digitalWrite(led4,LOW); delay(250); digitalWrite(led3,HIGH); delay(250); digitalWrite(led3,LOW); delay(9999); } else if(butondurum5 == HIGH) { digitalWrite(led6,HIGH); delay(250); digitalWrite(led6,LOW); digitalWrite(led5,HIGH); delay(250); digitalWrite(led5,LOW); digitalWrite(led4,HIGH); delay(250); digitalWrite(led4,LOW); digitalWrite(led3,HIGH); delay(250); digitalWrite(led3,LOW); digitalWrite(led2,HIGH); delay(250); digitalWrite(led2,LOW); digitalWrite(led1,HIGH); delay(250); digitalWrite(led1,LOW); digitalWrite(led6,HIGH); delay(9999); } else if(butondurum6 == HIGH) { digitalWrite(led1,HIGH); digitalWrite(led2,HIGH); digitalWrite(led3,HIGH); digitalWrite(led4,HIGH); digitalWrite(led5,HIGH); digitalWrite(led6,HIGH); delay(500); digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led3,LOW); digitalWrite(led4,LOW); digitalWrite(led5,LOW); digitalWrite(led6,LOW); delay(500); digitalWrite(led1,HIGH); digitalWrite(led2,HIGH); digitalWrite(led3,HIGH); digitalWrite(led4,HIGH); digitalWrite(led5,HIGH); digitalWrite(led6,HIGH); delay(500); digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led3,LOW); digitalWrite(led4,LOW); digitalWrite(led5,LOW); digitalWrite(led6,LOW); delay(500); digitalWrite(led1,HIGH); digitalWrite(led2,HIGH); digitalWrite(led3,HIGH); digitalWrite(led4,HIGH); digitalWrite(led5,HIGH); digitalWrite(led6,HIGH); delay(500); digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led3,LOW); digitalWrite(led4,LOW); digitalWrite(led5,LOW); digitalWrite(led6,LOW); } else { digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led3,LOW); digitalWrite(led4,LOW); digitalWrite(led5,LOW); digitalWrite(led6,LOW); } }
#define ON true
#define OFF false
const int led1 = 6;
const int led2 = 7;
const int led3 = 8;
const int led4 = 9;
const int led5 = 10;
const int led6 = 11;
const int buton1 = 0;
const int buton2 = 1;
const int buton3 = 2;
const int buton4 = 3;
const int buton5 = 4;
const int buton6 = 5;
int flag=0;
void led(bool,bool,bool,bool,bool,bool);// Led Fonksiyon prototipi
void bekle(int,int);
void check_inputs();
void setup()
{
for(int i=0;i<6;i++) //Girişler
pinMode(i,INPUT);
for(int k=6;k<12;k++) //Çıkışlar
pinMode(k,OUTPUT);
}
void loop()
{
flag=0;
check_inputs();
switch(flag){
case 1:
led(ON,OFF,OFF,OFF,OFF,OFF);
bekle(1,500);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(1,9999);
break;
case 2:
led(ON,ON,OFF,OFF,OFF,OFF);
bekle(2,500);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(2,2000);
break;
case 3:
led(ON,OFF,OFF,OFF,OFF,OFF);
bekle(3,250);
led(OFF,ON,OFF,OFF,OFF,OFF);
bekle(3,250);
led(OFF,OFF,ON,OFF,OFF,OFF);
bekle(3,250);
led(OFF,OFF,OFF,ON,OFF,OFF);
bekle(3,250);
led(OFF,OFF,OFF,OFF,ON,OFF);
bekle(3,250);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(3,9999);
break;
case 4:
led(OFF,OFF,OFF,ON,OFF,ON);
bekle(4,250);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(4,250);
led(OFF,OFF,ON,OFF,OFF,ON);
bekle(4,250);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(4,250);
led(OFF,OFF,OFF,ON,OFF,ON);
bekle(4,250);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(4,250);
led(OFF,OFF,ON,OFF,OFF,ON);
bekle(4,250);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(4,250);
led(OFF,OFF,OFF,ON,OFF,ON);
bekle(4,250);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(4,250);
led(OFF,OFF,ON,OFF,OFF,ON);
bekle(4,250);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(4,9999);
break;
case 5:
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(5,250);
led(OFF,OFF,OFF,OFF,ON,OFF);
bekle(5,250);
led(OFF,OFF,OFF,ON,OFF,OFF);
bekle(5,250);
led(OFF,OFF,ON,OFF,OFF,OFF);
bekle(5,250);
led(OFF,ON,OFF,OFF,OFF,OFF);
bekle(5,250);
led(ON,OFF,OFF,OFF,OFF,OFF);
bekle(5,250);
led(OFF,OFF,OFF,OFF,OFF,ON);
bekle(5,9999);
break;
case 6:
led(ON,ON,ON,ON,ON,ON);
bekle(6,500);
led(OFF,OFF,OFF,OFF,OFF,OFF);
bekle(6,500);
led(ON,ON,ON,ON,ON,ON);
bekle(6,500);
led(OFF,OFF,OFF,OFF,OFF,OFF);
bekle(6,500);
led(ON,ON,ON,ON,ON,ON);
bekle(6,500);
led(OFF,OFF,OFF,OFF,OFF,OFF);
break;
deafult:
break;
}
}
void led(bool Led1,bool Led2,bool Led3,bool Led4,bool Led5,bool Led6){
digitalWrite(led1,Led1);
digitalWrite(led2,Led2);
digitalWrite(led3,Led3);
digitalWrite(led4,Led4);
digitalWrite(led5,Led5);
digitalWrite(led6,Led6);
}
void bekle(int mflag,int sure){
int isure = 0;
while(isure<sure && flag==mflag){
delay(1);
check_inputs();
isure++;
}
}
void check_inputs(){
int mflag=0;
for(int i=0;i<6;i++)
if(digitalRead(i))
mflag=i+1;
if(mflag != flag && mflag !=0)
flag=mflag;
}
Çok ama çok teşekkür ederim.Sana çözümü söylemeden önce birkaç öneride bulunacağım. Birincisi dijital girişler int değil bool dur yani sayı değil durumdur onları öyle yani onlar high veya low değil −2,147,483,648 ve +2,147,483,647 arasında bir değermiş gibi davranamazsın. İkincisi birbirini tekrar eden işlerde fonksiyon kullanmalısın yoksa hem aletin hafızası dolar hemde boşa hamallık edersin. Üçüncüsü sırayla yapılacak işlerde for döngüsünü çok koşullu işlerde if yerine switch döngüsünü kullanman gerekir. Şimdi senin soruna gelirsek; Anladığım kadarıyla bir butona basıldığında başlanan işi tamamlanmadan diğer buton basılırsa yarıda kesmek istiyorsun. Bunu kesmeyle yapabilirdik ama 6 butona kesme vereeyiz o yüzden belirli aralıklarla butonlara bakmak zorundayız. delay(500) komutu aleti 500ms uyutacağı için butonları göremeyiz onun yerine aleti 500e kadar saydırıp her bir sayıda butonlara baktırmamız gerekir. bunun için bekle() adında bir fonksiyon yazmalıyız. Yazdığın kodu sadeleştirdim bi bakarsın. Derledim ama çalıştırmadım sen deneyip göreceksin. Daha fazla sadeleştirmek mümkün ama anlayamazsın o zaman. Şimdi aşağıdaki kodu incele çalıştır olmayan birşey varsa buraya yaz.
Kod:#define ON true #define OFF false const int led1 = 6; const int led2 = 7; const int led3 = 8; const int led4 = 9; const int led5 = 10; const int led6 = 11; const int buton1 = 0; const int buton2 = 1; const int buton3 = 2; const int buton4 = 3; const int buton5 = 4; const int buton6 = 5; int flag=0; void led(bool,bool,bool,bool,bool,bool);// Led Fonksiyon prototipi void bekle(int,int); void check_inputs(); void setup() { for(int i=0;i<6;i++) //Girişler pinMode(i,INPUT); for(int k=6;k<12;k++) //Çıkışlar pinMode(k,OUTPUT); } void loop() { flag=0; check_inputs(); switch(flag){ case 1: led(ON,OFF,OFF,OFF,OFF,OFF); bekle(1,500); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(1,9999); break; case 2: led(ON,ON,OFF,OFF,OFF,OFF); bekle(2,500); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(2,2000); break; case 3: led(ON,OFF,OFF,OFF,OFF,OFF); bekle(3,250); led(OFF,ON,OFF,OFF,OFF,OFF); bekle(3,250); led(OFF,OFF,ON,OFF,OFF,OFF); bekle(3,250); led(OFF,OFF,OFF,ON,OFF,OFF); bekle(3,250); led(OFF,OFF,OFF,OFF,ON,OFF); bekle(3,250); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(3,9999); break; case 4: led(OFF,OFF,OFF,ON,OFF,ON); bekle(4,250); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(4,250); led(OFF,OFF,ON,OFF,OFF,ON); bekle(4,250); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(4,250); led(OFF,OFF,OFF,ON,OFF,ON); bekle(4,250); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(4,250); led(OFF,OFF,ON,OFF,OFF,ON); bekle(4,250); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(4,250); led(OFF,OFF,OFF,ON,OFF,ON); bekle(4,250); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(4,250); led(OFF,OFF,ON,OFF,OFF,ON); bekle(4,250); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(4,9999); break; case 5: led(OFF,OFF,OFF,OFF,OFF,ON); bekle(5,250); led(OFF,OFF,OFF,OFF,ON,OFF); bekle(5,250); led(OFF,OFF,OFF,ON,OFF,OFF); bekle(5,250); led(OFF,OFF,ON,OFF,OFF,OFF); bekle(5,250); led(OFF,ON,OFF,OFF,OFF,OFF); bekle(5,250); led(ON,OFF,OFF,OFF,OFF,OFF); bekle(5,250); led(OFF,OFF,OFF,OFF,OFF,ON); bekle(5,9999); break; case 6: led(ON,ON,ON,ON,ON,ON); bekle(6,500); led(OFF,OFF,OFF,OFF,OFF,OFF); bekle(6,500); led(ON,ON,ON,ON,ON,ON); bekle(6,500); led(OFF,OFF,OFF,OFF,OFF,OFF); bekle(6,500); led(ON,ON,ON,ON,ON,ON); bekle(6,500); led(OFF,OFF,OFF,OFF,OFF,OFF); break; deafult: break; } } void led(bool Led1,bool Led2,bool Led3,bool Led4,bool Led5,bool Led6){ digitalWrite(led1,Led1); digitalWrite(led2,Led2); digitalWrite(led3,Led3); digitalWrite(led4,Led4); digitalWrite(led5,Led5); digitalWrite(led6,Led6); } void bekle(int mflag,int sure){ int isure = 0; while(isure<sure && flag==mflag){ delay(1); check_inputs(); isure++; } } void check_inputs(){ int mflag=0; for(int i=0;i<6;i++) if(digitalRead(i)) mflag=i+1; if(mflag != flag && mflag !=0) flag=mflag; }
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?