Когда я запускаю свой код arduino, я получаю ошибку: «RightForward» не был объявлен в этой области. Кто-нибудь знает, как это решить?

#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:

  1. Для объявления или определения функции также требуется список параметров или пустая пара или скобки, если таковых нет.
  //als de wielen forward rijden dan rijd de naar voren 
 void Forward ()
 {
    LeftFrontWheel.setspeed(wheelspeed);
    RightFrontWheel.setspeed(wheelspeed);
 }
 
  1. Функции не должны определяться внутри других функций.
  2. Для других гораздо интереснее читать полный, но небольшой код. Сократите свой код до минимального эскиза, все равно раскрывая свою проблему

Кстати: Ваш вопрос не об Arduino или роботе, а о C / C .