| 
 | 
 
以下是小弟我操控藍牙遙控車與伺服馬達控制鏡頭的程式 
一開始程式碼我只有寫藍芽控制車子移動,可以很順暢;可是加上了伺服馬達的程式碼之後整個遙控出了問題,伺服馬達反過來可以正常作用,遙控車卻無法移動。跪求大大們協助 
 
 
#include<SoftwareSerial.h> 
SoftwareSerial BT(0,1); 
#include <Servo.h>  
Servo myservo; 
Servo myservo1; 
 
char command; 
 
const byte IN1 = 10; 
const byte IN2 = 9; 
const byte IN3 = 8; 
const byte IN4 = 7; 
const byte ENA = 6;  
const byte ENB = 5; 
int speeds = 0; 
void loop() { 
  if(BT.available()>0){ 
    command = BT.read(); 
 
    switch(command){ 
 
       case 'q': 
       lighton(); 
       break; 
       case 'p': 
       lightdown(); 
       break; 
      case 'w': 
       forward(); 
       break; 
      case'x': 
       backward(); 
       break; 
      case'a': 
       turnLeft(); 
       break; 
      case'd': 
       turnRight(); 
      break; 
      case's': 
       stop(); 
       break; 
        case 'b': 
       Speedup(); 
       break; 
        case 'c': 
       Speeddown(); 
       break; 
       case 'r': 
       cameraright(); 
       break; 
       case 't': 
       cameraleft(); 
       break; 
      case'u': 
      cameraup(); 
       break; 
       case'o': 
      cameradown(); 
      break; 
       case'z': 
      camerarlreturn(); 
      break; 
       case'y': 
      cameraudreturn(); 
      break; 
      case'h': 
      camerareturn(); 
      break; 
    } 
  } 
} 
void lighton(){ 
  analogWrite(13,255); 
} 
void lightdown(){ 
  analogWrite(13,0); 
} 
void CarAction(){ 
  analogWrite(ENA,speeds); 
  analogWrite(ENB,speeds); 
  Serial.print("speed="); 
  Serial.println(speeds); 
} 
void stop() { 
speeds=0; 
  analogWrite(IN1,0); 
analogWrite(IN2,0); 
analogWrite(IN3,0); 
analogWrite(IN4,0); 
} 
void Speedup(){ 
  speeds+=20; 
  if(speeds>250){speeds=255;} 
  CarAction(); 
} 
void Speeddown(){ 
  speeds-=20; 
  if(speeds<=100){speeds=100;} 
  CarAction(); 
} 
void forward() { 
 
digitalWrite(IN1,HIGH); 
digitalWrite(IN2,LOW); 
digitalWrite(IN3,HIGH); 
digitalWrite(IN4,LOW); 
 
} 
void backward() { 
 
digitalWrite(IN1,LOW); 
digitalWrite(IN2,HIGH); 
digitalWrite(IN3,LOW); 
digitalWrite(IN4,HIGH); 
 
} 
 
void turnLeft() { 
 
digitalWrite(IN1,HIGH); 
digitalWrite(IN2,LOW); 
digitalWrite(IN3,LOW); 
digitalWrite(IN4,HIGH); 
 
} 
void turnRight() { 
 
digitalWrite(IN1,LOW); 
digitalWrite(IN2,HIGH); 
digitalWrite(IN3,HIGH); 
digitalWrite(IN4,LOW); 
 
} 
void cameraleft(){ 
  for(int i = 500; i <= 2400; i+=100) 
    myservo.writeMicroseconds(i);  
 } 
 void cameraright() { 
  for(int i = 2400; i >= 500; i-=100) 
    myservo.writeMicroseconds(i); 
 } 
 void cameraup(){ 
  for(int i = 500; i <= 2400; i+=100) 
    myservo1.writeMicroseconds(i);  
 } 
  void cameradown(){ 
 for(int i = 2400; i >= 500; i-=100) 
    myservo1.writeMicroseconds(i); 
 } 
 void camerarlreturn(){ 
    myservo.write(90);  
 } 
 void cameraudreturn(){ 
   myservo1.write(90);  
 } 
 void camerareturn(){ 
  myservo.write(90);  
  myservo1.write(90);  
  } 
void setup() { 
   myservo.attach(11, 500, 2400);  
  myservo1.attach(12, 500, 2400);  
  myservo.write(90);  
  myservo1.write(90); 
 
  BT.begin(9600); 
 
  pinMode(IN1,OUTPUT);  
  pinMode(IN2,OUTPUT); 
  pinMode(IN3,OUTPUT); 
  pinMode(IN4,OUTPUT); 
  pinMode(13,OUTPUT); 
  stop(); 
} |   
 
 
 
 |