BASIC4MCU | 질문게시판 | 아두이노 코딩질문합니다
페이지 정보
작성자 로봇손 작성일2018-09-01 17:48 조회10,297회 댓글0건본문
플렉스센서를 이용한 로봇손제어 제작중입니다.
블루투스 빼고했을때는 깔끔하게 작동잘됬는데
블루투스 연결하니까 신호가 중복되는지 처음에는 잘되다가 시간이 지나면
플렉스센서에 값이 변하지않더라도 서보모터가 혼자 계속 움직입니다
뭐가 문제인지 아무리봐도 모르겠네요..
<<마스터 코드>>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); //블루투스의 Tx, Rx핀을 2번 3번핀으로 설정
int flex_1 = 0;
int flex_2 = 1;
int flex_3 = 2;
int flex_4 = 3;
int flex_5 = 4;
void setup() {
// 시리얼 통신의 속도를 9600으로 설정
Serial.begin(9600);
while (!Serial) {
; //시리얼통신이 연결되지 않았다면 코드 실행을 멈추고 무한 반복
}
Serial.println("Hello World!");//블루투스와 아두이노의 통신속도를 9600으로 설정
mySerial.begin(9600);
}void loop() { //코드를 무한반복합니다.
int flex_1_pos;
int servo_1_pos;
flex_1_pos = analogRead(flex_1);
servo_1_pos = map(flex_1_pos, 1004, 1018, 180, 0);
servo_1_pos = constrain(servo_1_pos, 0, 180);
Serial.println(flex_1_pos);
Serial.println(servo_1_pos);
mySerial.write(servo_1_pos);
int flex_2_pos;
int servo_2_pos;
flex_2_pos = analogRead(flex_2);
servo_2_pos = map(flex_2_pos, 997, 1016, 180, 0);
servo_2_pos = constrain(servo_2_pos, 0, 180);
Serial.println(flex_2_pos);
Serial.println(servo_2_pos);
mySerial.write(servo_2_pos);
int flex_3_pos;
int servo_3_pos;
flex_3_pos = analogRead(flex_3);
servo_3_pos = map(flex_3_pos, 999, 1019, 180, 0);
servo_3_pos = constrain(servo_3_pos, 0, 180);
Serial.println(flex_3_pos);
Serial.println(servo_3_pos);
mySerial.write(servo_3_pos);int flex_4_pos;
int servo_4_pos;
flex_4_pos = analogRead(flex_4);
servo_4_pos = map(flex_4_pos, 1014, 1022, 180, 0);
servo_4_pos = constrain(servo_4_pos, 0, 180);Serial.println(flex_4_pos);
Serial.println(servo_4_pos);
mySerial.write(servo_4_pos);
int flex_5_pos;
int servo_5_pos;
flex_5_pos = analogRead(flex_5);
servo_5_pos = map(flex_5_pos, 1004, 1013, 180, 0);
servo_5_pos = constrain(servo_5_pos, 0, 180);
Serial.println(flex_5_pos);
Serial.println(servo_5_pos);
mySerial.write(servo_5_pos);delay(100);
return;
}
<<슬레이브 코드>>
#include <SoftwareSerial.h>
#include <Servo.h>SoftwareSerial mySerial(2, 3); //블루투스의 Tx, Rx핀을 2번 3번핀으로 설정
Servo servo1;
Servo servo2;int get_servo1;
int get_servo2;
void setup() {
// 시리얼 통신의 속도를 9600으로 설정
Serial.begin(9600);
while (!Serial) {
; //시리얼통신이 연결되지 않았다면 코드 실행을 멈추고 무한 반복
}
Serial.println("Hello World!");
mySerial.begin(9600);
servo1.attach(9);
servo2.attach(10);}
void loop() { //코드를 무한반복합니다.
if (mySerial.available() > 0)
{
get_servo1=mySerial.read();
Serial.println(get_servo1);
servo1.write(get_servo1);
delay(500);
}
if (mySerial.available() > 0)
{
get_servo2=mySerial.read();
Serial.println(get_servo2);
servo2.write(get_servo2);
delay(500);
}
return;}
뭐가 문제인지 좀 도와주세요!
댓글 0
조회수 10,297등록된 댓글이 없습니다.