Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- takaoha
- Date:
- 2019-12-23
- Revision:
- 1:fa3a640a55e0
- Parent:
- 0:651a188c5dc3
- Child:
- 2:33681dfc2aa5
File content as of revision 1:fa3a640a55e0:
#include "mbed.h"
#include "math.h"
DigitalInOut name(PC_7);//EN_IN(HIGHでICS機器に送信するモード、LOWでICS機器から受信するモードにするピン)と繋いでいる
Serial master(PA_9, PA_10);//シリアル通信を担当するピン
Serial pc(USBTX,USBRX);
bool setpos(int deg,int id);
void getID();
//int getpos(int id);
int txlen=3;
int rxlen=3;
int _id;
int main() {
pc.printf("hello\r\n");
master.baud(1250000);//クロックレートの設定
master.format(8, Serial::Even, 1);//通信方式の設定
name.output();//p8を出力モードに
int deg=0;
char degpart[3];
int id;
while(1){
pc.printf("degree\r\n");
for(int i=0;i<3;i++){
degpart[i]=pc.getc()-48;
printf("%d",degpart[i]);
}
printf("\r\n");
deg=100*degpart[0]+10*degpart[1]+degpart[2];
//pc.scanf("%d\r\n",deg);
pc.printf("%d\r\n",deg);
pc.printf("id\r\n");
id=pc.getc()-48;
//id+=48;
pc.printf("%d\r\n",id);
setpos(deg,id);
//getID();
}
}
bool setpos(int deg,int id){
name=1;
int txdata[txlen];
int rxdata[rxlen];
if(deg>135 || deg<-135){
pc.printf("failed\r\n");
return 0;
}
int pos=deg*29.633;
pos=pos+7500;
//pc.printf("%d\r\n",pos);
txdata[0]=0x80+id;
txdata[1]=((pos >> 7) & 0x007F);
txdata[2]=(pos & 0x007F);
for(int i=0;i<txlen;i++){
master.putc(txdata[i]);
}
wait(0.00002);
name=0;
for(int i=0;i<rxlen;i++){
rxdata[i]=master.getc();
//wait(0.05);
//pc.printf("%d\r\n",rxdata[i]);
}
//wait(0.01);
//name=1;
//if(i==txlen-1){
//name=0;
/*for(int i=0;i<rxlen;i++){
//pc.printf("h\r\n");
//pc.printf("hello\r\n");
rxdata[i]=master.getc();
}*/
//pc.printf("OK\r\n");
//wait(0.05);
//pc.printf("hello\r\n");
//pc.printf("hello\r\n");
int degnow;
degnow=((rxdata[1] << 7) & 0x3F80) + (rxdata[2] & 0x007F);
degnow=(degnow-7500)/29.6;
//pc.printf("%d\r\n",degnow);
pc.printf("%d\r\n",rxdata[0]);
pc.printf("%d\r\n",rxdata[1]);
pc.printf("%d\r\n",rxdata[2]);
pc.printf("角度%d\r\n",degnow);
}
/*int getpos(int id){
name=1;
unsigned char txdata[txlen-1];
unsigned char rxdata[rxlen];
int degnow;
txdata[0]=0xA0+id;
txdata[1]=0x05;
pc.printf("done\r\n");
for(int i=0;i<txlen-1;i++){
master.putc(txdata[i]);
}
name=0;
wait(0.5);
if(master.readable()){
pc.printf("OK\r\n");
}
for(int i=0;i<rxlen;i++){
if(master.readable()){
rxdata[i]=master.getc();
pc.printf("%c",rxdata[i]);
}else{
pc.printf("failed\r\n");
}
}
pc.printf("%d",rxdata[0]);
degnow=((rxdata[2] << 7) & 0x3F80) + (rxdata[3] & 0x007F);
//degnow=(degnow-7500)*1000/296;
pc.printf("%d",degnow);
return degnow;
} */
void getID()
{
int id;
name=1;
master.putc(0xFF);
master.putc(0x0);
master.putc(0x0);
master.putc(0x0);
wait(0.01);
name=0;
/*for(int i=0;i<5;i++)
{
id = (master.getc() & 0x1f);
}*/
id=master.getc();
printf("%d\r\n",id);
wait_ms(500);
}