Arduino DC Motor Hız ve Yön Kontrolü Kodu Hata Veriyor

MAKERMED

Yoctopat
Katılım
23 Haziran 2021
Mesajlar
3
Daha fazla  
Cinsiyet
Kadın
Merhabalar, projemde 2 tane DC motorun hızlarını ve belirli bir süre sonra motorun ters yöne hareketini sağlamak istiyorum. Kod hata veriyor, yazımında nerede yanlışlık yapmışım, yardımcı olursanız sevinirim.

Kod:
Const int Enable_A = 9;
Const int Enable_B = 10;
Const int inputA1 = 2;
Const int inputA2 = 3;
Const int inputB1 = 4;
Const int inputB2 = 5;

Void setup()
{
PinMode(Enable_A, OUTPUT);
PinMode(Enable_B, OUTPUT);
PinMode(inputA1, OUTPUT);
PinMode(inputA2, OUTPUT);
PinMode(inputB1, OUTPUT);
PinMode(inputB2, OUTPUT);
}
Void loop()
{
//---- A ve B Cikis olarak etkinlestir------//
DigitalWrite(Enable_A, High);
DigitalWrite(Enable_B, High);
//----------Run motors-----------//
DigitalWrite(inputA1, High);
DigitalWrite(inputA2, Low);
DigitalWrite(inputB1, High);
DigitalWrite(inputB2, Low);
Delay(3000);
//-------Motoru devre disi birak----------//
DigitalWrite(Enable_A, Low);
DigitalWrite(Enable_B, Low);
Delay(3000);
//-------Ters Bağlama----------//
DigitalWrite(Enable_A, High);
DigitalWrite(Enable_B, High);
DigitalWrite(inputA1, Low);
DigitalWrite(inputA2, High);
DigitalWrite(inputB1, Low);
DigitalWrite(inputB2, High);
Delay(3000);
//-------Motor devre disi----------//
DigitalWrite(Enable_A, Low);
DigitalWrite(Enable_B, Low);
Delay(3000);
//----------Hiz yukselt----------//
For(int i = 0; i < 256; i++);
{
AnalogWrite(Enable_A, i);
AnalogWrite(Enable_B, i);
Delay(40);
}
//----------Hiz dusur----------//
For(int j = 256; j > 0; j--);
{
AnalogWrite(Enable_A, j);
AnalogWrite(Enable_B, j);
Delay(40);
}
//-------Motoru devre dışı bırak----------//
DigitalWrite(Enable_A, Low);
DigitalWrite(Enable_B, Low);
Delay(3000);
}
 
Son düzenleyen: Moderatör:
Motor sürücüsü kullanıyor musunuz? Birde hızı arttırırken 40ms gecikme var bu gözlem yapmanıza pek olanak sağlamaz. analogWrite fonksiyonu 0 - 255 arasında değer alır, 256 ile başlatamazsınız. ENA ve ENB pinleri motora iletilicek sinyalin duty cycle belirler. Yani tam güçte (255) %100 ve güç yokken (0) %0. Örnek. Tam güç içinde digitalWrite yerine analogWrite kullanmak daha iyi olabilir. analogWrite kullanabilmek için arduinonun analog pinlerine bağlantı olması gerekir. Motora güç vermeden yön değiştirin. Gördüklerimi düzeltmeye çalıştım. Eğer kod çalışırsa tamam diyip geçmek yerine mutalaka ne yapmaya çalıştığımı anlamaya çalışın.

[CODE lang="c" title="Arduino Simple Motor Control"]Const int Enable_A = 9;
Const int Enable_B = 10;
Const int inputA1 = 2;
Const int inputA2 = 3;
Const int inputB1 = 4;
Const int inputB2 = 5;

Void setup()
{
PinMode(Enable_A, OUTPUT);
PinMode(Enable_B, OUTPUT);
PinMode(inputA1, OUTPUT);
PinMode(inputA2, OUTPUT);
PinMode(inputB1, OUTPUT);
PinMode(inputB2, OUTPUT);
}
Void loop()
{
//---------- Motor Yönleri -----------//
digitalWrite(inputA1, High);
digitalWrite(inputA2, Low);
digitalWrite(inputB1, High);
digitalWrite(inputB2, Low);

//---- A ve B Motora gidecek güç 5V ------//
analogWrite(Enable_A, 255);
analogWrite(Enable_B, 255);
delay(3000);

//-------Motoru devre durdur 0V ----------//
analogWrite(Enable_A, 0);
analogWrite(Enable_B, 0);
delay(3000);

//-------Ters Bağlama----------//
digitalWrite(inputA1, Low);
digitalWrite(inputA2, High);
digitalWrite(inputB1, Low);
digitalWrite(inputB2, High);

//------- Çalıştır ----------//
analogWrite(Enable_A, 255);
analogWrite(Enable_B, 255);
delay(3000);

//-------Motor Durdur ----------//
analogWrite(Enable_A, 0);
analogWrite(Enable_B, 0);
delay(3000);

//----------Hiz yukselt----------//
for(int i = 0; i < 256; i++);
{
analogWrite(Enable_A, i);
analogWrite(Enable_B, i);
delay(40);
}

//----------Hiz dusur----------//
for(int j = 255; j >= 0; j--);
{
analogWrite(Enable_A, j);
analogWrite(Enable_B, j);
delay(40);
}

//-------Motoru durdur ----------//
analogWrite(Enable_A, 0);
analogWrite(Enable_B, 0);
delay(3000);
}[/CODE]
 
Çok teşekkür ederim. Ben dikkat etmemişim 256 değerine. Dediklerinizi anladım. Yeni başlıyorum böyle projeler yapmaya, yardımcı olursanız çok sevinirim. Şimdi de şöyle bir hata veriyor. Bunu nasıl düzeltebilirim?

Const int Enable_A = 9;
Const int Enable_B = 10;
Const int inputA1 = 2;
Const int inputA2 = 3;
Const int inputB1 = 4;
Const int inputB2 = 5;

Void setup()
{
PinMode(Enable_A, OUTPUT);
PinMode(Enable_B, OUTPUT);
PinMode(inputA1, OUTPUT);
PinMode(inputA2, OUTPUT);
PinMode(inputB1, OUTPUT);
PinMode(inputB2, OUTPUT);
}
Void loop()
{
//---------- Motor Yönleri -----------//
DigitalWrite(inputA1, High);
DigitalWrite(inputA2, Low);
DigitalWrite(inputB1, High);
DigitalWrite(inputB2, Low);

//---- A ve B Motora gidecek güç 5V ------//
AnalogWrite(Enable_A, 255);
AnalogWrite(Enable_B, 255);
Delay(3000);

//-------Motoru devre durdur 0V ----------//
AnalogWrite(Enable_A, 0);
AnalogWrite(Enable_B, 0);
Delay(3000);

//-------Ters Bağlama----------//
DigitalWrite(inputA1, Low);
DigitalWrite(inputA2, High);
DigitalWrite(inputB1, Low);
DigitalWrite(inputB2, High);

//------- Çalıştır ----------//
AnalogWrite(Enable_A, 255);
AnalogWrite(Enable_B, 255);
Delay(3000);

//-------Motor Durdur ----------//
AnalogWrite(Enable_A, 0);
AnalogWrite(Enable_B, 0);
Delay(3000);

//----------Hiz yukselt----------//
For(int i = 0; i < 256; i++);
{
AnalogWrite(Enable_A, i);
AnalogWrite(Enable_B, i);
Delay(40);
}

//----------Hiz dusur----------//
For(int j = 255; j >= 0; j--);
{
AnalogWrite(Enable_A, j);
AnalogWrite(Enable_B, j);
Delay(40);
}

//-------Motoru durdur ----------//
AnalogWrite(Enable_A, 0);
AnalogWrite(Enable_B, 0);
Delay(3000);
}

Arduino:1.8.2 (Windows 10), Kart:"Arduino/Genuino UNO"

Sketch_jun24a:1: error: 'Const' does not name a type

Const int Enable_A = 9;

^

Sketch_jun24a:2: error: 'Const' does not name a type

Const int Enable_B = 10;

^

Sketch_jun24a:3: error: 'Const' does not name a type

Const int inputA1 = 2;

^

Sketch_jun24a:4: error: 'Const' does not name a type

Const int inputA2 = 3;

^

Sketch_jun24a:5: error: 'Const' does not name a type

Const int inputB1 = 4;

^

Sketch_jun24a:6: error: 'Const' does not name a type

Const int inputB2 = 5;

^

Sketch_jun24a:8: error: 'Void' does not name a type

Void setup()

^

Sketch_jun24a:17: error: 'Void' does not name a type

Void loop()

^

Sketch_jun24a:8: error: 'Void' does not name a type

Void setup()

^

Sketch_jun24a:17: error: 'Void' does not name a type

Void loop()

^

Exit status 1
'Const' does not name a type

This report would have more information with
"Show verbose output during compilation"
Option enabled in File -> Preferences.
 
DigitalWrite, Delay, ... hepsinin başı büyük yazılmış. Buradan bakabilirsin. Fonksiyonları yanı sıra Void, For, Const bunlarda büyükle başlamış. Önceki paylaştığım kodda gördüklerimi düzeltmiştim ama bir kısmı dikkatimden kaçmış. Çıktıda ki hatalar tanımlı olmadığı için var, void ve const olarak değiştirirsen düzelecektir.
[CODE lang="c" title="Arduino Simple Motor Control"]const int Enable_A = 9;
const int Enable_B = 10;
const int inputA1 = 2;
const int inputA2 = 3;
const int inputB1 = 4;
const int inputB2 = 5;

void setup()
{
pinMode(Enable_A, OUTPUT);
pinMode(Enable_B, OUTPUT);
pinMode(inputA1, OUTPUT);
pinMode(inputA2, OUTPUT);
pinMode(inputB1, OUTPUT);
pinMode(inputB2, OUTPUT);
}
void loop()
{
//---------- Motor Yönleri -----------//
digitalWrite(inputA1, High);
digitalWrite(inputA2, Low);
digitalWrite(inputB1, High);
digitalWrite(inputB2, Low);

//---- A ve B Motora gidecek güç 5V ------//
analogWrite(Enable_A, 255);
analogWrite(Enable_B, 255);
delay(3000);

//-------Motoru devre durdur 0V ----------//
analogWrite(Enable_A, 0);
analogWrite(Enable_B, 0);
delay(3000);

//-------Ters Bağlama----------//
digitalWrite(inputA1, Low);
digitalWrite(inputA2, High);
digitalWrite(inputB1, Low);
digitalWrite(inputB2, High);

//------- Çalıştır ----------//
analogWrite(Enable_A, 255);
analogWrite(Enable_B, 255);
delay(3000);

//-------Motor Durdur ----------//
analogWrite(Enable_A, 0);
analogWrite(Enable_B, 0);
delay(3000);

//----------Hiz yukselt----------//
for(int i = 0; i < 256; i++);
{
analogWrite(Enable_A, i);
analogWrite(Enable_B, i);
delay(40);
}

//----------Hiz dusur----------//
for(int j = 255; j >= 0; j--);
{
analogWrite(Enable_A, j);
analogWrite(Enable_B, j);
delay(40);
}

//-------Motoru durdur ----------//
analogWrite(Enable_A, 0);
analogWrite(Enable_B, 0);
delay(3000);
}[/CODE]
 
Tekrardan teşekkürler. Şimdi de for için hata veriyor.

Arduino:1.8.9 (Windows 8), Kart:"Arduino Uno"

sketch_jun22c:54:3: error: expected unqualified-id before 'for'

for(int i = 0; i < 255; i++)

^~~

sketch_jun22c:54:18: error: 'i' does not name a type

for(int i = 0; i < 255; i++)

^

sketch_jun22c:54:27: error: 'i' does not name a type

for(int i = 0; i < 255; i++)

^

sketch_jun22c:63:2: error: expected unqualified-id before 'for'

for(int i = 255; i>=0; --i) ;

^~~

sketch_jun22c:63:19: error: 'i' does not name a type

for(int i = 255; i>=0; --i) ;

^

sketch_jun22c:63:25: error: expected unqualified-id before '--' token

for(int i = 255; i>=0; --i) ;

^~

sketch_jun22c:64:1: error: expected unqualified-id before '{' token

{

^

sketch_jun22c:72:16: error: expected constructor, destructor, or type conversion before '(' token

analogWrite(Enable_A, 0);

^

sketch_jun22c:73:16: error: expected constructor, destructor, or type conversion before '(' token

analogWrite(Enable_B, 0);

^

sketch_jun22c:74:10: error: expected constructor, destructor, or type conversion before '(' token

delay(3000);

^

sketch_jun22c:75:1: error: expected declaration before '}' token

}

^

exit status 1
expected unqualified-id before 'for'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
 

Yeni konular

Geri
Yukarı