Çözüldü Arduino 17. ve 31. satırlarda hata veriyor

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

Mk44

Centipat
Katılım
10 Mayıs 2022
Mesajlar
48
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Merhaba. Aşağıdaki kodda 17 ve 31. satırlarda hata veriyor. Yardımcı olabilirseniz sevinirim.

[CODE lang="cpp" title="Çizgi İzleyen" highlight="17 ve 31"]#include <QTRSensors.h>

#define Kp 0.05 // experiment to determine this, start by something small that just makes your bot follow the line at a slow speed
#define Kd 2


// experiment to determine this, slowly increase the speeds and adjust this value. ( Note: Kp < Kd)
#define rightMaxSpeed 200
#define leftMaxSpeed 200
#define rightBaseSpeed 150
#define leftBaseSpeed 150
#define NUM_SENSORS 8
#define TIMEOUT 2500
#define EMITTER_PIN 2


QTRSensorsAnalog qtra((unsigned char[]) { A0, A1, A2, A3, A4, A5, A6, A7} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);

unsigned int sensorValues[NUM_SENSORS];

void setup()
{



/* comment this part out for automatic calibration
if ( i < 25 || i >= 75 ) // turn to the left and right to expose the sensors to the brightest and darkest readings that may be encountered
turn_right();
else
turn_left(); */
qtra.calibrate(QTR_EMITTERS_ON);
delay(20);

delay(10000);

/* comment out for serial printing

Serial.begin(9600);
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMinimumOn);
Serial.print(' ');
}
Serial.println();

for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMaximumOn);
Serial.print(' ');
}
Serial.println();
Serial.println();
*/
}

int lastError = 0;

void loop()
{
unsigned int sensors[8];
int position = qtra.readLine(sensors);
int error = position - 3500;

int motorSpeed = Kp * error + Kd * (error - lastError);
lastError = error;

int rightMotorSpeed = rightBaseSpeed + motorSpeed;
int leftMotorSpeed = leftBaseSpeed - motorSpeed;

if (rightMotorSpeed > rightMaxSpeed ) rightMotorSpeed = rightMaxSpeed;
if (leftMotorSpeed > leftMaxSpeed ) leftMotorSpeed = leftMaxSpeed;
if (rightMotorSpeed < 0) rightMotorSpeed = 0;
if (leftMotorSpeed < 0) leftMotorSpeed = 0;

}[/CODE]
 
Çözüm
17. satırdaki analog yazısını silin düzelmesi lazım.

Bu sefer de yine aynı satırdaki qtra ya hatalı diyor.
Arkadaşlar eğer bu durumda sorunu çözemediyseniz ve kod tamamen doğruysa kütüphane ayarlarından 3.0.1 versiyonunu yükleyin sorun çözülür.
C++:
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:17:1: error: 'QTRSensorsAnalog' does not name a type; did you mean 'QTRSensors'?
 QTRSensorsAnalog qtra((unsigned char[]) {  A0, A1, A2, A3, A4, A5, A6, A7} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
 ^~~~~~~~~~~~~~~~
 QTRSensors
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:17:76: error: expected unqualified-id before ',' token
 QTRSensorsAnalog qtra((unsigned char[]) {  A0, A1, A2, A3, A4, A5, A6, A7} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
                                                                            ^
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:12:22: error: expected unqualified-id before numeric constant
 #define NUM_SENSORS  8
                      ^
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:17:77: note: in expansion of macro 'NUM_SENSORS'
 QTRSensorsAnalog qtra((unsigned char[]) {  A0, A1, A2, A3, A4, A5, A6, A7} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
                                                                             ^~~~~~~~~~~
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino: In function 'void setup()':
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:31:4: error: 'qtra' was not declared in this scope
    qtra.calibrate(QTR_EMITTERS_ON);
    ^~~~
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:31:4: note: suggested alternative: 'utoa'
    qtra.calibrate(QTR_EMITTERS_ON);
    ^~~~
    utoa
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:31:19: error: 'QTR_EMITTERS_ON' was not declared in this scope
    qtra.calibrate(QTR_EMITTERS_ON);
                   ^~~~~~~~~~~~~~~
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:31:19: note: suggested alternative: 'EMITTER_PIN'
    qtra.calibrate(QTR_EMITTERS_ON);
                   ^~~~~~~~~~~~~~~
                   EMITTER_PIN
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino: In function 'void loop()':
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:61:18: error: 'qtra' was not declared in this scope
   int position = qtra.readLine(sensors);
                  ^~~~
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:61:18: note: suggested alternative: 'utoa'
   int position = qtra.readLine(sensors);
                  ^~~~
                  utoa

Compilation error: exit status 1
Başka yerlerden de baktım hata yok gibi anlamadım hatayı.
 
Son düzenleme:
C++:
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:17:1: error: 'QTRSensorsAnalog' does not name a type; did you mean 'QTRSensors'?
 QTRSensorsAnalog qtra((unsigned char[]) { A0, A1, A2, A3, A4, A5, A6, A7} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
 ^~~~~~~~~~~~~~~~
 QTRSensors.
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:17:76: error: expected unqualified-id before ',' token.
 QTRSensorsAnalog qtra((unsigned char[]) { A0, A1, A2, A3, A4, A5, A6, A7} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
 ^
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:12:22: error: expected unqualified-id before numeric constant.
 #define NUM_SENSORS 8
 ^
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:17:77: note: in expansion of macro 'NUM_SENSORS'.
 QTRSensorsAnalog qtra((unsigned char[]) { A0, A1, A2, A3, A4, A5, A6, A7} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
 ^~~~~~~~~~~
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino: In function 'void setup()':
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:31:4: error: 'qtra' was not declared in this scope.
 qtra.calibrate(QTR_EMITTERS_ON);
 ^~~~
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:31:4: note: suggested alternative: 'utoa'.
 qtra.calibrate(QTR_EMITTERS_ON);
 ^~~~
 utoa.
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:31:19: error: 'QTR_EMITTERS_ON' was not declared in this scope.
 qtra.calibrate(QTR_EMITTERS_ON);
 ^~~~~~~~~~~~~~~
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:31:19: note: suggested alternative: 'EMITTER_PIN'.
 qtra.calibrate(QTR_EMITTERS_ON);
 ^~~~~~~~~~~~~~~
 EMITTER_PIN.
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino: In function 'void loop()':
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:61:18: error: 'qtra' was not declared in this scope.
 int position = qtra.readLine(sensors);
 ^~~~
F:\Kemanke__Robot_Arduino\Kemanke__Robot_Arduino.ino:61:18: note: suggested alternative: 'utoa'.
 int position = qtra.readLine(sensors);
 ^~~~
 utoa.

Compilation error: exit status 1
Başka yerlerden de baktım hata yok gibi anlamadım hatayı.

17. satırdaki analog yazısını silin düzelmesi lazım.
 
17. satırdaki analog yazısını silin düzelmesi lazım.

Bu sefer de yine aynı satırdaki qtra ya hatalı diyor.
Arkadaşlar eğer bu durumda sorunu çözemediyseniz ve kod tamamen doğruysa kütüphane ayarlarından 3.0.1 versiyonunu yükleyin sorun çözülür.
 
Son düzenleme:
Çözüm

Geri
Yukarı