#arduino #void #robot
Вопрос:
Здравствуйте, я создаю робота, и робот управляется serialdata. Каким-то образом я получаю эту ошибку: «RightForward» не был объявлен в этой области, и я действительно не знаю решения, может ли кто-нибудь помочь? Я понимаю, что он не может найти прямо сейчас в коде, но как я могу заставить его найти его.
Это мой код arduino:
#include <AccelStepper.h>
#include <MultiStepper.h>
#include <SoftwareSerial.h>
#include <Servo.h>
// put your setup code here, to run once
Servo servo01;
Servo servo02;
Servo servo03;
Servo servo04;
//De code voor de Stepper Motoren
// hier worden de motoren gedefinieerd en de pinnen die ze zullen gebruiken
SoftwareSerial Bluetooth(37, 38);
AccelStepper LeftFrontWheel(1, 40, 41); // links voor wiel
AccelStepper RightFrontWheel(1, 46, 47); // rechts voor wiel
#define led 14
int wheelSpeed = 1500;
const int lfw[50], rfw[50]; // Arrays op posities van de wielen op te slagen
//Geen constanten voor deze volgende 2 rijen ze moeten kunnen worden aangepast
int servo1Pos, servo2Pos, servo3Pos, servo4Pos; // huidige positie
int servo1PPos, servo2PPos, servo3PPos, servo4PPos; // vorige positie
const int servo01SP[50], servo02SP[50], servo03SP[50], servo04SP[50];// om posities op te slagen
const int speedDelay = 20;
const int index = 0;
//hier moet geen constante deze waarde moet kunnen worden aagepast.
int SerialData;
int m = 0;
void setup() {
// de snelheid voor de steppermotoren
LeftFrontWheel.setMaxSpeed(3000);
RightFrontWheel.setMaxSpeed(3000);
//code voor servomotoren (Arm)
//De 4 Servomotoren worden hier gedefinieerd
Serial.begin(9600);
pinMode(led, OUTPUT);
servo01.attach(5);
servo02.attach(6);
servo03.attach(7);
servo04.attach(8);
Bluetooth.begin(38400); // de standaard waarde voor onze bleutooth module
Bluetooth.setTimeout(5);
delay(20);
Serial.begin(38400);
// De arm wordt gezet op zijn eigenlijke basispositie
servo1PPos = 90;
servo01.write(servo1PPos);
servo2PPos = 100;
servo02.write(servo2PPos);
servo3PPos = 120;
servo03.write(servo3PPos);
servo4PPos = 95;
servo04.write(servo4PPos);
}
void loop()
{
//korte uitleg wat er hier gebeurt: wanneer er op een knop in de app wordt geklikt dan geeft deze een nummer
//door. Dat nummer krijgt een commando deze commando's worden hieronder toegewezen.
if (Serial.available() > 0) {
SerialData = Serial.read();
//stoppen van de robot
//switch voor de wielen
switch (SerialData) {
case 0:
m == 0;
break;
//wanneer het getal 1 wordt doorgegeven dan is het commando rightforward. dus gaat de robot naar links.
case 1:
m == 1;
break;
// bij het getal 2 wordt links vooruit gedaan wat ervoor zorgt dat de robot naar rechts gaat
case 2:
m == 2;
break;
// bij het getal 3 wordt de robot achteruit gereden.
case 3:
m == 3;
break;
//Bij het getal 4 wordt de robot voorruit gereden
case 4:
m == 4;
break;
// Servo motor 01 Arm
//omhoog
case 8:
m == 8;
break;
//omlaag
case 9:
m == 9;
break;
//omhoog
// Servo motor 02 Arm
case 10:
m == 10;
break;
//omlaag
case 11:
m == 11;
break;
//Servo motor 03 Arm
//omhoog
case 12:
m == 12;
break;
//omlaag
case 13:
m == 13;
break;
//Servor motor 04 Arm
//omhoog
case 14:
m == 14;
break;
//omloag
case 15:
m == 15;
break;
// knop op de laatste positie te saven
case 16:
m == 16;
break;
}
/* //if (dataIn == 0) {
// m = 0;
//}
//wanneer het getal 1 wordt doorgegeven dan is het commando rightforward. dus gaat de robot naar links.
//if (dataIn == 1)
//{
// m == 1;
//}
// bij het getal 2 wordt links vooruit gedaan wat ervoor zorgt dat de robot naar rechts gaat
// if(dataIn == 2)
//{
//m == 2;
//}
// bij het getal 3 wordt de robot achteruit gereden.
//if (dataIn == 3)
//{
// m == 3;
//}
//Bij het getal 4 wordt de robot voorruit gereden
//if (dataIn == 4)
//{
// m == 4
//}
//}
//Test nummer
//if (dataIn == 5)
//{
// m == 5
//}
//Test nummer
//if (dataIn == 6)
//{
// m == 6
//}
//Test nummer
//if (dataIn == 7)
//{
//m == 7
//}
// Servo motor 01 Arm
//omhoog
// if (dataIn == 8)
//{
// m == 8
//}
//omlaag
//if (dataIn == 9)
//{
// m == 9
//}
//Servo motor 02 arm
//omhoog
//Servo motor 03 arm
//omhoog
//if (dataIn == 12)
{
m == 12
}
//omlaag
if (dataIn == 13)
{
m == 13
}
// knop save positie arm
if (dataIn == 14)
{
m == 14
}*/
if (SerialData != NULL) {
// commando wordt gedeclareerd.
if(m == 1)
{
RightForward();
}
if(m == 2 )
{
LeftForward();
}
if (m == 3)
{
Backward();
}
if (m == 4)
{
Forward();
}
if(m == 0){
StopMoving();
}
}
}
void stopMoving
{
LeftFrontWheel.setspeed(0);
RightFrontWheel.setspeed(0);
}
// als het wiel rightforward rijd dan gaat de robot naar links.
void RightForward
{
LeftFrontWheel.setspeed(0);
RightFrontWheel.setspeed(wheelspeed);
}
// als het wiel leftforward rijd dan gaat de robot rechts
void LeftForward
{
LeftFrontWheel.setspeed(wheelspeed);
RightFrontWheel.setspeed(0);
}
//als de wielen backwards rijden dan rijd de robot naar achter
void Backward
{
LeftFrontWheel.setspeed(-wheelspeed);
RightFrontWheel.setspeed(-wheelspeed);
}
//als de wielen forward rijden dan rijd de naar voren
void Forward
{
LeftFrontWheel.setspeed(wheelspeed);
RightFrontWheel.setspeed(wheelspeed);
}
// de wheelsnelheid wordt hier gedeclareerd
//Arm bewegen
// Motor 01
// beweeg motor 01 omhoog
while (m == 8)
{
if (Serial.available()> 0)
{
m = Serial.read();
}
servo01.write(servo1PPos);
servo1PPos ;
delay(speedDelay);
}
// beweeg motor 01 omlaag
while (m == 9)
{
if (Serial.available()>0)
{
m = Serial.read();
}
servo01=write(servoPPos);
servo1PPos--;
delay(speedDelay);
}
//Motor 02
//Beweeg motor 02 omhoog
while (m == 10)
{
if (Serial.available()>0)
{
m = Serial.read();
}
servo02.write(servo2PPos);
servo2PPos ;
delay(speedDelay);
}
//Beweeg motor 02 omlaag
while (m == 11)
{
if (Serial.available()>0)
{
m = Serial.read();
}
servo02.write(servo2PPos);
servo2PPos--;
delay(speedDelay);
}
//Motor 3
//Beweeg motor 3 omhoog
While ( m == 12)
{
if (Serial.available()>0)
{
m = Serial.read();
}
servo03.write(servo3PPos);
servo3PPos ;
delay(speedDelay);
}
//Beweeg motor 3 omlaag
While (m == 13)
{
if (Serial.available()>0)
{
m = Serial.read();
}
servo03.write(servo3PPos);
servo3PPos--;
delay(speedDelay);
}
//Motor 4
//Beweeg motor 4 omhoog
While ( m == 14)
{
if (Serial.available()>0)
{
m = Serial.read();
}
servo04.write(servo4PPos);
servo4PPos ;
delay(speedDelay);
}
//Beweeg motor 3 omlaag
While (m == 15)
{
if (Serial.available()>0)
{
m = Serial.read();
}
servo04.write(servo4PPos);
servo4PPos--;
delay(speedDelay);
}
// Als arm snelheid veranderd
if (SerialData > 101 amp; SerialData < 250)
{
// motor snelheid aanpassen
speedDelay = SerialData /10;
}
//stand van de robot opslaan
if (m == 16)
{
if (index == 0) {
LeftFrontWheel.setCurrentPosition(0);
RightFrontWheel.setCurrentPosition(0);
}
lfw[index] = LeftFrontWheel.currentPosition();
rfw[index] = RightFrontWheel.currentPosition();
servo01SP[index] = servo1PPos; // bewaar positie in deze array
servo02SP[index] = servo2PPos;
servo03SP[index] = servo3PPos;
servo04SP[index] = servo4PPos;
index ; // verhoog lijst index
m = 0
}
}
}```
Ответ №1:
- Для объявления или определения функции также требуется список параметров или пустая пара или скобки, если таковых нет.
//als de wielen forward rijden dan rijd de naar voren void Forward () { LeftFrontWheel.setspeed(wheelspeed); RightFrontWheel.setspeed(wheelspeed); }
- Функции не должны определяться внутри других функций.
- Для других гораздо интереснее читать полный, но небольшой код. Сократите свой код до минимального эскиза, все равно раскрывая свою проблему
Кстати: Ваш вопрос не об Arduino или роботе, а о C / C .