Çö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;


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);
}
 
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.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…