BASIC4MCU | 질문게시판 | 아두이노 RF무선통신 4족보행로봇인데 질문있습니다.
페이지 정보
작성자 라이언 작성일2020-12-04 15:01 조회4,730회 댓글1건본문
몸체코드
#include <SPI.h>
#include <RF24.h>
#include <Servo.h>
int motion_delay = 140;
int rf_data[8];
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
Servo servo7;
Servo servo8;
RF24 rf(A0,A1);
const byte address[6] = "00001";
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
rf.begin();
rf.openReadingPipe(0, address);
rf.setPALevel(RF24_PA_MIN);
rf.startListening();
servo1.attach(2);
servo2.attach(3);
servo3.attach(4);
servo4.attach(5);
servo5.attach(6);
servo6.attach(7);
servo7.attach(8);
servo8.attach(9);
delay(100);
attention();
delay(100);
}
void loop() {
rf_read();
if(rf_data[7]>=530){
attention();
servo5.write(120);
servo7.write(120);
delay(motion_delay);
servo1.write(80);
servo2.write(100);
servo3.write(20);
servo4.write(160);
delay(motion_delay);
servo5.write(85);
servo7.write(92);
delay(motion_delay);
////////////////////////////////////////
servo6.write(60);
servo8.write(60);
delay(motion_delay);
servo1.write(20);
servo2.write(160);
servo3.write(80);
servo4.write(100);
delay(motion_delay);
servo6.write(87);
servo8.write(85);
delay(motion_delay);
}
else if(rf_data[7]<=130){
attention();
servo5.write(120);
servo7.write(120);
delay(motion_delay);
servo1.write(20);
servo2.write(160);
servo3.write(80);
servo4.write(100);
delay(motion_delay);
servo5.write(85);
servo7.write(92);
delay(motion_delay);
////////////////////////////////////////
servo6.write(60);
servo8.write(60);
delay(motion_delay);
servo1.write(80);
servo2.write(100);
servo3.write(20);
servo4.write(160);
delay(motion_delay);
servo6.write(87);
servo8.write(85);
delay(motion_delay);
}
else if(rf_data[6]>=530){
servo5.write(120);
servo7.write(120);
delay(motion_delay);
servo1.write(90);
servo2.write(90);
servo3.write(90);
servo4.write(90);
delay(motion_delay);
servo5.write(86);
servo7.write(92);
delay(motion_delay);
servo6.write(60);
servo8.write(60);
delay(motion_delay);
servo1.write(52);
servo2.write(133);
servo3.write(53);
servo4.write(133);
servo6.write(87);
servo8.write(85);
delay(motion_delay);
}
else if(rf_data[6]<=130){
servo6.write(60);
servo8.write(60);
delay(motion_delay);
servo1.write(90);
servo2.write(90);
servo3.write(90);
servo4.write(90);
delay(motion_delay);
servo6.write(87);
servo8.write(85);
delay(motion_delay);
servo5.write(120);
servo7.write(120);
delay(motion_delay);
servo1.write(52);
servo2.write(133);
servo3.write(53);
servo4.write(133);
servo5.write(86);
servo7.write(92);
delay(motion_delay);
}
else if(rf_data[5]){
}
else if(rf_data[4]){
}
else if(rf_data[3]){
attention();
}
else if(rf_data[2]){
attention();
}
else if(rf_data[1]){
attention();
}
else if(rf_data[0]){
attention();
}
}
void attention(void){
servo1.write(52);
servo2.write(133);
servo3.write(53);
servo4.write(133);
servo5.write(85);
servo6.write(87);
servo7.write(92);
servo8.write(85);
}
void rf_read(void){
if ( rf.available()) {
while (rf.available()) {
rf.read( rf_data, sizeof(rf_data) );
}
}
}
--------------------------------------------------------------------------------------------------------------------------------
아두이노 조이스틱 코드
#include <SPI.h>
#include <RF24.h>
#define SW_A 2
#define SW_B 3
#define SW_C 4
#define SW_D 5
#define SW_E 6
#define SW_F 7
#define AX A0
#define AY A1
int rf_data[8];
RF24 rf(9, 10);
const byte address[6] = "00001";
void setup() {
// put your setup code here, to run once:
pinMode(SW_A,INPUT);
pinMode(SW_B,INPUT);
pinMode(SW_C,INPUT);
pinMode(SW_D,INPUT);
pinMode(SW_E,INPUT);
pinMode(SW_F,INPUT);
//Serial.begin(9600);
rf.begin();
rf.openWritingPipe(address);
rf.setPALevel(RF24_PA_MIN);
rf.stopListening();
}
void loop() {
// put your main code here, to run repeatedly:
if(!digitalRead(SW_A)){
rf_data[0]=1;
}
else{
rf_data[0]=0;
}
////////////////////////////////////////////////
if(!digitalRead(SW_B)){
rf_data[1]=1;
}
else{
rf_data[1]=0;
}
////////////////////////////////////////////////
if(!digitalRead(SW_C)){
rf_data[2]=1;
}
else{
rf_data[2]=0;
}
////////////////////////////////////////////////
if(!digitalRead(SW_D)){
rf_data[3]=1;
}
else{
rf_data[3]=0;
}
////////////////////////////////////////////////
if(!digitalRead(SW_E)){
rf_data[4]=1;
}
else{
rf_data[4]=0;
}
////////////////////////////////////////////////
if(!digitalRead(SW_F)){
rf_data[5]=1;
}
else{
rf_data[5]=0;
}
////////////////////////////////////////////////
rf_data[6]=analogRead(AX);
rf_data[7]=analogRead(AY);
rf.write(rf_data,sizeof(rf_data));
}
8개서보모터 를 작동해야하는데 RF24LO1몸체에 하나 꼽고 아두이노 조이스틱에도 RF24LO1을 꼽아서 동작하려는데 외부전원을 주면 무선통신하기도 전에 몸체의 서보모터가 움직이다가 멈추는데..조이스틱으로 조종하는데 무선통신도 안되네용 뭐가문제일까요?.. 하드웨어는 어려움이없어서 서보모터 자리에맞게 정확하게 확인도 여러번했는데 잘맞게했는데 작동을안하네요 외부전원은 리튬이온18650 배터리 2개를쓰고있습니다. 몸체에들어가는 RF24LO1은 어댑터를 부착하여서 사용하고있습니다..
댓글 1
조회수 4,730master님의 댓글
master 작성일제조사에 기술지원 부탁드려보세요