Informatică, întrebare adresată de edymocanu, 8 ani în urmă

LA CODUL ACESTA ***
#include <ArduinoRobot.h>#include <Arduino_LCD.h>#include <Compass.h>#include <EasyTransfer2.h>#include <EEPROM_I2C.h>#include <Fat16.h>#include <Fat16Config.h>#include <Fat16mainpage.h>#include <Fat16util.h>#include <FatStructs.h>#include <Multiplexer.h>#include <SdCard.h>#include <SdInfo.h>#include <Squawk.h>#include <SquawkSD.h> int lastError = 0;
int MOTOR_DREAPTA_PIN1=3;
int MOTOR_DREAPTA_PIN2=5;
int MOTOR_STANGA_PIN1=6;
int MOTOR_STANGA_PIN2=9;
int m1Speed=0;
int m2Speed=0;
int error;
int cnt;
double KP=0.25;
double KD=0.25;
int M1=130;
int M2=130;

double motorSpeed=0;
QTRSensorsRC ir((unsigned char[]) {14, 15, 16, 17, 18, 19},6);
unsigned int sensors[6];
void setup() {
Robot.begin();
Serial.begin(9600);

pinMode(MOTOR_DREAPTA_PIN1,OUTPUT);
pinMode(MOTOR_DREAPTA_PIN2,OUTPUT);
pinMode(MOTOR_STANGA_PIN1,OUTPUT);
pinMode(MOTOR_STANGA_PIN2,OUTPUT);


int i;
for (i = 0; i < 100; i++)
{
ir.calibrate();
delay(20);
}

}

void mers(int m1speed,int m2speed)
{
if (m1Speed>=0)
{
analogWrite(MOTOR_STANGA_PIN1,m1Speed);
analogWrite(MOTOR_STANGA_PIN2,0);
}
else
{
analogWrite(MOTOR_STANGA_PIN1,0);
analogWrite(MOTOR_STANGA_PIN2,-m1Speed);
}
if (m2Speed>=0)
{
analogWrite(MOTOR_DREAPTA_PIN1,m2Speed);
analogWrite(MOTOR_DREAPTA_PIN2,0);
}
else
{
analogWrite(MOTOR_DREAPTA_PIN1,0);
analogWrite(MOTOR_DREAPTA_PIN2,-m2Speed);
}
}

void loop() {

int position = ir.readLine(sensors);
int error = position - 2500;
double motorSpeed = round(KP * error + KD * (error - lastError));
lastError = error;
/*Serial.print("MOTOR SPEED E");
Serial.println(motorSpeed);*/
m1Speed = M1 + motorSpeed;
m2Speed = M2 - motorSpeed;

/*Serial.print("VITEZA MOTOR 1 E");
Serial.println(m1Speed);
Serial.print("VITEZA MOTOR 2 E");
Serial.println(m2Speed);*/

if (m1Speed < -200)
m1Speed = -200;
if (m2Speed < -200)
m2Speed = -200;
if (m1Speed > 200)
m1Speed = 200;
if (m2Speed > 200)
m2Speed = 200;
if ((position==0) || (position==5000)) {
cnt++;
if(cnt>90){
m1Speed=0;
m2Speed=0;
}
}
else {
cnt=0;
}

if (sensors[5]==1 && sensors[4]==1)
{
Robot.turn(90);
}

if (sensors[0]==1 && sensors[1]==1)
{ Robot.turn(-90) ;
}

if (sensors[5]==1 && sensors[4]==1 && sensors[0]==1 && sensors[1]==1)
{
Robot.motorsWrite(100,100);
}
if (sensors[5]==0 && sensors[4]==0 && sensors[3]==0 && sensors[2]==0 && sensors[0]==0 && sensors[1]==0)
{Robot.motorsWrite(100,100); }
mers(m1Speed,m2Speed);
}
***
IMI DA URMATOAREA EROARE, CE POT SA FAC ?


In file included from C:\Users\edymo\Desktop\ROBOT_COD_MOCANU\ROBOT_COD_MOCANU.ino:1:0:

C:\Users\edymo\Documents\Arduino\libraries\Robot_Control\src/ArduinoRobot.h:98:13: error: expected unqualified-id before numeric constant

#define TK1 101

^

C:\Users\edymo\Documents\Arduino\libraries\Robot_Control\src/ArduinoRobot.h:107:12: note: in expansion of macro 'TK1'

#define M1 TK1

^

C:\Users\edymo\Desktop\ROBOT_COD_MOCANU\ROBOT_COD_MOCANU.ino:30:5: note: in expansion of macro 'M1'

int M1=130;

^

C:\Users\edymo\Documents\Arduino\libraries\Robot_Control\src/ArduinoRobot.h:99:13: error: expected unqualified-id before numeric constant

#define TK2 102

^

C:\Users\edymo\Documents\Arduino\libraries\Robot_Control\src/ArduinoRobot.h:108:12: note: in expansion of macro 'TK2'

#define M2 TK2

^

C:\Users\edymo\Desktop\ROBOT_COD_MOCANU\ROBOT_COD_MOCANU.ino:31:5: note: in expansion of macro 'M2'

int M2=130;

^

exit status 1
Error compiling for board Arduino/Genuino Uno.


Utilizator anonim: Probabil ceva legat de numarul la linie ( habar n-am sincer )
Utilizator anonim: Acolo sunt erorile ( daca nu lipseste ; cauta alte greseli pe randurile alea doua , greseli gen for(i=1 ; <=n ; i++)
Utilizator anonim: Acu am vazut ca iti scrie compilatoru randu cu problema
Utilizator anonim: TK2 102 si TK2 101 sunt nume ?
Utilizator anonim: TK1 101 *
Utilizator anonim: Acu am inteles ce e acolo
Utilizator anonim: Incearca sa pui 102 si 101 intre paranteze rotunde
Utilizator anonim: sa-l evalueze ca expresie si nu ca numar
edymocanu: mi a mers ca si expresie , multumesc mult !!!!!
Utilizator anonim: Cu placere

Răspunsuri la întrebare

Răspuns de Grizzlly
0
Mamaaaa, Arduino? Bv ma.

In primul rand, pot sa spuna ca daca folosesti o librarie externa, e stricata.

#define TK1 101
#define M1 TK1
int M1=130

Nu au sens. La fel si cu TK2 si M2.
Prima definitie are sens, dar presupun ca TK1 este deja o variabila deci iti da eroare.
A doua si a treia linie... Ce naiba e asta???? Ori vrei ca M1 sa fie TK1 si ai M1=TK1, ori sa il initializezi ca fiind 130.

Daca tot codul si librariile sunt luate cu copy-paste mai inteleg de erori, dar daca nu, iti recomand sa te uiti in documentatiile Arduino si C si apoi sa te apuci sa rescrii tot codul.
Alte întrebări interesante