Arduino BUTON komutu

Başlatan dex25, 14 Aralık 2014, 15:38:05

dex25

 
pinMode(buton1,INPUT); 
  pinMode(buton2,INPUT); 
  pinMode(buton3,INPUT);
  pinMode(buton4,INPUT); 
   butondeger1=digitalRead(buton1);
  butondeger2 =digitalRead(buton2);
  butondeger3 =digitalRead(buton3);
  butondeger4 =digitalRead(buton4);
while(butondeger1 ==HIGH){
while(butondeger2 ==HIGH){
while(butondeger3 ==HIGH){
while(butondeger4 ==HIGH){

merhaba arkadaşlar burda buton1 basınca 1. döngüye, buton2 basınca 2. döngüye,buton3 basınca 3. döngüye,, buton4 basınca 4. döngüye giriyor.buton1'e basılıp onun  döngüsündeyken buton 2 ye basılırsa buton 2deki döngüye girmesini nasıl sağlarım.buton1deki döngüdeyken diğer butonlara basınca görmüyor diğer butonları.

Gökhan BEKEN

while'in içinde yeniden okumazsan butondeger1 değişkenin değeri asla değişmez.
Bu şekilde yaparsan elini çektiğin anda çıkar:
while(butondeger1 ==HIGH){
     butondeger1=digitalRead(buton1);
}
Özel mesaj okumuyorum, lütfen göndermeyin.

Kabil ATICI

#2
void setup() {
  // put your setup code here, to run once:
pinMode(buton1,INPUT); 
  pinMode(buton2,INPUT); 
  pinMode(buton3,INPUT);
  pinMode(buton4,INPUT); 
}

void loop() {
  // put your main code here, to run repeatedly:
buton_bak();
while(butondeger1 ==HIGH)
{
  buton_bak();
while(butondeger2 ==HIGH){
  buton_bak();
while(butondeger3 ==HIGH){
  buton_bak();
while(butondeger4 ==HIGH){
 //artık burada ne yapacaksan...
  }}}}

}

void buton_bak()
{
  butondeger1=digitalRead(buton1);
  butondeger2 =digitalRead(buton2);
  butondeger3 =digitalRead(buton3);
  butondeger4 =digitalRead(buton4);
  }


Burada ne yapmaya çalışıyorsun. Asıl önemli olanı o. Eğer şifreli kilit gibi bir şey ise o zaman değişkenlere veya diziye atamak sonra o değişkenleri kontrol etmek daha kolay olur.
Eğer while döngüsü içinden çıkaracak bir komut eklemezsen döngün orada takılı kalır ki  devre sıfırlanana kadar öyle kalır.

Ek: Tabii senin değişkenleri belirlemiş olduğun varsayarak...
ambar7

Gökhan BEKEN

Ek olarak:
Önce dili öğrenmek lazım orda işlemci gibi düşünebilmek lazım. Bu while'a girdik de neden çıkıyım ki diyor? İşlemci'ye empati yapamadıkça daha çok sorun yaşarsınız. Siz işlemci olsaydınız o while'dan çıkar mıydınız?
Özel mesaj okumuyorum, lütfen göndermeyin.

Kabil ATICI

16MHZ'de at koşturuyorum. Kim tutar be!. Bir kıçıkırık While döngüsü mü? Goto (ASM) ile yapımış olsaydı, düşünürdüm... 

Öyle dedik de, şimdi derleyici oraya şimdi kimbilir ne gömer...
ambar7

dex25

4 farkli şekilde step motor döndürüyom.onun komutları var.diğer butona basınca onun döngüsüne geçmesini istiyorum.butonun tekine tıklayınca o dögüdeki komutları bitirmeden diğerlerini görmüyor.

Kabil ATICI

#6
real time sistem hikayesi burada işin içine giriyor.
Bu işi o zaman butonlara döngülere sokmadan yap.
Motorların hızı değişmiyorsa, motor döndürme işini timer'a yükle. Her timer kesmesinde motor veya motorlar 1 tık dönsün. Hatta döndürme işini timer içinde değil ana döngüde yaptır.
Butonlarsa sadece if ile buton basıldığını algıla  ve aç/kapa için ana döngüde motor döndürmek için değişken ataması yap.
ambar7