for test all systems

Dependencies:   mbed SDFileSystem

Committer:
RyusukeIwata
Date:
Thu Aug 05 08:20:02 2021 +0000
Revision:
1:36f42dcbdad1
Parent:
0:57933831bc2d
Child:
2:0491312e6fa4
second commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RyusukeIwata 0:57933831bc2d 1 #include "mbed.h"
RyusukeIwata 0:57933831bc2d 2 #include "SDFileSystem.h"
RyusukeIwata 0:57933831bc2d 3 Serial pc(USBTX,USBRX,9600);
RyusukeIwata 0:57933831bc2d 4 DigitalOut myled[]={LED1, LED2, LED3};
RyusukeIwata 0:57933831bc2d 5 DigitalOut myled_[] = {PB_1};//この文の"PA_5,PA_6"が入ると6軸センサが動かなくなる
RyusukeIwata 0:57933831bc2d 6 AnalogIn eps(PA_0);
RyusukeIwata 0:57933831bc2d 7 AnalogIn tem(PA_7);
RyusukeIwata 0:57933831bc2d 8 DigitalOut conv(PA_4);
RyusukeIwata 0:57933831bc2d 9 I2C i2c(PB_7,PB_6);
RyusukeIwata 0:57933831bc2d 10 SDFileSystem sd(PB_5, PB_4, PB_3, PA_8, "sd");//PB_3はLED3と接続されているため, PB_3の記述があるとLED3は機能しない.
RyusukeIwata 0:57933831bc2d 11 Serial xbee(PA_9,PA_10);
RyusukeIwata 0:57933831bc2d 12
RyusukeIwata 0:57933831bc2d 13 const int addr_accel_gyro = 0xD0;
RyusukeIwata 0:57933831bc2d 14 char cmd[2];
RyusukeIwata 0:57933831bc2d 15 char data[1];
RyusukeIwata 0:57933831bc2d 16 char xh[1];
RyusukeIwata 0:57933831bc2d 17 char xl[1];
RyusukeIwata 0:57933831bc2d 18
RyusukeIwata 0:57933831bc2d 19 int rcmd=0;
RyusukeIwata 0:57933831bc2d 20 int cmdflag=0;
RyusukeIwata 0:57933831bc2d 21 double bt;
RyusukeIwata 0:57933831bc2d 22 double temper;
RyusukeIwata 0:57933831bc2d 23
RyusukeIwata 0:57933831bc2d 24
RyusukeIwata 0:57933831bc2d 25
RyusukeIwata 0:57933831bc2d 26 void commandget(){
RyusukeIwata 0:57933831bc2d 27 rcmd = pc.getc();
RyusukeIwata 0:57933831bc2d 28 cmdflag = 1;
RyusukeIwata 0:57933831bc2d 29 }
RyusukeIwata 0:57933831bc2d 30
RyusukeIwata 0:57933831bc2d 31 void initialize(){
RyusukeIwata 0:57933831bc2d 32 rcmd = 0;
RyusukeIwata 0:57933831bc2d 33 cmdflag = 0;
RyusukeIwata 0:57933831bc2d 34 conv = 0;
RyusukeIwata 0:57933831bc2d 35 pc.printf("initialize!\r\n");
RyusukeIwata 0:57933831bc2d 36 }
RyusukeIwata 0:57933831bc2d 37
RyusukeIwata 0:57933831bc2d 38 void flash(){
RyusukeIwata 0:57933831bc2d 39 pc.printf("Start LED flashing!\r\n");
RyusukeIwata 0:57933831bc2d 40 for (int i=0; i<10; i++) {
RyusukeIwata 0:57933831bc2d 41 myled[2] = 1;
RyusukeIwata 0:57933831bc2d 42 myled_[0] = 1;
RyusukeIwata 0:57933831bc2d 43 //myled_[1] = 1;
RyusukeIwata 0:57933831bc2d 44 wait(0.5);
RyusukeIwata 0:57933831bc2d 45 myled[2] = 0;
RyusukeIwata 0:57933831bc2d 46 myled_[0] = 0;
RyusukeIwata 0:57933831bc2d 47 //myled_[1] = 0;
RyusukeIwata 0:57933831bc2d 48 wait(0.5);
RyusukeIwata 0:57933831bc2d 49 }
RyusukeIwata 0:57933831bc2d 50 }
RyusukeIwata 0:57933831bc2d 51
RyusukeIwata 0:57933831bc2d 52 void voltageget(){
RyusukeIwata 0:57933831bc2d 53 pc.printf("Get voltage!\r\n");
RyusukeIwata 0:57933831bc2d 54 for (int i=0; i<10; i++) {
RyusukeIwata 0:57933831bc2d 55 bt = (eps.read()*1.431*3.3);
RyusukeIwata 0:57933831bc2d 56 pc.printf("Vol = %f\r\n",bt);
RyusukeIwata 0:57933831bc2d 57 wait(0.5);
RyusukeIwata 0:57933831bc2d 58 }
RyusukeIwata 0:57933831bc2d 59 }
RyusukeIwata 0:57933831bc2d 60
RyusukeIwata 0:57933831bc2d 61 void tempget(){
RyusukeIwata 0:57933831bc2d 62 wait(0.5);
RyusukeIwata 0:57933831bc2d 63 for(int i = 0; i<10; i++) {
RyusukeIwata 0:57933831bc2d 64 temper = (tem.read()*3.3-0.6)*100;
RyusukeIwata 0:57933831bc2d 65 pc.printf("Tem=%f\r\n",temper);
RyusukeIwata 0:57933831bc2d 66 wait(0.5);
RyusukeIwata 0:57933831bc2d 67 }
RyusukeIwata 0:57933831bc2d 68 }
RyusukeIwata 0:57933831bc2d 69
RyusukeIwata 0:57933831bc2d 70 void converter_high(){
RyusukeIwata 0:57933831bc2d 71 conv = 1;
RyusukeIwata 0:57933831bc2d 72 }
RyusukeIwata 0:57933831bc2d 73
RyusukeIwata 0:57933831bc2d 74 void zaxisget(){
RyusukeIwata 0:57933831bc2d 75 conv = 1;
RyusukeIwata 0:57933831bc2d 76 char cmdd;
RyusukeIwata 0:57933831bc2d 77 wait(2);
RyusukeIwata 0:57933831bc2d 78 i2c.frequency(100000);
RyusukeIwata 0:57933831bc2d 79 data[0] = 0x75;
RyusukeIwata 0:57933831bc2d 80 i2c.write(addr_accel_gyro,data,1);
RyusukeIwata 0:57933831bc2d 81 i2c.read(addr_accel_gyro|0x01,xh,1);
RyusukeIwata 0:57933831bc2d 82 pc.printf("xh = 0x%02X\r\n",xh[0]);
RyusukeIwata 0:57933831bc2d 83 while(1){
RyusukeIwata 0:57933831bc2d 84 cmdd = pc.getc();
RyusukeIwata 0:57933831bc2d 85 if(cmdd == 'a'){
RyusukeIwata 0:57933831bc2d 86 data[0] = 0x75;
RyusukeIwata 0:57933831bc2d 87 i2c.write(addr_accel_gyro,data,1);
RyusukeIwata 0:57933831bc2d 88 i2c.read(addr_accel_gyro|0x01,xh,1);
RyusukeIwata 0:57933831bc2d 89 pc.printf("xh = 0x%02X\r\n",xh[0]);
RyusukeIwata 0:57933831bc2d 90
RyusukeIwata 0:57933831bc2d 91 cmd[0]=0x6B;
RyusukeIwata 0:57933831bc2d 92 cmd[1]=0x00;
RyusukeIwata 0:57933831bc2d 93 i2c.write(addr_accel_gyro,cmd,2);
RyusukeIwata 0:57933831bc2d 94
RyusukeIwata 0:57933831bc2d 95 cmd[0]=0x6C;
RyusukeIwata 0:57933831bc2d 96 cmd[1]=0x00;
RyusukeIwata 0:57933831bc2d 97 i2c.write(addr_accel_gyro,cmd,2);
RyusukeIwata 0:57933831bc2d 98
RyusukeIwata 0:57933831bc2d 99
RyusukeIwata 0:57933831bc2d 100 cmd[0] = 0x37;
RyusukeIwata 0:57933831bc2d 101 cmd[1] = 0x02;
RyusukeIwata 0:57933831bc2d 102 i2c.write(addr_accel_gyro,cmd,2);
RyusukeIwata 0:57933831bc2d 103
RyusukeIwata 0:57933831bc2d 104
RyusukeIwata 0:57933831bc2d 105 for(int i = 0; i<10; i++) {
RyusukeIwata 0:57933831bc2d 106 data[0] = 0x3F;
RyusukeIwata 0:57933831bc2d 107 i2c.write(addr_accel_gyro,data,1);
RyusukeIwata 0:57933831bc2d 108 i2c.read(addr_accel_gyro|0x01,xh,1);
RyusukeIwata 0:57933831bc2d 109 data[0] = 0x40;
RyusukeIwata 0:57933831bc2d 110 i2c.write(addr_accel_gyro,data,1);
RyusukeIwata 0:57933831bc2d 111 i2c.read(addr_accel_gyro|0x01,xl,1);
RyusukeIwata 0:57933831bc2d 112 //pc.printf("xh = 0x%02X,xl = 0x%02X\r\n",xh[0],xl[0]);
RyusukeIwata 0:57933831bc2d 113 double acc_ax = short((xh[0]<<8) | (xl[0]));
RyusukeIwata 0:57933831bc2d 114 double AX = (acc_ax)*4/32764*9.81;
RyusukeIwata 0:57933831bc2d 115 pc.printf("AZ = %f\r\n",AX);
RyusukeIwata 0:57933831bc2d 116 wait(0.5);
RyusukeIwata 0:57933831bc2d 117 }
RyusukeIwata 0:57933831bc2d 118 }
RyusukeIwata 0:57933831bc2d 119 if(cmdd == 'b'){
RyusukeIwata 0:57933831bc2d 120 break;
RyusukeIwata 0:57933831bc2d 121 }
RyusukeIwata 0:57933831bc2d 122 }
RyusukeIwata 0:57933831bc2d 123 }
RyusukeIwata 0:57933831bc2d 124
RyusukeIwata 0:57933831bc2d 125 void savetosd(){
RyusukeIwata 0:57933831bc2d 126 pc.printf("Hello World!\n");
RyusukeIwata 0:57933831bc2d 127
RyusukeIwata 0:57933831bc2d 128 mkdir("/sd/mydir", 0777);
RyusukeIwata 0:57933831bc2d 129
RyusukeIwata 0:57933831bc2d 130 FILE *fp = fopen("/sd/mydir/sdtest.txt", "w");
RyusukeIwata 0:57933831bc2d 131 if(fp == NULL) {
RyusukeIwata 0:57933831bc2d 132 error("Could not open file for write\r\n");
RyusukeIwata 0:57933831bc2d 133 }
RyusukeIwata 0:57933831bc2d 134 fprintf(fp, "Hello fun SD Card World!ryusuke!!!");
RyusukeIwata 0:57933831bc2d 135 fclose(fp);
RyusukeIwata 0:57933831bc2d 136
RyusukeIwata 0:57933831bc2d 137 pc.printf("Goodbye World!\r\n");
RyusukeIwata 0:57933831bc2d 138 }
RyusukeIwata 0:57933831bc2d 139
RyusukeIwata 0:57933831bc2d 140 void xbeecountup(){
RyusukeIwata 0:57933831bc2d 141 xbee.baud(9600);
RyusukeIwata 0:57933831bc2d 142 pc.printf("Xbee Count Up Mode\r\n");
RyusukeIwata 0:57933831bc2d 143 for(int i = 0; i < 10; i++) {
RyusukeIwata 0:57933831bc2d 144 xbee.printf("num = %d\r\n",i);
RyusukeIwata 0:57933831bc2d 145 pc.printf("num = %d\r\n",i);
RyusukeIwata 0:57933831bc2d 146 //pc.printf("%c\r\n",xbee.getc());
RyusukeIwata 0:57933831bc2d 147 wait(1.0);
RyusukeIwata 0:57933831bc2d 148 }
RyusukeIwata 0:57933831bc2d 149 }
RyusukeIwata 0:57933831bc2d 150
RyusukeIwata 0:57933831bc2d 151
RyusukeIwata 0:57933831bc2d 152 int main(){
RyusukeIwata 0:57933831bc2d 153 pc.printf("hello world\r\n");
RyusukeIwata 0:57933831bc2d 154 while(1){
RyusukeIwata 0:57933831bc2d 155 commandget();
RyusukeIwata 0:57933831bc2d 156 if(cmdflag == 1){
RyusukeIwata 0:57933831bc2d 157 if(rcmd == 'a'){
RyusukeIwata 0:57933831bc2d 158 flash();
RyusukeIwata 0:57933831bc2d 159 }
RyusukeIwata 0:57933831bc2d 160 if(rcmd == 'b'){
RyusukeIwata 0:57933831bc2d 161 voltageget();
RyusukeIwata 0:57933831bc2d 162 }
RyusukeIwata 0:57933831bc2d 163 if(rcmd == 'c'){
RyusukeIwata 0:57933831bc2d 164 converter_high();
RyusukeIwata 0:57933831bc2d 165 tempget();
RyusukeIwata 0:57933831bc2d 166 }
RyusukeIwata 0:57933831bc2d 167 if(rcmd == 'd'){
RyusukeIwata 0:57933831bc2d 168 zaxisget();
RyusukeIwata 0:57933831bc2d 169 }
RyusukeIwata 0:57933831bc2d 170 if(rcmd == 'e'){
RyusukeIwata 0:57933831bc2d 171 savetosd();
RyusukeIwata 0:57933831bc2d 172 }
RyusukeIwata 0:57933831bc2d 173 if(rcmd == 'f'){
RyusukeIwata 0:57933831bc2d 174 xbeecountup();
RyusukeIwata 0:57933831bc2d 175 }
RyusukeIwata 0:57933831bc2d 176 if(rcmd == 'g'){
RyusukeIwata 0:57933831bc2d 177 pc.printf("conv on\r\n");
RyusukeIwata 0:57933831bc2d 178 converter_high();
RyusukeIwata 0:57933831bc2d 179 wait(10.0);
RyusukeIwata 0:57933831bc2d 180 }
RyusukeIwata 0:57933831bc2d 181
RyusukeIwata 0:57933831bc2d 182 }
RyusukeIwata 0:57933831bc2d 183 wait(1.0);
RyusukeIwata 0:57933831bc2d 184 initialize();
RyusukeIwata 0:57933831bc2d 185 }
RyusukeIwata 0:57933831bc2d 186 pc.printf("exit, goodbye\r\n");
RyusukeIwata 0:57933831bc2d 187 }
RyusukeIwata 0:57933831bc2d 188