Çözüldü Arduino kodunda "else without a previous 'if' "hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
5 Kasım 2020
Mesajlar
1.328
Makaleler
5
Çözümler
4
Yer
UAE
Daha fazla  
Sistem Özellikleri
Sistem: İ7 11.Nesil / Nvidia GeForce RTX 3060 Ventus 2X 12GB VRAM / 16 GB RAM / 512 GB SSD + 1 TB HDD /
Cinsiyet
Diğer
Meslek
Öğrencilik
Proje;
1678536422133.png


Proje amacı;
Potansiyometre ile servo motorunu hareket ettirip, hareketi anlayan LED çalışınca buzzer'dan ses çıkarmak.


Kod;
Kod:
#include <Servo.h>

Servo motor;


int buzzer =12;
int led=8;
int pot= A0;
int potdeger;

void setup()
{
  motor.attach(9);
  pinMode(led, OUTPUT);
  pinMode(buzzer, OUTPUT);
}

void loop()
{
  if (potdeger>1){
     digitalWrite (led, HIGH);}
  if (led == HIGH);
  {
    digitalWrite (buzzer, HIGH);
  }
   else {
     digitalWrite (buzzer, LOW);
     digitalWrite (led, LOW);}
   potdeger= analogRead(pot);
   potdeger= map(potdeger, 0, 1023, 0, 180);
   motor.write(potdeger);
}

Hatayı else kodunun orada buluyor ve "else without a previous 'if' " mesajını veriyor. Ama kod üzerinde gördüğünüz gibi "if" kullandım. Hata nerededir ve bana ne demek istiyor?
 
Çözüm
Hocam merhaba. Tekrar karşılaştık. :) hocam C++ programlama dilinde birden fazla "if" olacak sa 1.den sonraki olasılıklar "else if" şeklinde yazılmalıdır sanırım hatanız orada.
Kodun düzeltilmiş hali:

C++:
#include <Servo.h>

Servo motor;

int buzzer =12;
int led=8;
int pot= A0;
int potdeger;

void setup()
{
 motor.attach(9);
 pinMode(led, OUTPUT);
 pinMode(buzzer, OUTPUT);
}

void loop()
{
 if (potdeger>1){
 digitalWrite (led, HIGH);}
 else if (led == HIGH)
 {
 digitalWrite (buzzer, HIGH);
 }
 else {
 digitalWrite (buzzer, LOW);
 digitalWrite (led, LOW);}
 potdeger= analogRead(pot);
 potdeger= map(potdeger, 0, 1023, 0, 180);
 motor.write(potdeger);
}

Kodun düzeltilmiş hali dediğimde sadece 2. "if" i "else if" yaptık o kadar. Bir de ";" koymuşsunuz "if" sonuna onu düzelttik deneyin bakalım olacak mı?
Hocam merhaba. Tekrar karşılaştık. :) hocam C++ programlama dilinde birden fazla "if" olacak sa 1.den sonraki olasılıklar "else if" şeklinde yazılmalıdır sanırım hatanız orada.
Kodun düzeltilmiş hali:

C++:
#include <Servo.h>

Servo motor;

int buzzer =12;
int led=8;
int pot= A0;
int potdeger;

void setup()
{
 motor.attach(9);
 pinMode(led, OUTPUT);
 pinMode(buzzer, OUTPUT);
}

void loop()
{
 if (potdeger>1){
 digitalWrite (led, HIGH);}
 else if (led == HIGH)
 {
 digitalWrite (buzzer, HIGH);
 }
 else {
 digitalWrite (buzzer, LOW);
 digitalWrite (led, LOW);}
 potdeger= analogRead(pot);
 potdeger= map(potdeger, 0, 1023, 0, 180);
 motor.write(potdeger);
}

Kodun düzeltilmiş hali dediğimde sadece 2. "if" i "else if" yaptık o kadar. Bir de ";" koymuşsunuz "if" sonuna onu düzelttik deneyin bakalım olacak mı?
 
Son düzenleyen: Moderatör:
Çözüm
void loop()
{
if (potdeger>1){
digitalWrite (led, HIGH);}
if (led == HIGH); ---------------------> HATA BURADA ; atmışsın "if" sorgusuna
{
digitalWrite (buzzer, HIGH);
}
else {
digitalWrite (buzzer, LOW);
digitalWrite (led, LOW);}
potdeger= analogRead(pot);
potdeger= map(potdeger, 0, 1023, 0, 180);
motor.write(potdeger);
}
 
Hocam merhaba. Tekrar karşılaştık. :) hocam C++ programlama dilinde birden fazla "if" olacak sa 1.den sonraki olasılıklar "else if" şeklinde yazılmalıdır sanırım hatanız orada.
Kodun düzeltilmiş hali:

C++:
#include <Servo.h>

Servo motor;

int buzzer =12;
int led=8;
int pot= A0;
int potdeger;

void setup()
{
 motor.attach(9);
 pinMode(led, OUTPUT);
 pinMode(buzzer, OUTPUT);
}

void loop()
{
 if (potdeger>1){
 digitalWrite (led, HIGH);}
 else if (led == HIGH)
 {
 digitalWrite (buzzer, HIGH);
 }
 else {
 digitalWrite (buzzer, LOW);
 digitalWrite (led, LOW);}
 potdeger= analogRead(pot);
 potdeger= map(potdeger, 0, 1023, 0, 180);
 motor.write(potdeger);
}

Kodun düzeltilmiş hali dediğimde sadece 2. "if" i "else if" yaptık o kadar. Bir de ";" koymuşsunuz "if" sonuna onu düzelttik deneyin bakalım olacak mı?
Evet ya yeniden karsilastik. 🤣. Verdiginiz kodu değiştirdim (değiştiremedim) denedim ama nerede hata yaptigimi bulamadim. Yardiminiz icin tekrardan tesekkur ediyorum. Deneyeceğim birazdan.
 
😂 Hocam düzelttiğim taraf burası:

C++:
void loop()
{
 if (potdeger>1){
 digitalWrite (led, HIGH);}
 else if (led == HIGH)
 {

Sizin yazdığınız ise:

C++:
 if (led == HIGH);
 {
 digitalWrite (buzzer, HIGH);
 }

Bu ekildeydi. İyi günler :)
 
@Silinen üye Hocam denedim kodu çalıştı. Çok teşekkür ederim. İyi günler. Mesajınızı çözüm olarak işaretleyeceğim.
 

Technopat Haberler

Geri
Yukarı