Çözüldü Arduino'nun serial monitördeki veriyi sonsuza kadar yazması nasıl engellenir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Emir2507

Decapat
Katılım
25 Nisan 2020
Mesajlar
66
Merhaba. Arduino'da Serial monitöre bir veri yazdırmaya çalıştığımda veriyi sonsuza kadar yazıyor. Örneğin;

int ldrr = A3; void setup() { Serial.begin(9600); } void loop() { int ldd = analogRead(ldrr); if (ldd>250){ Serial.println("Lamba açık"); Serial.print(ldd); } else{ Serial.println("Lamba kapalı"); Serial.print(ldd); } }

Yukarıdaki kodda ldr sensörün değeri 250 den büyükse Serial ekrana " Lamba açık " yazısı yazılıyor. değer 250 den büyük olduğu sürece sürekli " Lamba açık " yazmaya devam ediyor. Bu nasıl engellenir ? Sadece bir kez yazsın ve dursun. Yani Lamba açık ise bir kez Lamba açık yazacak Lamba kapalı ise bir kez Lamba kapalı yazacak. Bu nasıl yapılabilir ?
 
Son düzenleyen: Moderatör:
Çözüm
@Emir2507 if'leri sadeleştirebilirsin. Ben anlaşılsın diye şu şekilde yaptım.
[CODE lang="cpp" title="Kod"]bool state = false;
int ldrr = A3;

void setup()
{
Serial.begin(9600);
pinMode(ldrr, INPUT);
}

void loop()
{
int ldd = analogRead(ldrr);

if (ldd > 250)
{
if(state == false)
{
state = true;
Serial.println("Lamba acik");
Serial.println(ldd);
}
}

else
{
if(state == true)
{
state = false;
Serial.println("Lamba kapali");
Serial.println(ldd);
}
}
delay(10);
}[/CODE]
Merhaba. Arduino'da Serial monitöre bir veri yazdırmaya çalıştığımda veriyi sonsuza kadar yazıyor. Örneğin;

int ldrr = A3; void setup() { Serial.begin(9600); } void loop() { int ldd = analogRead(ldrr); if (ldd>250){ Serial.println("Lamba açık"); Serial.print(ldd); } else{ Serial.println("Lamba kapalı"); Serial.print(ldd); } }

Yukarıdaki kodda ldr sensörün değeri 250 den büyükse Serial ekrana " Lamba açık " yazısı yazılıyor. değer 250 den büyük olduğu sürece sürekli " Lamba açık " yazmaya devam ediyor. Bu nasıl engellenir ? Sadece bir kez yazsın ve dursun. Yani Lamba açık ise bir kez Lamba açık yazacak Lamba kapalı ise bir kez Lamba kapalı yazacak. Bu nasıl yapılabilir ?
Anladığım kadarıyla sadece durumu değiştiğinde bir kere yazmasını istiyorsun. Doğru mu?
 
Alternatif yolu var hocam. 1 dakika lütfen.
Öncelikle gelendeğer diye birşey tanımlayın. Bunun değeri başlangıçta 0 olsun. Eğer ışık yanıyorsa gelendeğeri 1 yapsın. Eğer gelendeğer 1 ise seri mönitöre "ışık yandı" yazsın. Eğer bu ifadeyi yazdıysa gelendeğeri 0 yapsın. Eğer ışık kapalı ise gelendeğeri 2 yapsın. Gelendeğer 2 ise "ışık kapalı" yazsın. Eğer bu ifadeyi yazdıysa gelendeğeri 0 yapsın. Bu kodu bi yarışma için üretmiştim ve çalışmıştı. Eğer yapamazsanız birincil yolla kodu paylaşmadan yardım edebilirim.
 
Öncelikle gelendeğer diye birşey tanımlayın. Bunun değeri başlangıçta 0 olsun. Eğer ışık yanıyorsa gelendeğeri 1 yapsın. Eğer gelendeğer 1 ise seri mönitöre "ışık yandı" yazsın. Eğer bu ifadeyi yazdıysa gelendeğeri 0 yapsın. Eğer ışık kapalı ise gelendeğeri 2 yapsın. Gelendeğer 2 ise "ışık kapalı" yazsın. Bu kodu bi yarışma için üretmiştim ve çalışmıştı. Eğer yapamazsanız birincil yolla kodu paylaşmadan yardım edebilirim.
Teşekkür ederim. Mantıklı bir yöntem fakat bunu kod kısmına nasıl yazabilirim bilmiyorum. Ben kodu bu yazıda paylaştım onun üzerine siz yazabilir misiniz ?
Döngü dışında bulunan Flag değişkeni ile sadece State değiştiği zaman işlem yapabilirsiniz.
Bu kadar bilgim yok daha yeniyim diyebilirim. Bunu yapan bir video var ise paylaşabilir misiniz ?
 
Teşekkür ederim. Mantıklı bir yöntem fakat bunu kod kısmına nasıl yazabilirim bilmiyorum. Ben kodu bu yazıda paylaştım onun üzerine siz yazabilir misiniz ?

Bu kadar bilgim yok daha yeniyim diyebilirim. Bunu yapan bir video var ise paylaşabilir misiniz ?
Video yok diye hatırlıyorum. Kodunuza aktarabilirim fakat bunun bir anlamı kalmaz çünkü eğer kavrayabilirseniz güzel ve kullanışlı bir yöntem. Bunu deneme-yanılma yolu ile yapabilirsiniz.
 
Video yok diye hatırlıyorum. Kodunuza aktarabilirim fakat bunun bir anlamı kalmaz çünkü eğer kavrayabilirseniz güzel ve kullanışlı bir yöntem. Bunu deneme-yanılma yolu ile yapabilirsiniz.
Üzerinde durup saatlerce düşünmek isterim daha iyi bir öğrenme olur fakat bunun için zamanım yok. Yarın bu sistemi hazır hale getirmeliyim. Bir mekanik sisteme dahil edilecek yarına kadar yapamazsam diğer mekanik hesaplamalar için zaman kalmayacak :(
 
@Emir2507 if'leri sadeleştirebilirsin. Ben anlaşılsın diye şu şekilde yaptım.
[CODE lang="cpp" title="Kod"]bool state = false;
int ldrr = A3;

void setup()
{
Serial.begin(9600);
pinMode(ldrr, INPUT);
}

void loop()
{
int ldd = analogRead(ldrr);

if (ldd > 250)
{
if(state == false)
{
state = true;
Serial.println("Lamba acik");
Serial.println(ldd);
}
}

else
{
if(state == true)
{
state = false;
Serial.println("Lamba kapali");
Serial.println(ldd);
}
}
delay(10);
}[/CODE]
 
Çözüm
@Emir2507 if'leri sadeleştirebilirsin. Ben anlaşılsın diye şu şekilde yaptım.
[CODE lang="cpp" title="Kod"]bool state = false;
int ldrr = A3;

void setup()
{
Serial.begin(9600);
pinMode(ldrr, INPUT);
}

void loop()
{
int ldd = analogRead(ldrr);

if (ldd > 250)
{
if(state == false)
{
state = true;
Serial.println("Lamba acik");
Serial.println(ldd);
}
}

else
{
if(state == true)
{
state = false;
Serial.println("Lamba kapali");
Serial.println(ldd);
}
}
delay(10);
}[/CODE]
Çalıştı. Yardımların için çok teşekkür ederim.
 

Technopat Haberler

Yeni konular

Geri
Yukarı