ロボカップのブロック大会2014で使用したプログラムです。 ロボットには、mbedを2台使ってI2C通信しています。 これはMaster側です。 ※独自規格を使用しています。

Dependencies:   ACM1602NI Ping mbed-rtos mbed

main.cpp

Committer:
denden
Date:
2014-03-10
Revision:
0:27bf77b6ec71

File content as of revision 0:27bf77b6ec71:

// Master側プログラム

#include <math.h>
#include "mbed.h"
#include "rtos.h"
#include "ACM1602NI.h"
#include "Ping.h"

#define PI 3.14159265358979 // 円周率πの定義

#include "PinMode.h"
#include "GlobalVariable.h"
#include "Prototype.h"

#include "I2C_Master.h"
#include "HMC6352.h"
#include "Moter.h"
#include "RotarySW.h"


void SW_Start(void) {
    sw_flag = !sw_flag;
}


int main() {
    /*---- 初期化処理 ----*/
    SW1.rise(&SW_Start);
    MoterReset(0, 0, 0);
    COMPASS_RESET();
    wait(0.7);


    /*---- modeを確認 ----*/
    
    MBED_MODE(); wait(1.0);

    /*---- 各モードに移行 ----*/
    lcd.locate(0, 0);
    switch(Mode[0]) {
        case 0: lcd.printf("FW");              while(1) FW();         
        case 1: lcd.printf("DF");              while(1) DF();         
        case 2: lcd.printf("DEBUG_IR");        while(1) DEBUG_IR();   
        case 3: lcd.printf("DEBUG_PING");      while(1) DEBUG_PING(); 
        case 4: lcd.printf("DEBUG_ANGLE");     while(1) DEBUG_ANGLE();
        case 5: lcd.printf("DEBUG_KICKER");    while(1) DEBUG_KICKER();
        case 6: lcd.printf("DEBUG_MOTER");     while(1) DEBUG_MOTER();
        case 7: lcd.printf("DEBUG_LINE");      while(1) DEBUG_LINE(); 
        case 8: lcd.printf("FW");              while(1) FW();         
        case 9: lcd.printf("FW");              while(1) FW();         
        default: return 0;
    }
}