Arduino'da koda nasıl döngüye sokulur?

TonBaligi55

Hectopat
Katılım
16 Kasım 2018
Mesajlar
274
Çözümler
2
Başlık pek iyi olmamış olabilir ama sorunum şu; küçük bir proje yapıyorum ledler ile. Gönderilen veriye göre ilgili kod çalışacak. Ledlere yaptığım bazı modlar var fakat değeri bir sefer gönderince bir sefer çalışıyor hâliyle. Benim istediğim şey şu, başka değer gelene kadar gönderdiğim değerin işlevde olması. Bir türlü beceremedim. Yardımcı olursanız sevinirim.

Kodun bir kısmı;
[CODE title="Kod" highlight="56-84"]int b1 = 2;
int b2 = 3;
int b3 = 4;

int k1 = 5;
int k2 = 6;
int k3 = 7;

int m1 = 8;
int m2 = 9;
int m3 = 10;

#define delay1 250
#define delay2 450
#define delay3 750

void setup() {
pinMode(b1, OUTPUT);
pinMode(b2, OUTPUT);
pinMode(b3, OUTPUT);

pinMode(k1, OUTPUT);
pinMode(k2, OUTPUT);
pinMode(k3, OUTPUT);

pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(m3, OUTPUT);

Serial.begin(9600);
}

void loop()
{
if (Serial.available() > 0)
{
char gelen_bilgi = Serial.read();
if (gelen_bilgi == '0')
{
digitalWrite(b1, LOW);
digitalWrite(b2, LOW);
digitalWrite(b3, LOW);

digitalWrite(k1, LOW);
digitalWrite(k2, LOW);
digitalWrite(k3, LOW);

digitalWrite(m1, LOW);
digitalWrite(m2, LOW);
digitalWrite(m3, LOW);

Serial.println("Ledler Söndü");
}


else if (gelen_bilgi == 't')
{
digitalWrite(b1, LOW);
digitalWrite(b2, LOW);
digitalWrite(b3, LOW);

digitalWrite(k1, LOW);
digitalWrite(k2, LOW);
digitalWrite(k3, LOW);

digitalWrite(m1, LOW);
digitalWrite(m2, LOW);
digitalWrite(m3, LOW);

digitalWrite(b1, HIGH);
delay(delay2);
digitalWrite(b2, HIGH);
delay(delay2);
digitalWrite(b3, HIGH);
delay(delay2);
digitalWrite(b3, LOW);
delay(delay2);
digitalWrite(b2, LOW);
delay(delay2);
digitalWrite(b1, LOW);
delay(delay2);

Serial.println("Beyaz Mod 2");
}

delay(100);
}
}[/CODE]
 
While (1) diyerek loop'a alabilirsin. İstediğin değer gelince loop'tan çıkması için de if ve break kullanırsın
Sağ olun. Deneyip geri dönüş yapacağım.
@Camila , Hocam dediğiniz işlem ile döngüye sokabildim fakat çıkışını yapamadım. Yardımcı olabilir misiniz.
Adsız.png
 
Son düzenleme:
Öyle yaptığımda kod bir kez çalışıp döngüden çıkıyor ellemediğim halde. Yani ilk halinden farksız oluyor.
Ben de çok detaylı bilmiyorum C ve Arduino'yu. İnternetten While loop break diye araştırırsanız daha iyi olur.
Büyük ihtimalle aynı değişkeni kullandığınız için bir kere kalıyor loop'ta. Çünkü gelenbilgi==g istediğiniz değerde ise üstteki if'e giriyor, while içinde değişmediğinden break komutu da çalışıyor.
 
Ben de çok detaylı bilmiyorum C ve Arduino'yu. İnternetten While loop break diye araştırırsanız daha iyi olur.
Büyük ihtimalle aynı değişkeni kullandığınız için bir kere kalıyor loop'ta. Çünkü gelenbilgi==g istediğiniz değerde ise üstteki if'e giriyor, while içinde değişmediğinden break komutu da çalışıyor.
Peki, vakit ayırdığınız için teşekkürler. Sorunum çözülürse konu altına eklerim.
Edindiğim bilgiler ile küçük bir beyin fırtınası yaparak bir çözüme ulaştım. Kod tarafındaki eksikliği şu işlemi yaparak kapattım:
Adsız.png
Kırmızı ile işaretli kısım eksik olduğundan dolayı sorun yaşıyormuşuz. While döngüsü içine serial haberleşmeden veri alacak kısım. Alttaki satırda yazdığı gibi, ! değeri geldiği zaman döngü sona eriyor.
Ayrıca bu projede asıl amaçladığım şey, Arduino ile C# arasında bağlantı kurmaktı. O yüzden C# üzerinden bir form uygulaması yapmıştım. Oraya da belirttiğim gibi bir kutucuk ekleyip ! değerini göndermesini yazacağım. Ve böylelikle döngü içinden çıkıp diğer modları kullanabiliyor olacağım.
Adsız2.png
 
Son düzenleme:

Geri
Yukarı