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

Dependencies:   mbed

spi_nucleo.h

Committer:
baba2357
Date:
2016-03-31
Revision:
4:ef6f18eda3e2
Parent:
3:6ab4e8e3aa02
Child:
7:4f5cd0051db0

File content as of revision 4:ef6f18eda3e2:

#ifndef SPI_NUCLEO_H
#define SPI_NUCLEO_H
#include "pin_file.h"
#include <string.h>

//SPI mbed
bool RR=0;
bool LR=0;
int speed_X;
int speed_Y;
bool Xpm=0;
bool Ypm=0;
//SPI NUCLEO
void spi_mbed();
void spi_nucleo();
void getGyro();
void spiInit();
typedef unsigned u16;
u16 FM;
long int angle;
double now_angle;
Serial pc(USBTX,USBRX);
void spiInit();
void spi_mbed();
void getGyro();
#endif 

void spiInit()
{
    from_mbed.format(16,3);
    from_gyro.format(16,3);
    from_mbed.frequency(1000000);
    from_gyro.frequency(1000000);
}

void spi_mbed()
{       
    if(from_mbed.receive()) {
        RR=0;
        LR=0;
        FM=from_mbed.read();
        Xpm=FM>>13;
        Ypm=(FM&0x40)>>6;
        if(FM>>15==1) {
            RR=1;
        } //右旋回の関数へ
        else if(FM>>14==1) {
            LR=1;
        } //左旋回の関数へ
        else if(Xpm==1) { //コントローラーのX方向成分入力
            speed_X=FM&0x1F80;
            speed_X=speed_X>>7;
            if(Ypm==0) speed_Y=FM&0x3F;
            else {
                speed_Y=FM&0x3F;
                speed_Y=(-1)*speed_Y;
            }
        }
        else {
            speed_X=FM&0x1F80;
            speed_X=speed_X>>7;
            speed_X=(-1)*speed_X;
            if(Ypm==0) speed_Y=FM&0x3F;
            else {
                speed_Y=FM&0x3F;
                speed_Y=(-1)*speed_Y;
            }
        }
    }
}

void getGyro()
{
    int data;
    if(from_gyro.receive()) {
        data = from_gyro.read();
    if(data >> 15) angle = -(data & 0x7fff);
        else angle = data & 0x7fff;
        now_angle = (double)angle / 10;
//        pc.printf("%d\r\n",data);
    }
}