?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | 매트랩의 행렬값을 아두이노에 불러오고싶습니다.

페이지 정보

작성자 김태완 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일18-05-20 13:44 조회138회 댓글1건

본문

매트랩에서 생성한 행렬값을 아두이노에 불러오기위해 시리얼통신을 사용하였습니다.
매트랩 코드는 다음과 같구요!
delete(instrfindall);
clear all;
close all;
aaaa.ino = arduino('COM4','uno');
b = [255 222 132 11];
fileID = fopen('aaaa.ino');
pause(10);

fwrite(fileID,int2str(b),'int8');

fclose(fileID); %% COM4 PORT 연결해제
pause(10);
delete(instrfindall);
아두이노 코드는 다음과 같습니다.
//아두이노
int DataPin1=10;
int DataPin2=3;
int DataPin3=11;
int DataPin4=5;
byte data[4];

void setup() {
  Serial.begin(9600);
  pinMode(DataPin1,OUTPUT);
  pinMode(DataPin2,OUTPUT);
  pinMode(DataPin3,OUTPUT);
  pinMode(DataPin4,OUTPUT);

}


void loop() {
  if(Serial.available()){
 
  data[0]=Serial.read();
  analogWrite(DataPin1,data[0]);
  delay(500);
  data[1]=Serial.read();
  analogWrite(DataPin2,data[1]);
  delay(500);
  data[2]=Serial.read();
  analogWrite(DataPin3,data[2]);
  delay(500);
  data[3]=Serial.read();
  analogWrite(DataPin4,data[3]);
  delay(500);
}
}
이렇게 작성해고 매트랩을 실행완료한 후 에 아두이노에서 실행을 하면 오류는 안뜨는데 읽어드리지를
못하네요 왜 그런건지 알 수 있을까요?? 도움을 주신다면 진심으로 감사하겠습니다.!!

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

매트랩에서 4개의 integer 값을 보낸것 같은데... 매트랩의 interger 가 4바이트 인가요?
그럼 4byte * 4개의 데이터가 던져졌기 때문에 아두이노는 16개의 byte를 사용해서 받아야 합니다. 그리고 아두이노는 2byte integer를 사용하기 때문에 4byte인 long에 값을 넣어서 사용해야 합니다.