LPC824専用プログラム
Dependencies: Ping SDFileSystem mbed-src
Diff: format.cpp
- Revision:
- 0:2f48b11b154f
- Child:
- 1:7070fb876a2c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/format.cpp Thu Dec 31 05:16:23 2015 +0000 @@ -0,0 +1,198 @@ +#include "mbed.h" +#include "extern.h" + +#ifdef SD_CARD +void Sd_System(void){ + + char buf[BUFSIZE]; + uint16_t FileData[FDATA_NUM]={0}, num, data; + uint8_t spi_num, h_byte, l_byte; + uint16_t spi_data; + int i; + FILE *fp; + pc.printf("Hello World!\n"); + + mkdir("/sd/mydir", 0777); + + while(1){ + + val = nucleo.receive(); + if(!val) return; + + spi_num = device.read(); + h_byte = device.read(); + l_byte = device.read(); + + if((spi_num&0x80)>>7 == 1){ + + } + else{ + + } + if(val) { + + packet = (front_dis&0x00FF); + nucleo.reply(packet); + packet = (front_dis&0xFF00)>>8; + nucleo.reply(packet); + packet = (rear_dis&0x00FF); + nucleo.reply(packet); + packet = (rear_dis&0xFF00)>>8; + nucleo.reply(packet); + } + // example writing to SD card, sford + + fp = fopen("/sd/mydir/sdtest.txt", "r"); + if(fp == NULL) { + error("Could not open file for read\n"); + } + while(fgets(buf, sizeof(buf), fp) != NULL){ + if(buf[0] == '#') continue; + + num = atol(strtok(buf, ",")); + data = atol(strtok(NULL, "\r\n\0")); + + if((num>=0)&&(num<FDATA_NUM)){ + FileData[num] = data; + pc.printf("%d, %ld\n", num, FileData[num]); + } + else{ + continue; + } + } + fclose(fp); + + FileData[0] = 1; + FileData[1] = 2; + FileData[2] = 5; + FileData[3] = 10; + FileData[4] = 20; + FileData[5] = 50; + FileData[6] = 10; + FileData[7] = 20; + FileData[8] = 50; + FileData[9] = 100; + + fp = fopen("/sd/mydir/sdtest.txt", "w"); + for(i=0; i<FDATA_NUM; i++) fprintf(fp, "%d, %ld\n", i, FileData[i]); + fclose(fp); + + //pc.printf("Goodbye World!\n"); + } +} +#endif /*SD_CARD*/ + +#ifdef ULTRA_SONIC +void Usw_System(void){ + uint8_t paket, val, order; + uint16_t front_dis=0, rear_dis=0; + + while(1){ + front.Send(); + wait_ms(30); + front_dis = front.Read_cm(); + + rear.Send(); + wait_ms(30); + rear_dis = rear.Read_cm(); + + while(1){ + val = nucleo.receive(); + if(val){ + order = nucleo.read(); + switch(order){ + case 0x01: + packet = (front_dis&0x00FF);break; + case 0x02: + packet = (front_dis&0xFF00)>>8;break; + case 0x03: + packet = (rear_dis&0x00FF);break; + case 0x04: + packet = (rear_dis&0xFF00)>>8;break; + default: + packet = 0x00;break; + } + nucleo.reply(packet); + } + else{ + break; + } + } + } +} +#endif /*ULTRA_SONIC*/ + +#ifdef COLOR_SENSOR +void Color_System(void){ + + while(1){ + + ColorSensor[0] + } +} +#endif /*COLOR_SENSOR*/ + +#ifdef IR_SENSOR +void Ir_System(void){ + + static uint8_t const START_BIT = 0x04; + static uint8_t const MODE_SINGLE = 0x02; // Single-ended mode + //static uint8_t const MODE_DIFF = 0x00; // Differential mode + + static uint8_t const IR_NUM[IC_NUM] = {6, 6, 8}; + + uint8_t ic, ch; + unsigned int command_high, command_low; + unsigned int high_byte, low_byte; + + uint8_t packet, val, order; + + uint16_t ir_data[IC_NUM][CH_NUM]; + + ir.frequency(1000000); + + for(ic=0; ic<IC_NUM; ic++) cs[ic]=1; + while(1) { + for(ic=0; ic<IC_NUM; ic++){//IC + for(ch=0; ch<IR_NUM[ic]; ch++){//Ch + command_high = START_BIT | MODE_SINGLE | ((ch & 0x04) >> 2); + command_low = (ch & 0x03) << 6; + + cs[ic] = 0; + + ir.write(command_high); + high_byte = ir.write(command_low) & 0x0F; + low_byte = ir.write(0); + + cs[ic] = 1; + wait_us(1); + + //ir_data[ic][ch] = (high_byte << 8) | low_byte; + ir_data[ic][ch] = ((high_byte << 4) | (low_byte >> 4))&0xFF; + } + } + while(1){ + val = nucleo.receive(); + if(val){ + order = nucleo.read(); + packet = ir_data[order/10][order%10] & 0x00FF; + nucleo.reply(packet); + //for(ic=0; ic<IC_NUM; ic++){//IC + // for(ch=0; ch<IR_NUM[ic]; ch++){//Ch + // packet = ir_data[ic][ch] & 0x00FF; + // nucleo.reply(packet); + // } + //} + } + else{ + break; + } + } + + } +} +#endif /*IR_SENSOR*/ + + + +