新部内対抗A班 / Mbed 2 deprecated circle_war_ver_A_NUCLEO

Dependencies:   mbed

Committer:
username16248
Date:
Fri Apr 01 05:52:10 2016 +0000
Revision:
5:df89be97e11a
Parent:
2:bed6b204e64c
Child:
6:bb86e2999be0
add speed_control

Who changed what in which revision?

UserRevisionLine numberNew contents of line
baba2357 1:86d25c1c4bd5 1 #ifndef SPI_NUCLEO_H
baba2357 1:86d25c1c4bd5 2 #define SPI_NUCLEO_H
baba2357 2:bed6b204e64c 3 #include "pin_file.h"
baba2357 2:bed6b204e64c 4 #include <string.h>
username16248 5:df89be97e11a 5 SPISlave from_mbed(mosi_m, miso_m, sclk_m, ssel_m);
username16248 5:df89be97e11a 6 SPISlave from_gyro(mosi_g, miso_g, sclk_g, ssel_m);
baba2357 2:bed6b204e64c 7
baba2357 1:86d25c1c4bd5 8 //SPI mbed
baba2357 1:86d25c1c4bd5 9 bool RR;
baba2357 1:86d25c1c4bd5 10 bool LR;
baba2357 1:86d25c1c4bd5 11 char speed_X;
baba2357 1:86d25c1c4bd5 12 char speed_Y;
baba2357 2:bed6b204e64c 13
baba2357 1:86d25c1c4bd5 14 //SPI NUCLEO
baba2357 1:86d25c1c4bd5 15 void spi_mbed();
baba2357 1:86d25c1c4bd5 16 void spi_nucleo();
baba2357 2:bed6b204e64c 17 void getGyro();
baba2357 2:bed6b204e64c 18 void spiInit();
baba2357 2:bed6b204e64c 19 typedef unsigned short u16;
baba2357 2:bed6b204e64c 20 long int angle;
baba2357 2:bed6b204e64c 21 double now_angle;
baba2357 2:bed6b204e64c 22 Serial pc(USBTX,USBRX);
baba2357 1:86d25c1c4bd5 23 #endif
baba2357 1:86d25c1c4bd5 24 void spiInit(){
baba2357 1:86d25c1c4bd5 25 from_mbed.format(16,3);
baba2357 1:86d25c1c4bd5 26 from_gyro.format(16,3);
baba2357 1:86d25c1c4bd5 27 from_mbed.frequency(1000000);
baba2357 1:86d25c1c4bd5 28 from_gyro.frequency(1000000);
baba2357 1:86d25c1c4bd5 29 }
baba2357 2:bed6b204e64c 30
baba2357 1:86d25c1c4bd5 31 void spi_mbed(){
baba2357 2:bed6b204e64c 32 u16 FM;
baba2357 1:86d25c1c4bd5 33 if(from_mbed.receive()){
baba2357 2:bed6b204e64c 34 FM=from_mbed.read();
baba2357 2:bed6b204e64c 35 RR=FM>>15;
baba2357 2:bed6b204e64c 36 LR=FM>>14;
baba2357 2:bed6b204e64c 37 if(RR==1){
baba2357 2:bed6b204e64c 38 } //右旋回の関数へ
baba2357 2:bed6b204e64c 39 else if(LR==1){
baba2357 2:bed6b204e64c 40 } //左旋回の関数へ
baba2357 2:bed6b204e64c 41 else if(FM>>13==1){ //コントローラーのX方向成分入力
baba2357 2:bed6b204e64c 42 speed_X=FM>>7;
baba2357 2:bed6b204e64c 43 speed_X=FM-128;
baba2357 2:bed6b204e64c 44 if(FM>>6==1) speed_Y=FM-128;
baba2357 2:bed6b204e64c 45 else speed_Y=FM;
baba2357 1:86d25c1c4bd5 46 }
baba2357 2:bed6b204e64c 47 else{
baba2357 2:bed6b204e64c 48 speed_X=FM>>7;
baba2357 2:bed6b204e64c 49 speed_Y=(-1)*speed_Y;
baba2357 2:bed6b204e64c 50 if(FM>>6==1) speed_Y=FM-128;
baba2357 2:bed6b204e64c 51 else speed_Y=FM;
baba2357 2:bed6b204e64c 52 }
baba2357 1:86d25c1c4bd5 53 }
baba2357 2:bed6b204e64c 54 }
baba2357 2:bed6b204e64c 55
baba2357 1:86d25c1c4bd5 56 void getGyro(){
baba2357 1:86d25c1c4bd5 57 u16 data;
baba2357 2:bed6b204e64c 58 if(from_gyro.receive()){
baba2357 2:bed6b204e64c 59 data = from_gyro.read();
baba2357 1:86d25c1c4bd5 60 if(data >> 15) angle = -(data & 0x7fff);
baba2357 1:86d25c1c4bd5 61 else angle = data & 0x7fff;
baba2357 1:86d25c1c4bd5 62 now_angle = (double)angle / 10;
baba2357 2:bed6b204e64c 63 }
baba2357 1:86d25c1c4bd5 64 }