В проекте Arduino что означает пропустить первичное выражение раньше? - PullRequest
0 голосов
/ 19 марта 2020

Я начал программировать только несколько дней go и столкнулся с несколькими проблемами.

Я пытаюсь повернуть сервопривод на 180 градусов, когда я печатаю 1, и на 180 градусов, когда я введите 0, я использую модуль Bluetooth H C -05, подключенный к моему телефону, поэтому я попытался «объединить» код серво-развертки из библиотеки Arduino IDE и другой код, который включается при помощи Bluetooth (работает) , поэтому я пытался исправить это без каких-либо результатов.

Вот что я сделал до сих пор:

  #include <Servo.h>

  Servo myservo;

  int pos = 0;

  char data = 0; 

  void setup()
  {
  Serial.begin(9600); 

   pinMode(13, OUTPUT);

   myservo.attach(13);
  }

  void loop()
  {
   if (Serial.available() > 0) 
    {
  data = Serial.read();  

  Serial.print(data);  

  Serial.print("\n");  

  if (data == '1') for (pos = 0; pos <= 180; pos += 1) 


  else if (Serial.available() > 1)    

  digitalWrite(13, myservo(pos = 180; pos >= 0; pos -= 1));  
  }


  }

Arduino create постоянно говорит мне, что мне не хватает основного выражения прежде чем.

1 Ответ

1 голос
/ 19 марта 2020

Вы добавили начало for l oop, но не сказали компилятору, какие операции повторять.

Когда вы начинаете, полезно добавлять фигурные скобки всякий раз, когда вы используете оператор управления (if, while, for, do, switch, case), независимо от того, должны ли вы делать отступы последовательно, тогда вы можете видеть, где что должно go и где тело управляющего оператора начинается и заканчивается.

void loop()
{
    if (Serial.available() > 0) 
    {
        data = Serial.read();  

        Serial.print(data);  

        Serial.print("\n");  

        if (data == '1')
        {
            // execute the code from the 'sweep' example if the user sends '1'
            for (pos = 0; pos <= 180; pos += 1)
            { 
                // goes from 0 degrees to 180 degrees
                // in steps of 1 degree
                myservo.write(pos);       
                delay(15);
            }
        }
        else if (Serial.available() > 1)    
        {
            // removed as code here made no real sense   
        }
    }
}
...