2017-03-05 61 views
1

我必須發送3個由3個電位計給出的值,通過Arduino Uno連接,並將它們發送給另一個Arduino Uno,並進行串行通信。接收到的值必須分佈在3個伺服電機中,以便每個旋鈕都能夠控制伺服電機的運動。 該程序存在的問題是接收到的數值沒有正確分配(例如,電位計1的值應由伺服電機3讀取或其他情況)。我問我是否可以幫助將接收到的數據與分配的數據同步到伺服電機。提前致謝。發佈從2個arduino uno的串行通信接收到的數據

速寫Arduino的與電位計:

#include <SoftwareSerial.h> 
#define RX 2 //Pin tx 
#define TX 3 //Pin rx 
#define POTPIN A0 
#define POTPIN2 A1 
#define POTPIN3 A2 

SoftwareSerial BTserial(RX, TX); 

int lettura_pot; 
int lettura_pot2; 
int lettura_pot3; 
byte val_servo; 
byte val_servo2; 
byte val_servo3; 

void setup() 
{ 
    Serial.println("Inizializzazione seriale..."); 
    Serial.begin(9600); 
    BTserial.begin(9600); 
} 

void loop() 
{ 
    BTserial.write(255); /* synch symbol */ 

    lettura_pot = analogRead(POTPIN); 
    val_servo=map(lettura_pot,0,1023,0,180); 
    BTserial.write(val_servo); 
    Serial.println(val_servo); 

    lettura_pot2 = analogRead(POTPIN2); 
    val_servo2=map(lettura_pot2,0,1023,0,180); 
    BTserial.write(val_servo2); 
    Serial.println(val_servo2); 

    lettura_pot3 = analogRead(POTPIN3); 
    val_servo3=map(lettura_pot3,0,1023,0,180); 
    BTserial.write(val_servo3); 
    Serial.println(val_servo3); 
} 

速寫Arduino的與伺服電機:

#include <SoftwareSerial.h> 
#include<Servo.h> 
SoftwareSerial BTserial(2, 3); 
Servo myservo, myservo2, myservo3; 

byte val_servo,val_servo2,val_servo3,a; 

void setup() { 
    Serial.begin(9600); 
    BTserial.begin(9600); 
    myservo.attach(9); 
    myservo2.attach(10); 
    myservo3.attach(11); 
} 

void loop() { 

    if (BTserial.available() > 0) { 
     if (BTserial.available() == 255) { /* synch */ 
      val_servo = BTserial.read(); 
      val_servo2 = BTserial.read(); 
      val_servo3 = BTserial.read(); 
     } 
     Serial.print("SERVO1:"); 
     Serial.println(val_servo); 
     Serial.print("SERVO2:"); 
     Serial.println(val_servo2); 
     Serial.print("SERVO3:"); 
     Serial.println(val_servo3); 

     myservo.write(val_servo); 
     myservo2.write(val_servo2); 
     myservo3.write(val_servo3); 
     BTserial.flush(); 
    } 
} 

回答

0

主代碼(沒有改性殼聚糖):

#include <SoftwareSerial.h> 
#define RX 2 //Pin tx 
#define TX 3 //Pin rx 
#define POTPIN A0 
#define POTPIN2 A1 
#define POTPIN3 A2 

SoftwareSerial BTserial(RX, TX); 

int lettura_pot; 
int lettura_pot2; 
int lettura_pot3; 
byte val_servo; 
byte val_servo2; 
byte val_servo3; 

void setup() 
{ 
    Serial.println("Inizializzazione seriale..."); 
    Serial.begin(9600); 
    BTserial.begin(9600); 
} 

void loop() 
{ 
    BTserial.write(255); 
    lettura_pot = analogRead(POTPIN); 
    val_servo=map(lettura_pot,0,1023,0,180); 
    BTserial.write(val_servo); 
    Serial.println(val_servo); 

    lettura_pot2 = analogRead(POTPIN2); 
    val_servo2=map(lettura_pot2,0,1023,0,180); 
    BTserial.write(val_servo2); 
    Serial.println(val_servo2); 

    lettura_pot3 = analogRead(POTPIN3); 
    val_servo3=map(lettura_pot3,0,1023,0,180); 
    BTserial.write(val_servo3); 
    Serial.println(val_servo3); 


} 

從編碼(改性殼聚糖):

#include <SoftwareSerial.h> 
#include<Servo.h> 
SoftwareSerial BTserial(2, 3); 
Servo myservo, myservo2, myservo3; 

byte val_servo,val_servo2,val_servo3,a; 

void setup() { 
    // Open serial communications and wait for port to open: 
    Serial.begin(9600); 
    BTserial.begin(9600); 
    myservo.attach(9); 
    myservo2.attach(10); 
    myservo3.attach(11); 
} 

void loop() { 
    // Read serial input: 
    if (BTserial.available() > 0) { 
    byte synch_symbol = BTserial.read(); 

    if (synch_symbol == 255) { 
    while (BTserial.available() < 3) { }; /* wait for values */ 
    val_servo = BTserial.read(); 
    val_servo2 = BTserial.read(); 
    val_servo3 = BTserial.read(); 

    /* do something with values */ 
} 

    Serial.print("SERVO1:"); 
    Serial.println(val_servo); 
    Serial.print("SERVO2:"); 
    Serial.println(val_servo2); 
    Serial.print("SERVO3:"); 
    Serial.println(val_servo3); 

    myservo.write(val_servo); 
    myservo2.write(val_servo2); 
    myservo3.write(val_servo3); 
    BTserial.flush(); 
} 
} 
+0

注意:你不應該在這裏留下這段代碼,因爲它不能回答你的問題。 –