如何使用L298n+DCmotor+MG996R servo+ardiuno UNO如何合併程式

#include <SoftwareSerial.h> 

#include <Servo.h> // servo library

Servo myservo5; // servo name

#include <Wire.h>

SoftwareSerial bluetooth(10, 11);

void setup()
{

  myservo5.attach(9);
  //Setup usb serial connection to computer
  Serial.begin(9600);

  //Setup Bluetooth serial connection to android
  bluetooth.begin(9600);
}

void loop()
{
  //Read from bluetooth and write to usb serial
  if(bluetooth.available()>= 2 )
  {
    unsigned int servopos = bluetooth.read();
    unsigned int servopos1 = bluetooth.read();
    unsigned int realservo = (servopos1 *256) + servopos;
    Serial.println(realservo);


            if (realservo >= 5000 && realservo < 5180) {
            int servo5 = realservo;
            servo5 = map(servo5, 5000, 5180, 0, 180);
            myservo5.write(servo5);
            Serial.println("Servo 5 ON");
            delay(10);
        }
  }
}
--------------------------------------------------------------------------------
#include <SoftwareSerial.h>
#include <Wire.h>

//輸出到L298N的腳位
#define MT_L 3  //ENA
#define IN1 4
#define IN2 2


char Car_status;
int Speed_value=150;

SoftwareSerial BT(12,13);
//定義Arduino PIN10及PIN11分別為RX及TX腳

void setup() {
  pinMode(MT_L,OUTPUT);
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);

  BT.begin(9600); // 設定和 HC-06 通訊的速度 (預設 9600)
  Serial.begin(9600); 

}

void loop() {
//當Serial有資料傳輸時,會將讀取到的字元存到Car_status。
  if(Serial.available() == true){   
    Car_status = Serial.read();  
  }
  
//當藍芽有資料傳輸時,會將讀取到的字元存到Car_status。
  if (BT.available()){      
    Car_status =BT.read();  
    Serial.println(Car_status);  
  }
  
//依照Car_status的字元來選擇車子方向控制
 switch(Car_status){   
  case 'F':
    Forward();
    Serial.println("Forward");
    Car_status='N';
    break;
  case 'B':
    Backward();
    Serial.println("Backward");
    Car_status='N';
    break;
  case 'S':
    Stop();
    Serial.println("Stop");
    Car_status='N';
    break;
  case 'v':
    Speed_value=0; //先將速度歸0
    do{
      if (BT.available()){
        Car_status =BT.read();  //讀取藍芽傳送字元
        Serial.println(Car_status); 
        //當藍芽讀取到字元'e'時,就會跳出迴圈。
        if( Car_status=='e'){        
          Serial.println(Speed_value);
          break;
        }         
        else
        //將傳送來的速度數值字元轉成整數。
        Speed_value=10*Speed_value+(Car_status-48); 
      }
    }while(true);      
  }
}

//下面是停止、前進、後退、左轉、右轉的函式。
void Stop() 
{
  analogWrite(MT_L,0);

}

void Forward()
{
   digitalWrite(IN1,HIGH);
   digitalWrite(IN2,LOW);
   analogWrite(MT_L,Speed_value); 
}
void Backward()
{
   digitalWrite(IN1,LOW);
   digitalWrite(IN2,HIGH);
   analogWrite(MT_L,Speed_value); 
}

错误在#include中。 您缺少驱动伺服器的库名。
尝试使用以下通用名称:#include <servo.h>
您可能还需要包括正在使用的其他硬件的特定库。
问候。

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.