せとうちオープン用のメインプログラム
Dependencies: mbed AQM1602 HMC6352 PID
Revision 0:b910276f9da2, committed 2016-05-01
- Comitter:
- lilac0112_1
- Date:
- Sun May 01 06:30:37 2016 +0000
- Commit message:
- from 2v10
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/AQM1602.lib Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/yasuyuki/code/AQM1602/#4c3df2da124c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/HMC6352.lib Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/aberk/code/HMC6352/#83c0cb554099
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/PID.lib Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/aberk/code/PID/#6e12a3e5af19
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/adns_9800/adns_9800.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,158 @@ +/** + * @author Alexander Entinger, MSc / LXRobotics + * @brief this class acts as interface for accessing the adns-9800 sensor - based on https://github.com/mrjohnk/ADNS-9800 + * @file adns_9800.cpp + */ + +#include "adns_9800.h" +#include "adns_9800_regs.h" +#include "adns_9800_srom_a4.h" + +/** + * @brief Constructor + */ +adns_9800::adns_9800(PinName mosi, PinName miso, PinName sclk, PinName ncs) : m_spi(mosi, miso, sclk), m_ncs_pin(ncs) +{ + m_spi.format(8, 3); // 8 bits with mode 3 =>Polarity = 1, Phase = 1 + m_spi.frequency(1000000); // 1 MHz + + startup(); +} + +/** + * @brief Destructor + */ +adns_9800::~adns_9800() +{ + +} + +/** + * @brief returns true if a motion has occured since the last readout + */ +bool adns_9800::new_motion_data_available() +{ + uint8_t const motion_reg = read_reg(REG_Motion); + bool const new_data_available = (motion_reg & 0x80) > 0; + return new_data_available; +} + +/** + * @brief retrieves the latest delta values + */ +void adns_9800::get_delta_x_y(int16_t &delta_x, int16_t &delta_y) +{ + uint16_t delta_x_l = (uint16_t)(read_reg(REG_Delta_X_L)); + uint16_t delta_x_h = (uint16_t)(read_reg(REG_Delta_X_H)) << 8; + delta_x = (int16_t)(delta_x_h | delta_x_l); + + uint16_t delta_y_l = (uint16_t)(read_reg(REG_Delta_Y_L)); + uint16_t delta_y_h = (uint16_t)(read_reg(REG_Delta_Y_H)) << 8; + delta_y = (int16_t)(delta_y_h | delta_y_l); +} + +/** + * @brief start and stop communication with the sensor by clearing/setting the ncs pin + */ +void adns_9800::com_begin() +{ + m_ncs_pin = 0; +} +void adns_9800::com_end() +{ + m_ncs_pin = 1; +} + +/** + * @brief provide read/write access to a adns register + */ +uint8_t adns_9800::read_reg(uint8_t const address) +{ + com_begin(); + + // send adress of the register, with MSBit = 0 to indicate it's a read + m_spi.write(address & 0x7f ); + wait_us(100); // tSRAD + // read data + uint8_t data = m_spi.write(0); + + wait_us(1); // tSCLK-NCS for read operation is 120ns + com_end(); + wait_us(19); // tSRW/tSRR (=20us) minus tSCLK-NCS + + return data; +} +void adns_9800::write_reg(uint8_t const address, uint8_t const data) +{ + com_begin(); + + //send adress of the register, with MSBit = 1 to indicate it's a write + m_spi.write(address | 0x80 ); + //sent data + m_spi.write(data); + + wait_us(20); // tSCLK-NCS for write operation + com_end(); + wait_us(100); // tSWW/tSWR (=120us) minus tSCLK-NCS. Could be shortened, but is looks like a safe lower bound +} + +/** + * @brief upload the firmware + */ +void adns_9800::upload_firmware() +{ + // set the configuration_IV register in 3k firmware mode + write_reg(REG_Configuration_IV, 0x02); // bit 1 = 1 for 3k mode, other bits are reserved + + // write 0x1d in SROM_enable reg for initializing + write_reg(REG_SROM_Enable, 0x1d); + + // wait for more than one frame period + wait_ms(10); // assume that the frame rate is as low as 100fps... even if it should never be that low + + // write 0x18 to SROM_enable to start SROM download + write_reg(REG_SROM_Enable, 0x18); + + // write the SROM file (=firmware data) + com_begin(); + m_spi.write(REG_SROM_Load_Burst | 0x80); // write burst destination adress + wait_us(15); + + // send all bytes of the firmware + for(int i = 0; i < firmware_length; i++) + { + m_spi.write(firmware_data[i]); + wait_us(15); + } + + com_end(); +} + +/** + * @brief starts the sensor up + */ +void adns_9800::startup() +{ + com_end(); // ensure that the serial port is reset + com_begin(); // ensure that the serial port is reset + com_end(); // ensure that the serial port is reset + write_reg(REG_Power_Up_Reset, 0x5a); // force reset + wait_ms(50); // wait for it to reboot + // read registers 0x02 to 0x06 (and discard the data) + read_reg(REG_Motion); + read_reg(REG_Delta_X_L); + read_reg(REG_Delta_X_H); + read_reg(REG_Delta_Y_L); + read_reg(REG_Delta_Y_H); + // upload the firmware + upload_firmware(); + wait_ms(10); + //enable laser(bit 0 = 0b), in normal mode (bits 3,2,1 = 000b) + // reading the actual value of the register is important because the real + // default value is different from what is said in the datasheet, and if you + // change the reserved bytes (like by writing 0x00...) it would not work. + uint8_t laser_ctrl0 = read_reg(REG_LASER_CTRL0); + write_reg(REG_LASER_CTRL0, laser_ctrl0 & 0xf0 ); + + wait_ms(1); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/adns_9800/adns_9800.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,59 @@ +/** + * @author Alexander Entinger, MSc / LXRobotics + * @brief this class acts as interface for accessing the adns-9800 sensor - based on https://github.com/mrjohnk/ADNS-9800 + * @file adns_9800.h + */ + +#ifndef ADNS_9800_H_ +#define ADNS_9800_H_ + +#include "mbed.h" + +class adns_9800 +{ +public: + /** + * @brief Constructor + */ + adns_9800(PinName mosi, PinName miso, PinName sclk, PinName ncs); + + /** + * @brief Destructor + */ + ~adns_9800(); + + /** + * @brief returns true if a motion has occured since the last readout + */ + bool new_motion_data_available(); + + /** + * @brief retrieves the latest delta values + */ + void get_delta_x_y(int16_t &delta_x, int16_t &delta_y); + +private: + SPI m_spi; + DigitalOut m_ncs_pin; + + /** + * @brief start and stop communication with the sensor by clearing/setting the ncs pin + */ + void com_begin(); + void com_end(); + /** + * @brief provide read/write access to a adns register + */ + uint8_t read_reg(uint8_t const address); + void write_reg(uint8_t const address, uint8_t const data); + /** + * @brief upload the firmware + */ + void upload_firmware(); + /** + * @brief starts the sensor up + */ + void startup(); +}; + +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/adns_9800/adns_9800_regs.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,56 @@ +/** + * @author Alexander Entinger, MSc / LXRobotics + * @brief this file contains the register defintions for the adns-9800 sensor - based on https://github.com/mrjohnk/ADNS-9800 + * @file adns_9800_regs.h + */ + +#ifndef ADNS_9800_REGS_H_ +#define ADNS_9800_REGS_H_ + +#define REG_Product_ID 0x00 +#define REG_Revision_ID 0x01 +#define REG_Motion 0x02 +#define REG_Delta_X_L 0x03 +#define REG_Delta_X_H 0x04 +#define REG_Delta_Y_L 0x05 +#define REG_Delta_Y_H 0x06 +#define REG_SQUAL 0x07 +#define REG_Pixel_Sum 0x08 +#define REG_Maximum_Pixel 0x09 +#define REG_Minimum_Pixel 0x0a +#define REG_Shutter_Lower 0x0b +#define REG_Shutter_Upper 0x0c +#define REG_Frame_Period_Lower 0x0d +#define REG_Frame_Period_Upper 0x0e +#define REG_Configuration_I 0x0f +#define REG_Configuration_II 0x10 +#define REG_Frame_Capture 0x12 +#define REG_SROM_Enable 0x13 +#define REG_Run_Downshift 0x14 +#define REG_Rest1_Rate 0x15 +#define REG_Rest1_Downshift 0x16 +#define REG_Rest2_Rate 0x17 +#define REG_Rest2_Downshift 0x18 +#define REG_Rest3_Rate 0x19 +#define REG_Frame_Period_Max_Bound_Lower 0x1a +#define REG_Frame_Period_Max_Bound_Upper 0x1b +#define REG_Frame_Period_Min_Bound_Lower 0x1c +#define REG_Frame_Period_Min_Bound_Upper 0x1d +#define REG_Shutter_Max_Bound_Lower 0x1e +#define REG_Shutter_Max_Bound_Upper 0x1f +#define REG_LASER_CTRL0 0x20 +#define REG_Observation 0x24 +#define REG_Data_Out_Lower 0x25 +#define REG_Data_Out_Upper 0x26 +#define REG_SROM_ID 0x2a +#define REG_Lift_Detection_Thr 0x2e +#define REG_Configuration_V 0x2f +#define REG_Configuration_IV 0x39 +#define REG_Power_Up_Reset 0x3a +#define REG_Shutdown 0x3b +#define REG_Inverse_Product_ID 0x3f +#define REG_Motion_Burst 0x50 +#define REG_SROM_Load_Burst 0x62 +#define REG_Pixel_Burst 0x64 + +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/adns_9800/adns_9800_srom_a4.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,219 @@ +/** + * @author Alexander Entinger, MSc / LXRobotics + * @brief this file contains the firmware for the mouse sensor - based on https://github.com/mrjohnk/ADNS-9800 + * @file adns_9800_srom_a4.h + */ + +#ifndef ADNS_9800_SROM_A4_H_ +#define ADNS_9800_SROM_A4_H_ + +static uint16_t const firmware_length = 3070; + +static uint8_t firmware_data[firmware_length] = { +0x03, 0xa4, 0x6e, 0x16, 0x6d, 0x89, 0x3e, 0xfe, 0x5f, 0x1c, 0xb8, 0xf2, 0x47, 0x0c, 0x7b, +0x74, 0x6a, 0x56, 0x0f, 0x7d, 0x76, 0x71, 0x4b, 0x0c, 0x97, 0xb6, 0xcf, 0xfd, 0x78, 0x72, +0x66, 0x2f, 0xbd, 0xf8, 0x53, 0x24, 0xab, 0xd4, 0x2c, 0xb0, 0xe4, 0x32, 0xf1, 0x6a, 0x56, +0x2e, 0xbf, 0xfc, 0x7a, 0x57, 0x0d, 0x79, 0x70, 0x66, 0x46, 0x0e, 0x7f, 0x5d, 0x19, 0x91, +0xaa, 0xc2, 0x0d, 0x8e, 0x7f, 0x5d, 0x19, 0xb0, 0xe2, 0x46, 0xef, 0x5c, 0x3a, 0xd7, 0x2c, +0xbb, 0xf4, 0x6a, 0x37, 0xcd, 0x18, 0xb2, 0xc7, 0x0c, 0x9a, 0x97, 0x8f, 0x52, 0xfd, 0x0d, +0xb8, 0x41, 0x00, 0x9e, 0x8e, 0x9a, 0x1e, 0x6d, 0x0c, 0xe2, 0xaa, 0x13, 0x93, 0xb8, 0xc1, +0x2a, 0x29, 0xbb, 0x0b, 0xe3, 0x71, 0x08, 0x6d, 0xfd, 0xb6, 0xd9, 0xcf, 0x65, 0x21, 0x27, +0x45, 0x1b, 0xbe, 0xe2, 0x61, 0x86, 0x3c, 0xbf, 0x68, 0x9c, 0xd6, 0x75, 0x01, 0x5e, 0xe0, +0xc6, 0x92, 0x79, 0xf4, 0x6a, 0xa9, 0xbb, 0x2a, 0x79, 0xd0, 0xe1, 0x5c, 0x32, 0xb1, 0x5a, +0x1b, 0xba, 0xaf, 0x11, 0xea, 0x24, 0x6a, 0x83, 0x4f, 0x8d, 0xed, 0x19, 0x62, 0x70, 0x54, +0xfb, 0x0e, 0x1f, 0x83, 0xcc, 0xf0, 0xb7, 0xae, 0x05, 0xd3, 0x42, 0x5d, 0x48, 0xa0, 0x7a, +0x0b, 0x73, 0xb3, 0xc8, 0xa6, 0xb7, 0x1b, 0x08, 0x13, 0x9b, 0x89, 0x44, 0x42, 0xae, 0xd8, +0x6a, 0xba, 0x9b, 0x84, 0x25, 0x8b, 0xa4, 0x5e, 0x0b, 0x85, 0xb0, 0x8f, 0x8d, 0x80, 0x9c, +0xd1, 0x52, 0xc7, 0xcb, 0xff, 0x8d, 0x8b, 0xdd, 0x87, 0xf2, 0x63, 0xca, 0xe7, 0x4f, 0x4a, +0x57, 0x3c, 0xdf, 0xaf, 0xcb, 0x5c, 0xbb, 0x39, 0x0b, 0x01, 0x9c, 0x79, 0x22, 0x15, 0xb8, +0xa0, 0xd3, 0x72, 0x02, 0x35, 0x20, 0x40, 0xe0, 0x17, 0xde, 0x89, 0x88, 0xce, 0xe9, 0x2b, +0x75, 0xba, 0xa0, 0x96, 0x24, 0x1e, 0x71, 0xb5, 0x15, 0x00, 0x61, 0xe0, 0x5c, 0x93, 0x4e, +0xea, 0x53, 0xd0, 0xfc, 0xef, 0xae, 0x2b, 0xeb, 0x8f, 0xc7, 0x69, 0x68, 0xc7, 0xfc, 0x1a, +0x1f, 0x41, 0x0d, 0xd0, 0xc1, 0x03, 0xaf, 0xc9, 0xfd, 0xe4, 0x21, 0x43, 0xc4, 0xef, 0xc2, +0xdd, 0x7b, 0x73, 0xbc, 0xca, 0xf4, 0xa5, 0x2e, 0x83, 0x90, 0x1f, 0x78, 0x41, 0xc3, 0x13, +0x8e, 0x95, 0x0a, 0x57, 0xdf, 0x0a, 0x87, 0x40, 0x2b, 0xd9, 0xba, 0x56, 0x59, 0x9d, 0x2c, +0xb2, 0xb8, 0xb3, 0xfb, 0x77, 0x78, 0x3a, 0xef, 0xbf, 0x2d, 0xc8, 0xb9, 0x94, 0x62, 0x47, +0x92, 0x98, 0x42, 0x23, 0x07, 0xd9, 0x39, 0x46, 0x5e, 0x6f, 0xe0, 0x46, 0x14, 0x0e, 0x3d, +0x74, 0x40, 0x21, 0xb4, 0x67, 0x05, 0xa8, 0xe2, 0x12, 0x93, 0x41, 0xc2, 0x80, 0xb9, 0x56, +0x4b, 0xf9, 0x5a, 0x15, 0x9c, 0x37, 0xc4, 0x4b, 0x05, 0xad, 0x5a, 0xaf, 0xa1, 0x3e, 0xe4, +0x6e, 0xc5, 0x91, 0xb6, 0x75, 0x7d, 0x1b, 0xe4, 0xc5, 0x4d, 0x28, 0x6b, 0xe9, 0xad, 0x20, +0x8b, 0x64, 0x91, 0x57, 0x4f, 0xdf, 0x9a, 0x97, 0x7e, 0xbe, 0x8e, 0xd6, 0xd6, 0x3b, 0x17, +0xf9, 0x19, 0x28, 0xb2, 0x2e, 0x8f, 0x26, 0xb4, 0x9b, 0xe5, 0xde, 0x0f, 0x8d, 0x0a, 0x9a, +0x9d, 0x1b, 0xde, 0x6f, 0xcb, 0x84, 0xba, 0x26, 0xd0, 0x12, 0xef, 0x30, 0x38, 0x43, 0xac, +0xb7, 0xa7, 0xef, 0x09, 0x7c, 0x52, 0x27, 0xfc, 0x2e, 0xab, 0x50, 0xa0, 0x21, 0x40, 0xe7, +0xc1, 0x5f, 0x02, 0x41, 0x84, 0xa8, 0x54, 0xa8, 0x2e, 0x37, 0x6f, 0xd8, 0xb1, 0xa4, 0xd0, +0x75, 0xef, 0x31, 0xca, 0x54, 0x1e, 0x33, 0xad, 0x19, 0xa1, 0x94, 0xbc, 0x1b, 0x34, 0x6c, +0xfb, 0x5f, 0xcc, 0x45, 0x76, 0xc8, 0x96, 0xce, 0x1c, 0x3a, 0x0e, 0x77, 0xed, 0xd8, 0xd2, +0x96, 0xac, 0x77, 0x30, 0xe1, 0xef, 0xb0, 0x33, 0xf0, 0x6e, 0x3d, 0xce, 0x5e, 0x6d, 0xde, +0x8a, 0xdc, 0x9b, 0x91, 0x63, 0x2a, 0x95, 0x20, 0x0d, 0xfd, 0x78, 0xba, 0xcb, 0x15, 0x43, +0xc9, 0x20, 0x96, 0x83, 0x06, 0xd9, 0x11, 0xf3, 0xe2, 0x13, 0xcf, 0x9c, 0x91, 0x7f, 0x33, +0x46, 0xa7, 0xe2, 0xd3, 0x75, 0xff, 0x4f, 0x0c, 0x0c, 0xaf, 0xcd, 0xa6, 0x9c, 0xa6, 0x73, +0xe2, 0x6d, 0x17, 0x16, 0xb5, 0x99, 0x80, 0x35, 0xd9, 0x61, 0xf3, 0x48, 0x23, 0xff, 0xae, +0x53, 0x89, 0xfa, 0x55, 0x1c, 0x37, 0xa5, 0xe8, 0x62, 0x12, 0xb2, 0x22, 0x04, 0xed, 0x42, +0xb6, 0x65, 0xc4, 0x41, 0x42, 0x72, 0xca, 0x7e, 0x5e, 0x2f, 0x69, 0x46, 0xef, 0xbd, 0x7e, +0xdf, 0x35, 0x1e, 0x5b, 0x77, 0xaf, 0x8d, 0x39, 0xf8, 0xa7, 0xd8, 0x31, 0x00, 0xd3, 0x85, +0x66, 0xd5, 0xcd, 0x59, 0xd6, 0x5e, 0x9f, 0xb2, 0x3f, 0x09, 0xd1, 0xc4, 0x5b, 0x74, 0x62, +0xd3, 0x30, 0x35, 0xf3, 0xe3, 0x7d, 0x7f, 0xab, 0x38, 0xc2, 0x33, 0x42, 0xd0, 0x67, 0xd0, +0xf4, 0xcf, 0x97, 0xec, 0x35, 0x31, 0xfe, 0x94, 0x9c, 0xa1, 0x66, 0x91, 0xc8, 0x05, 0x45, +0x19, 0x85, 0x0f, 0x4a, 0xb0, 0x3a, 0x20, 0x44, 0xa4, 0x6b, 0x33, 0x0c, 0xa6, 0xb4, 0x4c, +0x46, 0x30, 0x15, 0x2d, 0xbb, 0x04, 0x3c, 0x9d, 0x48, 0xf6, 0x84, 0x9a, 0x62, 0x07, 0xe9, +0x6c, 0x8f, 0xde, 0x29, 0x28, 0x5a, 0x17, 0xec, 0x56, 0xf3, 0xc4, 0xe0, 0x86, 0x2f, 0xb5, +0x1c, 0x8f, 0xaa, 0xc6, 0xc0, 0xcf, 0x0d, 0xcf, 0x1d, 0x4f, 0xb2, 0xbf, 0x26, 0x5c, 0x7c, +0x8d, 0xd3, 0xe4, 0x56, 0xd1, 0xe8, 0x90, 0x94, 0x6a, 0xba, 0x27, 0xba, 0xf7, 0xba, 0x39, +0xc8, 0x08, 0x03, 0x25, 0x7f, 0x16, 0x8f, 0x61, 0xbf, 0xdf, 0x45, 0x88, 0x7d, 0x90, 0x80, +0x55, 0x58, 0x72, 0x4f, 0xf8, 0xd0, 0x94, 0xbb, 0x55, 0x2a, 0x47, 0x4f, 0xaa, 0x87, 0x2d, +0xd4, 0xe7, 0xaf, 0x08, 0x33, 0xc9, 0xec, 0x0b, 0x5b, 0xb8, 0x53, 0x27, 0x2e, 0xfb, 0xad, +0x69, 0xb6, 0x53, 0x64, 0x48, 0x13, 0x41, 0xf8, 0x02, 0x06, 0x6f, 0xb8, 0xcc, 0x64, 0xec, +0x65, 0x65, 0x7e, 0xdf, 0x3f, 0x1e, 0xe1, 0xee, 0xde, 0x3c, 0x1a, 0xe8, 0x0f, 0xf0, 0x2c, +0xea, 0x6e, 0x52, 0x77, 0x34, 0x41, 0xa1, 0xcc, 0x72, 0x8f, 0x6e, 0x9c, 0x3b, 0x8d, 0x39, +0xdf, 0xd4, 0x08, 0x24, 0xba, 0x36, 0xc7, 0x09, 0xf2, 0xf1, 0xa2, 0xd1, 0xe0, 0xa3, 0x6a, +0x5c, 0xc7, 0xb2, 0x0d, 0x1c, 0xfb, 0x5f, 0xc8, 0x86, 0xd8, 0x3e, 0x1c, 0xb7, 0x1f, 0x2d, +0xd8, 0xf2, 0xcd, 0x52, 0xeb, 0xde, 0x50, 0x14, 0xb7, 0xc7, 0xa2, 0x8b, 0x78, 0x70, 0x11, +0x87, 0x1a, 0xc5, 0xb8, 0xe5, 0x5e, 0xa5, 0xc9, 0x94, 0x22, 0x66, 0x7b, 0x8b, 0x74, 0xab, +0x85, 0x28, 0x95, 0x90, 0x6e, 0x07, 0xdd, 0x79, 0x57, 0xb3, 0x75, 0xc8, 0x18, 0x67, 0x39, +0x06, 0x21, 0x55, 0xba, 0xba, 0xda, 0xf9, 0x3b, 0xe9, 0x5d, 0xc9, 0x1f, 0x6f, 0x61, 0x3b, +0xc2, 0x7e, 0x3d, 0x07, 0xa6, 0x84, 0x91, 0xb7, 0x63, 0x7e, 0x5f, 0xfc, 0xd1, 0x7d, 0x08, +0xdd, 0x79, 0x07, 0xe1, 0x9e, 0x11, 0x25, 0xe8, 0x10, 0x05, 0x66, 0xfa, 0xca, 0xc3, 0x41, +0x01, 0x27, 0x54, 0xd2, 0x46, 0xae, 0xe3, 0xff, 0x43, 0xae, 0x8d, 0x0e, 0x31, 0x13, 0x1f, +0x95, 0x79, 0x82, 0x86, 0x7e, 0xfb, 0xd4, 0x17, 0x57, 0xb8, 0x25, 0xe7, 0x1d, 0x18, 0x8f, +0x06, 0x1a, 0xe5, 0xef, 0x55, 0x28, 0x72, 0x42, 0xae, 0xdf, 0x9e, 0xbb, 0x14, 0xab, 0xd8, +0x36, 0x4f, 0x46, 0x4b, 0x35, 0x92, 0x64, 0x6d, 0xbb, 0x60, 0xc2, 0x0b, 0x6f, 0x57, 0x5e, +0x3a, 0x8f, 0x3d, 0xcb, 0xe5, 0xda, 0x6c, 0x5c, 0x85, 0x8f, 0x9d, 0xa6, 0x7e, 0x1e, 0x49, +0x1a, 0xcc, 0xc9, 0xec, 0x04, 0xab, 0x35, 0xf2, 0x9b, 0xe7, 0xb3, 0x52, 0xb1, 0x1c, 0xc1, +0xfe, 0x5c, 0x0b, 0xf5, 0x72, 0x0b, 0xec, 0x8e, 0xcd, 0x67, 0x98, 0xbf, 0xa5, 0x28, 0xca, +0x48, 0x9b, 0x60, 0x1c, 0xee, 0x00, 0xde, 0x01, 0xbc, 0xa4, 0x02, 0xd2, 0x19, 0xb6, 0x05, +0xd6, 0x52, 0x78, 0xdb, 0x20, 0xbd, 0x3f, 0x95, 0x97, 0xb1, 0x59, 0x3d, 0x9d, 0x83, 0xc2, +0xfd, 0x23, 0xa5, 0xfd, 0xd8, 0x20, 0x92, 0x27, 0xee, 0x3c, 0xe9, 0x5a, 0x61, 0x11, 0xe1, +0x31, 0xb4, 0x4c, 0xb4, 0xa9, 0xe2, 0x6d, 0x2e, 0xae, 0x5f, 0x37, 0x8e, 0x07, 0xfd, 0xed, +0x85, 0x07, 0x79, 0x43, 0x7e, 0xfa, 0xd6, 0x03, 0xe8, 0x5b, 0x65, 0x2a, 0xe4, 0xf9, 0x36, +0x9e, 0xff, 0x53, 0x6d, 0x51, 0x50, 0x61, 0x72, 0x18, 0xcd, 0x3d, 0xe4, 0xb6, 0x27, 0x10, +0x4a, 0xdd, 0xfd, 0xa3, 0x36, 0x67, 0xac, 0xc7, 0x85, 0x1c, 0xd3, 0xe7, 0x17, 0x74, 0xe2, +0x8e, 0xee, 0xa6, 0xf4, 0xb6, 0x86, 0x24, 0xcf, 0x40, 0xdf, 0x35, 0x08, 0x0f, 0x55, 0xdd, +0x51, 0xe9, 0x7c, 0x39, 0x78, 0x5c, 0xdf, 0x20, 0x2a, 0xeb, 0xed, 0x35, 0x10, 0x26, 0x98, +0x77, 0x69, 0x4e, 0x51, 0x7a, 0xb2, 0x9f, 0x1d, 0xbc, 0x06, 0xcd, 0xcf, 0x4d, 0xb9, 0xfa, +0xb7, 0xaf, 0x6a, 0x07, 0x0c, 0x96, 0x42, 0x57, 0x6c, 0x3d, 0xa5, 0xfe, 0x91, 0xe3, 0x76, +0x9f, 0xdd, 0x3c, 0x83, 0x25, 0xab, 0x24, 0x89, 0x47, 0x7c, 0xba, 0xd7, 0x7d, 0x72, 0x90, +0x80, 0xb0, 0x03, 0xa4, 0xef, 0x04, 0x0a, 0x9e, 0x5a, 0x14, 0x1c, 0xab, 0x75, 0x47, 0x05, +0xcb, 0xa2, 0x97, 0x0d, 0x6a, 0xa5, 0x7c, 0xa4, 0x40, 0x90, 0xe2, 0x6c, 0xfa, 0xd4, 0xbd, +0x69, 0xd0, 0x06, 0x53, 0x67, 0xfa, 0xe7, 0xcc, 0x06, 0x42, 0x45, 0xbe, 0xbd, 0x6f, 0x3e, +0x48, 0x70, 0xf5, 0x2b, 0x83, 0xc7, 0xba, 0x54, 0x9c, 0xab, 0x54, 0x1f, 0x81, 0xe2, 0x11, +0x82, 0x51, 0x02, 0x51, 0x63, 0x13, 0x86, 0x38, 0xb1, 0x56, 0x0c, 0x4d, 0x68, 0xf3, 0x53, +0x1d, 0xfb, 0xe3, 0x15, 0xe8, 0x42, 0xf3, 0x27, 0x9b, 0xa5, 0x4a, 0x86, 0x90, 0xe1, 0x17, +0xdc, 0x99, 0xe2, 0x5c, 0x79, 0xc6, 0x5f, 0x7e, 0x33, 0xc0, 0x41, 0xb6, 0x9e, 0xfc, 0x10, +0x8a, 0xf4, 0xfd, 0xe9, 0xd2, 0x52, 0x53, 0x54, 0x89, 0x04, 0xbd, 0x69, 0xd2, 0x54, 0x32, +0x96, 0xec, 0x44, 0x08, 0xc3, 0x86, 0x10, 0xd1, 0x3e, 0x32, 0xb5, 0x4f, 0x52, 0x49, 0x58, +0x49, 0xf2, 0x8d, 0x83, 0x89, 0xf3, 0x24, 0x83, 0x65, 0x72, 0x53, 0xaf, 0x2d, 0x90, 0x61, +0x99, 0x92, 0x31, 0x75, 0x93, 0x46, 0xe5, 0xd3, 0x48, 0x11, 0x01, 0xc9, 0x10, 0x98, 0x66, +0x86, 0x79, 0x19, 0x73, 0x7d, 0xda, 0xa1, 0xb0, 0x41, 0x9e, 0xcd, 0xdc, 0xc2, 0x66, 0x86, +0xdd, 0xb8, 0xc9, 0xe3, 0xe7, 0x80, 0x96, 0xf5, 0x38, 0x72, 0xa5, 0xda, 0xe5, 0x38, 0x13, +0x57, 0x2b, 0xbd, 0x32, 0xc7, 0x44, 0xe0, 0xe3, 0x2d, 0xed, 0x54, 0x40, 0x74, 0x9d, 0x02, +0x55, 0x38, 0x45, 0x89, 0x6f, 0x14, 0x40, 0xf6, 0x7b, 0x41, 0x1e, 0x04, 0xdb, 0xa4, 0xd9, +0xf3, 0x90, 0xae, 0x10, 0xc9, 0xc3, 0x72, 0x5d, 0x0d, 0x01, 0x51, 0xf1, 0xd1, 0x96, 0x43, +0xc6, 0x1a, 0x98, 0x3d, 0xbd, 0xcd, 0xdf, 0x44, 0x82, 0xd0, 0x17, 0xa2, 0x9e, 0x6c, 0x0c, +0x2f, 0x46, 0xeb, 0xd8, 0x4a, 0xce, 0xfe, 0xbe, 0xcd, 0xf9, 0xd4, 0xe3, 0x36, 0xf3, 0xd8, +0x1c, 0x00, 0x24, 0xf2, 0xac, 0x03, 0x11, 0xb6, 0x18, 0x8f, 0x9c, 0xba, 0xf6, 0x4f, 0xfd, +0x78, 0x72, 0x83, 0xbf, 0x3e, 0x5c, 0x24, 0xf9, 0x4d, 0xea, 0x85, 0x74, 0x25, 0xe3, 0x46, +0x7b, 0x5e, 0xfe, 0xbd, 0xbf, 0x5e, 0x68, 0x51, 0xe5, 0x53, 0x85, 0x9a, 0x03, 0x4c, 0x09, +0xf0, 0x6b, 0xc2, 0x97, 0xfc, 0xcc, 0x96, 0x2c, 0xaf, 0xf7, 0x8c, 0x26, 0xd8, 0xc7, 0xfc, +0xda, 0x1f, 0x0e, 0x0f, 0x39, 0x1a, 0xb2, 0x0a, 0x98, 0x1a, 0x15, 0xdc, 0x3e, 0x4b, 0x9e, +0x9d, 0x40, 0x3e, 0x71, 0x5b, 0x66, 0xc3, 0x88, 0xf8, 0x57, 0x14, 0x06, 0xc7, 0x2c, 0xcd, +0x31, 0x8e, 0x1e, 0x88, 0x79, 0x9f, 0x33, 0x94, 0xea, 0x21, 0x08, 0x0d, 0x35, 0x7d, 0xa2, +0x57, 0x46, 0xe3, 0x0f, 0xb9, 0xa9, 0xbc, 0xd2, 0x06, 0xb8, 0xfa, 0xf9, 0xb0, 0xf3, 0xc3, +0x8a, 0x38, 0x82, 0x06, 0x7f, 0xd9, 0xce, 0x92, 0xa2, 0x9e, 0xfc, 0x2a, 0xc8, 0x51, 0xb7, +0x7d, 0xdb, 0x47, 0x37, 0xaf, 0x8b, 0xb8, 0x6d, 0x70, 0x21, 0x02, 0x63, 0x5e, 0xbd, 0x38, +0xf1, 0xe1, 0x9f, 0xe3, 0xe2, 0x79, 0x3b, 0x42, 0x05, 0xe2, 0xc6, 0x13, 0x7a, 0xe2, 0x91, +0x73, 0xe2, 0x79, 0x8b, 0x2f, 0x7f, 0x88, 0x02, 0x06, 0x4e, 0xb8, 0x66, 0xb8, 0xc0, 0xc4, +0x3b, 0x1c, 0x3e, 0x96, 0x0f, 0xbb, 0x7f, 0xe8, 0x85, 0x5b, 0xb2, 0xf6, 0xa7, 0x48, 0x5b, +0x95, 0x83, 0x57, 0xe0, 0xe8, 0x22, 0x67, 0x07, 0x3c, 0x27, 0x65, 0x66, 0xe8, 0x84, 0xab, +0xea, 0xf5, 0xb5, 0x00, 0xec, 0xa4, 0xa3, 0xe8, 0x25, 0x77, 0xd1, 0x81, 0x9c, 0x87, 0xd3, +0x1a, 0x31, 0x58, 0xa4, 0x0a, 0xa8, 0x71, 0x9c, 0x52, 0x88, 0x4d, 0x50, 0xff, 0xdb, 0x41, +0x81, 0x04, 0xc3, 0x84, 0xaa, 0x72, 0x79, 0x2f, 0x9b, 0x2d, 0x2f, 0x1c, 0xa5, 0x6b, 0x68, +0x9b, 0x3b, 0x6b, 0x1c, 0x67, 0xeb, 0x42, 0xe0, 0xe3, 0x2c, 0x7b, 0x52, 0x8e, 0xc1, 0x7e, +0xd8, 0xab, 0x02, 0x46, 0xd1, 0x83, 0x38, 0x1a, 0x18, 0xad, 0x90, 0x7f, 0xdb, 0x22, 0xc1, +0x80, 0xea, 0xf7, 0x67, 0x1d, 0xa7, 0xb2, 0x40, 0xdb, 0xc3, 0xc4, 0xd5, 0x8b, 0x49, 0xf8, +0xdc, 0x25, 0x80, 0x7e, 0xfa, 0x64, 0xac, 0x36, 0x4d, 0x74, 0x6f, 0x3e, 0x57, 0x23, 0xb4, +0x49, 0x7c, 0x6f, 0x3e, 0x7c, 0xa7, 0x34, 0xb7, 0x6b, 0x66, 0xf8, 0xd1, 0x69, 0x6d, 0x83, +0xc5, 0x8a, 0xe2, 0x42, 0x3f, 0x8b, 0x5e, 0x5a, 0xd5, 0xcd, 0x47, 0x64, 0xeb, 0x4e, 0xef, +0x62, 0x19, 0x37, 0xd3, 0x8e, 0x68, 0x51, 0x4a, 0x96, 0xbb, 0x5b, 0xa0, 0x34, 0xd8, 0xb4, +0xf4, 0xb0, 0x99, 0x53, 0xb1, 0x70, 0xc3, 0x1d, 0x6e, 0x2b, 0x03, 0x76, 0xc9, 0x00, 0x0b, +0x10, 0xca, 0xb7, 0xf3, 0xbe, 0x4b, 0xe2, 0xb4, 0x6c, 0x4a, 0x9f, 0x59, 0x39, 0x30, 0xc7, +0xc3, 0x88, 0x38, 0x63, 0xc4, 0xcf, 0xd1, 0xfd, 0xf0, 0x6d, 0xfe, 0x68, 0x92, 0x98, 0x11, +0x7d, 0x90, 0x0c, 0x64, 0x23, 0xe8, 0x25, 0x77, 0xd1, 0x81, 0x75, 0xa4, 0xf4, 0x35, 0x6f, +0xe4, 0x9c, 0x7a, 0x48, 0xd0, 0xde, 0x37, 0x42, 0xf8, 0x5b, 0xe9, 0x16, 0xba, 0x16, 0x4b, +0x7c, 0xdb, 0x2c, 0x0e, 0xa0, 0xbc, 0x5c, 0x82, 0x71, 0xa0, 0x9d, 0x3a, 0x0a, 0x7e, 0xd0, +0xdc, 0x93, 0x79, 0xf6, 0x78, 0xb5, 0x89, 0xd9, 0x70, 0x5d, 0xe0, 0x9d, 0xe7, 0xea, 0xee, +0x88, 0x52, 0x18, 0x11, 0x7d, 0xf1, 0xce, 0xc1, 0x69, 0x8d, 0x3f, 0xea, 0x51, 0xc1, 0x49, +0xb1, 0xc4, 0xa6, 0xf0, 0xdc, 0xbd, 0x61, 0xb7, 0x2c, 0x85, 0x4a, 0xcb, 0xdd, 0x96, 0x50, +0x8b, 0x68, 0xf7, 0x7e, 0xb9, 0x1c, 0x19, 0xfb, 0x5c, 0x79, 0xf8, 0x7d, 0xe9, 0xf3, 0x0e, +0xc7, 0x6e, 0x1c, 0x67, 0xb4, 0xb7, 0x4a, 0xc5, 0xbe, 0x3c, 0x8c, 0x94, 0x36, 0x02, 0x8f, +0x81, 0x57, 0xe7, 0x4b, 0xd6, 0x2b, 0x10, 0xbe, 0x3c, 0x97, 0xbb, 0x41, 0x88, 0x6f, 0x13, +0xe6, 0x27, 0x13, 0x4b, 0xd5, 0x44, 0xa9, 0xd9, 0x2d, 0xcd, 0x51, 0x91, 0x03, 0x14, 0xd5, +0x6b, 0x3d, 0xb5, 0x98, 0xf0, 0x09, 0xaa, 0x42, 0x8e, 0x82, 0xe8, 0xf1, 0x36, 0xec, 0xb5, +0x48, 0x5f, 0x9f, 0xca, 0x16, 0x5a, 0x3f, 0x4d, 0xbb, 0xa6, 0xd4, 0x08, 0x1a, 0xfb, 0xe5, +0xeb, 0x40, 0x04, 0xe8, 0x40, 0x84, 0xc4, 0x8e, 0x74, 0xae, 0x47, 0x4d, 0xfc, 0xb5, 0x91, +0xe2, 0x33, 0xf2, 0xf7, 0xae, 0xcd, 0x10, 0x47, 0xb1, 0x4b, 0xe2, 0xa2, 0x8d, 0x7c, 0x2c, +0x32, 0x6f, 0xdd, 0xc4, 0xc2, 0xf1, 0x09, 0x56, 0x2d, 0x1e, 0x9d, 0x7d, 0x67, 0x32, 0x61, +0x7f, 0x12, 0xe4, 0x3f, 0xfa, 0xe2, 0x7d, 0x7b, 0xd4, 0x67, 0x4e, 0x7f, 0x14, 0x6a, 0x6c, +0x8e, 0x74, 0x9b, 0xbc, 0x3d, 0xc4, 0x70, 0xc4, 0x37, 0xd5, 0x60, 0xe0, 0x87, 0xbd, 0xb8, +0x1a, 0x75, 0x9d, 0x7a, 0x80, 0xc1, 0xa9, 0x1f, 0xad, 0x7b, 0x27, 0xe5, 0x4c, 0xb0, 0x06, +0xd0, 0xfb, 0x1c, 0x5a, 0xeb, 0xbd, 0x2e, 0x96, 0x49, 0x13, 0x43, 0x06, 0x8b, 0xcb, 0x6a, +0xf0, 0x5d, 0x56, 0x6c, 0x4e, 0x18, 0x26, 0xd4, 0xc8, 0x53, 0x48, 0x70, 0xe2, 0x0f, 0x9c, +0xa1, 0x35, 0x01, 0x96, 0xc7, 0x0b, 0xc9, 0x4b, 0xd3, 0x19, 0xe8, 0x5a, 0x75, 0xad, 0xc8, +0x52, 0xce, 0x3c, 0x2e, 0xfd, 0x5f, 0x04, 0xcf, 0x9e, 0xd6, 0x33, 0xdb, 0x08, 0x34, 0xba, +0x34, 0x9b, 0xf4, 0x25, 0xaa, 0x7f, 0x52, 0x37, 0x4f, 0x8b, 0x94, 0x95, 0x94, 0x2d, 0x88, +0x10, 0xd1, 0x05, 0x07, 0xcf, 0xd4, 0x04, 0xdb, 0x95, 0xbe, 0x36, 0xd0, 0x1c, 0x1c, 0xa4, +0x85, 0x0a, 0x02, 0x80, 0xde, 0xb1, 0x1b, 0x56, 0xaf, 0x51, 0x22, 0xa7, 0xa4, 0x4a, 0x2c, +0x2f, 0x17, 0x7c, 0x13, 0x4c, 0x36, 0xad, 0x90, 0x8c, 0xea, 0xd4, 0x58, 0x3a, 0xca, 0xea, +0x1d, 0x5c, 0x6c, 0x93, 0xad, 0x59, 0xed, 0xb1, 0x17, 0xa4, 0x22, 0x95, 0x67, 0xbe, 0xbb, +0x25, 0xaf, 0x65, 0xc8, 0xe5, 0x90, 0xe1, 0x17, 0xdc, 0x7a, 0x47, 0xe9, 0x8f, 0xc3, 0xc3, +0x5a, 0xdc, 0x20, 0x20, 0x4a, 0x09, 0xfc, 0x39, 0x51, 0x29, 0x31, 0xfb, 0xa0, 0x0a, 0x61, +0x08, 0x9b, 0xb9, 0xb3, 0x6c, 0x95, 0xc5, 0x94, 0x00, 0x66, 0xf1, 0xb9, 0x79, 0x90, 0x7f, +0x95, 0x5f, 0x55, 0xe1, 0x13, 0x6b, 0x87, 0xa8, 0x62, 0x21, 0x98, 0xf2, 0x57, 0x19, 0x92, +0x10, 0xb3, 0x24, 0x81, 0x12, 0x21, 0xff, 0xd6, 0xf9, 0x73, 0x71, 0xc2, 0x62, 0x09, 0x31, +0xeb, 0xe0, 0x7a, 0x35, 0x60, 0x8d, 0xc9, 0xb1, 0xe5, 0xa7, 0x8b, 0xca, 0xbc, 0x2d, 0xfa, +0x63, 0xc7, 0x68, 0x1d, 0x19, 0xb5, 0x61, 0x78, 0xd0, 0x8b, 0xdb, 0xc0, 0x39, 0x22, 0x55, +0x6a, 0x28, 0xc2, 0x52, 0x1e, 0x6b, 0xf7, 0x1d, 0xb6, 0xfa, 0x4f, 0xcf, 0x27, 0x7c, 0xaf, +0x7f, 0x0c, 0x96, 0xba, 0xce, 0x2a, 0x54, 0x59, 0x5b, 0x20, 0xfb, 0x42, 0x87, 0x44, 0xd9, +0x2e, 0x10, 0x43, 0xab, 0x58, 0x92, 0xb6, 0x8d, 0x78, 0xf3, 0xa3, 0xde, 0x0e, 0x07, 0x75, +0x68, 0x52, 0x26, 0x3f, 0x3d, 0xec, 0xd0, 0x36, 0xdf, 0x1a, 0x16, 0x88, 0x5f, 0xbd, 0x1c, +0x4d, 0x9e, 0x27, 0x4c, 0x12, 0x07, 0x0d, 0x2b, 0xb1, 0xdc, 0x00, 0x45, 0x54, 0x3d, 0xfc, +0xcf, 0xfa, 0xc9, 0x06, 0x4b, 0x08, 0x64, 0xac, 0x8d, 0x17, 0x4d, 0xdf, 0x83, 0x24, 0xfb, +0xf6, 0x9e, 0x5f, 0xf9, 0x0f, 0x8d, 0x07, 0x18, 0xb1, 0xb2, 0x37, 0xd2, 0x66, 0x9c, 0x82, +0x09, 0x75, 0x52, 0x5b, 0x19, 0x74, 0x59, 0xa3, 0x64, 0x6d, 0x17, 0x93, 0x3a, 0x13, 0xd2, +0xda, 0x97, 0xa4, 0x2b, 0x55, 0x7a, 0x32, 0xf9, 0x2f, 0x9b, 0xaa, 0x87, 0x6d, 0xce, 0x1d, +0x07, 0x9a, 0x52, 0xfa, 0x40, 0xc5, 0x20, 0x43, 0xcc, 0xa8, 0xc3, 0x84, 0x2c, 0x44, 0x8b, +0x44, 0x88, 0x62, 0xe7, 0x68, 0x4c, 0x2a, 0x69, 0xa7, 0xcf, 0x6f, 0x4d, 0x06, 0xed, 0x8a, +0x8f, 0x9a, 0x62, 0xca, 0xed, 0xa5, 0x57, 0x18, 0x86, 0x9d, 0xe8, 0x7c, 0x14, 0xeb, 0x71, +0xeb, 0xc0, 0xf4, 0x3a, 0x98, 0x11, 0x01, 0xc0, 0xa3, 0x53, 0xaf, 0x20, 0x7e, 0xde, 0x22, +0x5c, 0x1f, 0x60, 0x8b, 0xb7, 0x5f, 0x74, 0x76, 0xd0, 0x87, 0xfa, 0x11, 0xd3, 0xa5, 0xba, +0x5c, 0x82, 0xe1, 0x52, 0x54, 0x6b, 0x69, 0xeb, 0x31, 0x43, 0x01, 0x1a, 0x55, 0x7f, 0xdc, +0x2f, 0xd8, 0x01, 0x26, 0x6f, 0x1c, 0x2d, 0x72, 0x7b, 0xc8, 0x93, 0x99, 0x2a, 0x08, 0xa8, +0x6f, 0xb4, 0x28, 0x40, 0x8a, 0x8a, 0x4e, 0xd5, 0x3b, 0x39, 0x45, 0xa8, 0xe4, 0xe7, 0x73, +0x8f, 0x00, 0x64, 0xd3, 0xc7, 0x87, 0xde, 0x43, 0x82, 0x2c, 0xe8, 0x57, 0x17, 0x29, 0xce, +0xb8, 0x47, 0xd6, 0x08, 0x79, 0xd7, 0xc4, 0xe9, 0x23, 0x43, 0x9d, 0xb8, 0xcb, 0x78, 0x08, +0x32, 0xf1, 0xec, 0x84, 0x80, 0x1e, 0xb9, 0x29, 0x12, 0x0c, 0x29, 0xcc, 0x9c, 0xd0, 0x10, +0xa7, 0xd6, 0x8a, 0xe9, 0xf6, 0xfa, 0x8d, 0x7e, 0x95, 0x2e, 0x57, 0xcf, 0x8e, 0x38, 0x6b, +0x35, 0xf0, 0xbc, 0xa6, 0x4e, 0x13, 0x7b, 0x41, 0x19, 0x15, 0x5d, 0x99, 0xbd, 0x22, 0x40, +0x6a, 0x07, 0x2d, 0xd5, 0xd6, 0xff, 0x1d, 0x7b, 0xa6, 0xc4, 0xaa, 0x77, 0x44, 0x78, 0x2f, +0x55, 0x9f, 0x7d, 0x53, 0xf0, 0x2b, 0x2b, 0xba, 0x36, 0xc2, 0xf8, 0x6d, 0xf0, 0x2b, 0xbb, +0x6b, 0x97, 0x05, 0xb4, 0x4a, 0xc2, 0x86, 0x62, 0xb8, 0x76, 0xe7, 0xbb, 0xdf, 0x9c, 0x5a, +0x70, 0x19, 0x95, 0x59, 0x15, 0xcf, 0xa6, 0xa9, 0x7a, 0x24, 0x4c, 0xc6, 0x65, 0xb9, 0xda, +0x17, 0x6f, 0x2b, 0x55, 0x07, 0x32, 0x72, 0xd1, 0xee, 0x9c, 0x3a, 0x51, 0x98, 0x36, 0x37, +0xf8, 0x61, 0xfc, 0x91, 0xbc, 0xcb, 0x34, 0xd8, 0x43, 0xa0, 0x7a, 0xea, 0xc4, 0x8a, 0x64, +0x4d, 0xe0, 0x03, 0x93, 0xfb, 0xb4, 0xd8, 0x11, 0x21, 0x11, 0x66, 0x97, 0xb9, 0xba, 0x81, +0x29, 0xc2, 0x8f, 0x8c, 0x14, 0x18, 0x22, 0x94, 0xc4, 0xb0, 0xf1, 0x10, 0xc4, 0x8b, 0x5d, +0x8d, 0x7f, 0x14, 0xaf, 0x46, 0x19, 0x36, 0xa4, 0x36, 0x22, 0x18, 0x18, 0xe3, 0xab, 0x2c, +0x91, 0x03, 0xf7, 0xc5, 0xf5, 0xf5, 0x59, 0xc2, 0xd2, 0xf7, 0xc7, 0x64, 0x54, 0x76, 0xfb, +0x71, 0x70, 0xe8, 0xb2, 0x44, 0xa1, 0x2d, 0x59, 0x17, 0x02, 0xd6, 0x6f, 0x7a, 0xeb, 0xe0, +0x53, 0x81, 0xf6, 0x5e, 0x7f, 0x37, 0xd4, 0x52, 0x13, 0x04, 0x44, 0xd5, 0xc8, 0xd3, 0xdd, +0x6f, 0xd5, 0xfb, 0x71, 0x20, 0xe3, 0x0d, 0x0c, 0x47, 0x25, 0xa1, 0x41, 0xd2, 0xc7, 0xe5, +0xc9, 0xd9, 0x27, 0xa5, 0x38, 0xe4, 0x30, 0xbb, 0x86, 0x07, 0x84, 0xef, 0x24, 0x9f, 0xf9, +0x52, 0x74, 0xd2, 0x50, 0x73, 0xc4, 0x27, 0x73, 0x3b, 0x8d, 0x9c, 0xa6, 0xf6, 0x4b, 0x25, +0x91, 0xc5, 0x9e, 0x1e, 0xb2, 0x78, 0x0c, 0x23, 0x80, 0xdd, 0xa3, 0x21, 0xf5, 0xa9, 0x9e, +0x00, 0x16, 0x19, 0xbc, 0xd9, 0x55, 0x09, 0x90, 0xa2, 0xc6, 0xef, 0x3d, 0xf8, 0x72, 0x66, +0x2f, 0xdc, 0x3a, 0xf6, 0x4f, 0xfd, 0x59, 0x30, 0xe2, 0x27, 0xcc, 0xfb, 0x55, 0x09, 0x71, +0x41, 0xe1, 0x21, 0xa1, 0xa1, 0xc0, 0xe3, 0x25, 0xa9, 0xd0, 0x22, 0xc6, 0xef, 0x5c, 0x1b, +0xb4, 0xea, 0x56, 0x2e, 0xbf, 0xfc, 0x5b, 0x34, 0xcb, 0x14, 0x8b, 0x94, 0xaa, 0xb7, 0xec, +0x5a, 0x36, 0xcf, 0x1c, 0xba, 0xf6, 0x4d, 0xdb, 0x35, 0xf3 }; + +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,10 @@ +#include "mbed.h" +#include "extern.h" +#include "main.h" + +int main(void) { + SetUp(); + while(1){ + Command(); + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/setup_command_active/active.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,108 @@ +#include "mbed.h" +#include "extern.h" + +void Active(void){ + uint8_t i; + void (*DutyFunction[DUTY_NUM])(void) = { + Active2Command + }; + for(i=0; i<DUTY_NUM; i++){ + Duty[i].attach(DutyFunction[i], dutycycle[i]); + } + sys.stopflag=0; + //スタート直前の処理 + SetUp2(); + while(1){ + //pc.printf("sys.stopflag=%d\r\n", sys.stopflag); + //StrategyFunction[sys.strategy](); + act[sys.strategy].ActiveFunction(); + if(sys.stopflag==1){ + //システム上の停止処理 + button.detach(); + last_statesum = statesum = 0; + state[0] = state[1] = state[2] = state[3] = 0; + + for(i=0; i<DUTY_NUM; i++){ + Duty[DUTY_SW].detach(); + } + sys.stopflag=0; + //その他停止処理 + StopProcess(); + break; + } + } + return; +} +void Active_old(void){ + uint8_t i; + void (*DutyFunction[DUTY_NUM])(void) = { + Active2Command + }; + void (*StrategyFunction[STRATEGY_NUM])(void) = { + //modeAttack5, + modeAttack2, + //modeAttack4, + modeAttack1, + modeAttack2, + modeAttack3, + modeAttack4, + modeAttack5, + + modeDebug0, + modeDebug1, + modeDebug2, + modeDebug3, + modeDebug4, + modeDebug5, + }; + for(i=0; i<DUTY_NUM; i++){ + Duty[i].attach(DutyFunction[i], dutycycle[i]); + } + sys.stopflag=0; + //スタート直前の処理 + SetUp2(); + while(1){ + //pc.printf("sys.stopflag=%d\r\n", sys.stopflag); + StrategyFunction[sys.strategy](); + if(sys.stopflag==1){ + //システム上の停止処理 + button.detach(); + last_statesum = statesum = 0; + state[0] = state[1] = state[2] = state[3] = 0; + + for(i=0; i<DUTY_NUM; i++){ + Duty[DUTY_SW].detach(); + } + sys.stopflag=0; + //その他停止処理 + StopProcess(); + break; + } + } + return; +} +//for transition +void ResetState(void){ + last_statesum = statesum = 0; + state[0] = state[1] = state[2] = state[3] = 0; +} +void Active2Command(void){ + uint8_t i; + for(i=0; i<4; i++){ + if(CountSw(i)==1) state[i]=1; + } + last_statesum = statesum; + statesum = state[0]+state[1]+state[2]+state[3]; + if((statesum>=1)&&(!(statesum==last_statesum))){ + button.attach(&ResetState, 1.0); + } + if((statesum>=2)&&(1)){ + if((state[0]==1)&&(state[1]==1)&&(state[2]==0)&&(state[3]==0)){ + sys.stopflag=1; + } + else{ + button.detach(); + ResetState(); + } + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/setup_command_active/active.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,10 @@ +#ifndef _ACTIVE_H_ +#define _ACTIVE_H_ + +//modeActive +void Active(void); +//for transition +void ResetState(void); +void Active2Command(void); + +#endif //_ACTIVE_H_ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/setup_command_active/command.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,98 @@ +#include "mbed.h" +#include "extern.h" + +void Command(void){ + uint8_t SwState,x=0,y=0, z; + uint8_t i; + + sys.jump_flag=JUMP_TAG_MAX; + LcdPrint(&x,&y); + while(1){ + SwState = ReadSw(); + if(SwState == NONE){ + if(x!=0){ + z = item[y].CommandFunction(x); + if(z==1){ + x=0; + //jump + if(sys.jump_flag!=JUMP_TAG_MAX){ + for(i=0; i<STATE_NUM_Y; i++){ + if(sys.jump_flag==item[i].tag_num) break; + } + if(i<STATE_NUM_Y){ + y = i; + y %= STATE_NUM_Y; + } + sys.jump_flag=JUMP_TAG_MAX; + } + LcdPrint(&x,&y); + } + //Z==1...Once + //Z==0...Endless + } + + continue; + } + if(SwState == UP){ + y += -1 + STATE_NUM_Y; + y %= STATE_NUM_Y; + x=0; + } + if(SwState == DOWN){ + y++; + y %= STATE_NUM_Y; + x=0; + } + if(SwState == RIGHT){ + if(item[y].str_num<=1) x=0; + else x++; + x %= item[y].str_num; + } + if(SwState == LEFT){ + x=0; + } + if(x==0){ + X_ZERO_Function(&x,&y); + } + else{ + X_NZERO_Function(&x,&y); + } + LcdPrint(&x,&y); + } +} +uint8_t X_ZERO_Function(uint8_t *x, uint8_t *y){ + uint8_t i; + if(sys.jump_flag!=JUMP_TAG_MAX){//jump + for(i=0; i<STATE_NUM_Y; i++){ + if(sys.jump_flag==item[i].tag_num) break; + } + if(i<STATE_NUM_Y){ + *y = i; + *y %= STATE_NUM_Y; + } + sys.jump_flag=JUMP_TAG_MAX; + } + + ReadCmps(); + //cmps_set.CmpsInitialValue = cmps_set.cmps; + wait_ms(10); + cmps_set.CmpsDiff = REFERENCE - cmps_set.cmps; + cmps_set.FrontDeg=0; + + LineKeeper=LINE_FREE;//line + return 0; +} +uint8_t X_NZERO_Function(uint8_t *x, uint8_t *y){ + LineKeeper=LINE_FIX;//line + return 0; +} +uint8_t LcdPrint(uint8_t *x, uint8_t *y){ + Lcd.cls(); + Lcd.locate(0, 0); + Lcd.print(item[*y].LcdStr[0]); + Lcd.locate(7, 0); + Lcd.print(">"); + Lcd.locate(9, 0); + if(*x!=0) Lcd.print(item[*y].LcdStr[*x]); + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/setup_command_active/command.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,9 @@ +#ifndef _COMMAND_H_ +#define _COMMAND_H_ + +void Command(void); +uint8_t X_ZERO_Function(uint8_t *x, uint8_t *y); +uint8_t X_NZERO_Function(uint8_t *x, uint8_t *y); +uint8_t LcdPrint(uint8_t *x, uint8_t *y); + +#endif //_COMMAND_H_ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/setup_command_active/command_functions.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,264 @@ +#include "mbed.h" +#include "extern.h" + +uint8_t ZeroFunction(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + if(x==1){ + sprintf(buf, "%2d%.14s", sys.strategy, act[sys.strategy].LcdStr); + Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; + } + else if(x==2){ + sprintf(buf, "%2d:S%2d M%2d L%2d", + sys.pow_num, + ir_pow_val[sys.pow_num][POW_SHORT], + ir_pow_val[sys.pow_num][POW_MIDDLE], + ir_pow_val[sys.pow_num][POW_LONG] + ); + Lcd.locate(0, 1);Lcd.print(buf); + return 0; + } + else{//x==3 + sprintf(buf, "SeeYouAgain!"); + Lcd.locate(0, 1);Lcd.print(buf);wait(0.5); + NVIC_SystemReset(); + return 1; + } +} +uint8_t Start(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + uint8_t temp; + temp = sys.strategy; + sprintf(buf, "CatPot"); + Lcd.locate(0, 1);Lcd.print(buf); + sys.strategy=0; + sys.TurnStartFlag=0; + Active(); + sys.strategy=temp; + //reset + NVIC_SystemReset(); + return 1; +} +uint8_t TurnAndStart(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + uint8_t temp; + temp = sys.strategy; + sprintf(buf, "CatPot"); + Lcd.locate(0, 1);Lcd.print(buf); + sys.strategy=0; + sys.TurnStartFlag=1; + Active(); + sys.strategy=temp; + //reset + NVIC_SystemReset(); + return 1; +} +uint8_t GetIr(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + ReadIr(); + + //if(x==1) sprintf(buf, "SHRT:%2d, LNG:%2d", data.irSpot[0], data.irSpot[1]); + //if(x==2) sprintf(buf, "NOTE:%2d", data.irNotice); + //if(x==3) sprintf(buf, "POSITION:%2d", data.irPosition); + if(x==1) sprintf(buf, "POSI:%2d NOTE:%1d", data.irPosition, data.irNotice); + if(x==2) sprintf(buf, "PH_L:%1d PH_S:%1d", data.irValPhase[IR_LONG], data.irValPhase[IR_SHORT]); + if(x==3) sprintf(buf, "DIF:%1d KEY:%2d", data.irDif[IR_LONG], data.irKey); + Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; +} +uint8_t GetSns0(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + uint8_t raw[3]; + uint8_t held[3]; + if(x==1){ + LineKeeper=LINE_FIX;//line + + raw[2] = GetBit(LineRaw, 3); + raw[1] = GetBit(LineRaw, 2); + raw[0] = GetBit(LineRaw, 1); + + held[2] = GetBit(LineHold, 3); + held[1] = GetBit(LineHold, 2); + held[0] = GetBit(LineHold, 1); + //BusOut LineKeeper(lineInA, lineInB, lineInC); + //BusIn LineRaw(lineA2, lineB2, lineC2); + //BusIn LineHold(lineA1, lineB1, lineC1); + sprintf(buf, "A:%1d%1d B:%1d%1d C:%1d%1d ", raw[0],held[0],raw[1],held[1],raw[2],held[2]); + //sprintf(buf, "A:%1d B:%1d C:%1d ", Line[0].read(), Line[1].read(), Line[2].read()); + Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; + } + if(x==2){ + ReadPing2(); + ReadPing(); + sprintf(buf, "L%3dR%3dF%3dB%3d", data.ping[L_PING], data.ping[R_PING], data.ping[F_PING], data.ping[B_PING]); + Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; + } + if(x==3){ + //ReadIr(); + //sprintf(buf, "IR_KEY:%2d", data.irKey); + //sprintf(buf, "BALL:%1d", BallChecker.read()); + sprintf(buf, "BALLA%6d", BallCheckerA.read_u16()); + Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; + } + return 0; +} +uint8_t RwPid(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + if(x==1){ + PidUpdate(); + sprintf(buf, "In:%03.0f Out:%+02d", cmps_set.InputPID, cmps_set.OutputPID); + Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; + } + if(x==2){ + sys.jump_flag=START; + sprintf(buf, "FaceToFront!"); + Lcd.locate(0, 1);Lcd.print(buf); + hmc_reset = HMC_RST; + wait_ms(100); + hmc_reset = HMC_RUN; + for(int i=0; i<5; i++){ + ReadCmps(); + cmps_set.CmpsInitialValue = cmps_set.cmps; + wait_ms(100); + } + cmps_set.CmpsDiff = REFERENCE - cmps_set.cmps; + cmps_set.FrontDeg=0; + return 1; + } + return 1; +} +uint8_t CalibrationEnterOrExit(uint8_t x){ + static uint8_t state=0; + char buf[LCD_COLUMN_NUM]; + + if(x==1){ + if(state==0){ + sprintf(buf, "Exit>>Enter"); + } + if(state==1){ + sprintf(buf, "Enter>>Exit"); + } + Lcd.locate(0, 1);Lcd.print(buf); + return 0; + } + if(x==2){ + if(state==0){ + hmc.setCalibrationMode(HMC6352_ENTER_CALIB); + state=1; + return 1; + } + if(state==1){ + hmc.setCalibrationMode(HMC6352_EXIT_CALIB); + state=0; + return 1; + } + } + return 1; +} +uint8_t CalibrationTurn(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + sprintf(buf, "CalibrationTurn"); + Lcd.locate(0, 1);Lcd.print(buf); + hmc.setCalibrationMode(HMC6352_ENTER_CALIB);wait_ms(20); + move(0,0,5);tx_motor(); + wait(5); + move(0,0,0);tx_motor(); + hmc.setCalibrationMode(HMC6352_EXIT_CALIB);wait_ms(20); + sys.jump_flag=GET_PID_VALUE; + return 1; +} +uint8_t SetPowerUp(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + uint8_t i=(sys.pow_num+(-1+POW_COMBI_NUM))%POW_COMBI_NUM; + if(x==1){ + sprintf(buf, "%2d:S%2d M%2d L%2d", i, ir_pow_val[i][POW_SHORT], ir_pow_val[i][POW_MIDDLE], ir_pow_val[i][POW_LONG]); + Lcd.locate(0, 1);Lcd.print(buf); + return 0; + } + else{//x==2 + sys.pow_num = i; + sys.s_pow = ir_pow_val[sys.pow_num][POW_SHORT]; + sys.m_pow = ir_pow_val[sys.pow_num][POW_MIDDLE]; + sys.l_pow = ir_pow_val[sys.pow_num][POW_LONG]; + return 1; + } +} +uint8_t SetPowerDown(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + uint8_t i=(sys.pow_num+1)%POW_COMBI_NUM; + if(x==1){ + sprintf(buf, "%2d:S%2d M%2d L%2d", i, ir_pow_val[i][POW_SHORT], ir_pow_val[i][POW_MIDDLE], ir_pow_val[i][POW_LONG]); + Lcd.locate(0, 1);Lcd.print(buf); + return 0; + } + else{//x==2 + sys.pow_num = i; + sys.s_pow = ir_pow_val[sys.pow_num][POW_SHORT]; + sys.m_pow = ir_pow_val[sys.pow_num][POW_MIDDLE]; + sys.l_pow = ir_pow_val[sys.pow_num][POW_LONG]; + return 1; + } +} +uint8_t SoftReset(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + sprintf(buf, "SeeYouAgain!"); + Lcd.locate(0, 1);Lcd.print(buf);wait(0.5); + NVIC_SystemReset(); + return 1; +} +uint8_t SetStrategyUp(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + uint8_t i=(sys.strategy+(-1+STRATEGY_NUM))%STRATEGY_NUM; + if(x==1){ + sprintf(buf, "%2d:%.12s", i, act[i].LcdStr); + Lcd.locate(0, 1);Lcd.print(buf); + return 0; + } + else{//x==2 + sys.strategy = i; + return 1; + } +} +uint8_t SetStrategyDown(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + uint8_t i=(sys.strategy+1)%STRATEGY_NUM; + if(x==1){ + sprintf(buf, "%2d:%.12s", i, act[i].LcdStr); + Lcd.locate(0, 1);Lcd.print(buf); + return 0; + } + else{//x==2 + sys.strategy = i; + return 1; + } +} +uint8_t Start2(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + sprintf(buf, "CatPotForDebug"); + Lcd.locate(0, 1);Lcd.print(buf); + sys.TurnStartFlag=0; + Active(); + return 1; +} +uint8_t DriveKicker(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + sprintf(buf, "KickForDebug"); + Lcd.locate(0, 1);Lcd.print(buf); + wait(2); + kicker = 1; + wait(.5); + kicker = 0; + wait(.5); + return 1; +} +uint8_t DriveDribblerAndKicker(uint8_t x){ + char buf[LCD_COLUMN_NUM]; + sprintf(buf, "DribbleForDebug"); + Lcd.locate(0, 1);Lcd.print(buf); + sys.DribbleFlag=1;wait_ms(20);move(0,0,0);tx_motor(); + wait(5); + kicker = 1; + wait(.5); + kicker = 0; + wait(2); + sys.DribbleFlag=0;wait_ms(20);move(0,0,0);tx_motor(); + return 1; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/setup_command_active/command_functions.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,26 @@ +#ifndef _COMMAND_FUNCTIONS_H_ +#define _COMMAND_FUNCTIONS_H_ + +//information on disply, transition to modeActive and so on. +uint8_t ZeroFunction(uint8_t x); +uint8_t Start(uint8_t x); +uint8_t GetIr(uint8_t x); +uint8_t GetSns0(uint8_t x); +uint8_t SoftReset(uint8_t x); +uint8_t Start2(uint8_t x); + +uint8_t SetPowerDown(uint8_t x); +uint8_t SetPowerUp(uint8_t x); + +uint8_t SetStrategyDown(uint8_t x); +uint8_t SetStrategyUp(uint8_t x); + +uint8_t DriveKicker(uint8_t x); +uint8_t DriveDribblerAndKicker(uint8_t x); + +uint8_t CalibrationTurn(uint8_t x); +uint8_t RwPid(uint8_t x); +uint8_t TurnAndStart(uint8_t x); +uint8_t CalibrationEnterOrExit(uint8_t x); + +#endif //_COMMAND_FUNCTIONS_H_ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/setup_command_active/setup.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,207 @@ +#include "mbed.h" +#include "extern.h" + + +void SetUp(void){//電源を入れた時の処理 + //int i=1; + //solenoid + kicker=0; + //sw&lcd + Sw[0].mode(PullUp); + Sw[1].mode(PullUp); + Sw[2].mode(PullUp); + Sw[3].mode(PullUp); + Sw_ticker.attach(Sw_sample, 0.050); + + //ball + BallChecker.mode(PullUp); + + //system,flag + sys.strategy=0; + sys.jump_flag=JUMP_TAG_MAX;//0<=x<=JUMP_TAG_NUM + sys.stopflag=0; + sys.KickOffFlag=0; + sys.TurnStartFlag=0; + sys.DribbleFlag=0; + sys.MotorFlag=0; + sys.InfoFlag=0; + //sys.PidFlag=0; + //motor + sys.pow_num = 1; + sys.s_pow = ir_pow_val[sys.pow_num][POW_SHORT]; + sys.m_pow = ir_pow_val[sys.pow_num][POW_MIDDLE]; + sys.l_pow = ir_pow_val[sys.pow_num][POW_LONG]; + /*sys.s_pow = 30; + sys.m_pow = 30; + sys.l_pow = 30;*/ + sys.dri_pow = 100; + sys.ir_pow_table = 0; + + ///////important + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=1; + sys.DriBlind=1; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=0; + sys.TurnDriBlind=0; + sys.TurnHoldBlind=0; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + ////////important + + //ir + data.irNotice=IR_NONE; + + //spi + spi.format(16, 3); + spi.frequency(1000000); + spi_ss[0]=spi_ss[1]=spi_ss[2]=spi_ss[3]=1; + + //motor + motor.baud(115200); //ボーレート設定 + motor.printf("1F0002F0003F0004F000\r\n"); //モータ停止 + //compass + hmc_reset=HMC_RUN; + /*for(int i=0; i<5; i++){ + ReadCmps(); + cmps_set.CmpsInitialValue = cmps_set.cmps; + wait_ms(10); + } + cmps_set.CmpsDiff = REFERENCE - cmps_set.CmpsInitialValue;*/ + for(int i=0; i<5; i++){ + ReadCmps(); + cmps_set.CmpsInitialValue = cmps_set.cmps; + cmps_set.CmpsInitialValue0 = cmps_set.cmps; + wait_ms(10); + } + cmps_set.CmpsDiff = REFERENCE - cmps_set.cmps; + + cmps_set.FrontDeg=0; + cmps_set.AtkDeg=0; + + pid.setInputLimits(MINIMUM,MAXIMUM); //pid sed def + pid.setOutputLimits(-OUT_LIMIT, OUT_LIMIT); //pid sed def + pid.setBias(PID_BIAS); //pid sed def + pid.setMode(AUTO_MODE); //pid sed def + pid.setSetPoint(REFERENCE); //pid sed def + //pidupdate.attach(&PidUpdate, PID_CYCLE); +} +void SetUp2(void){//スタートした時の処理 + __enable_irq(); // 許可 + + sys.KickOffFlag=1; + SetKick(); + SetPidAndMotor(); + SetInfo(); + SetLine(); +} +void StopProcess(void){//コマンドに戻るときの処理 + + sys.KickOffFlag=0; + SetKick(); + SetPidAndMotor(); + SetInfo(); + SetLine(); + + __disable_irq(); // 禁止 + __enable_irq(); // 許可 + Sw_ticker.attach(Sw_sample, 0.050); +} + +void SetKick(void){ + if(sys.KickOffFlag==1){ + kicker=0; + ValidSolenoid(); + BallChecker.fall(&DriveSolenoidJudge); + } + else{ + kicker=1; + wait(0.25); + kicker=0; + } +} +void SetPidAndMotor(void){ + if(sys.KickOffFlag==1){ + //compass + ValidTurn(); + hmc_reset=HMC_RUN; + if(sys.TurnStartFlag==1){ + //正...右回転 + //負...左回転 + //cmps_set.FrontDeg=-180; + //cmps_set.FrontDeg=179; + //cmps_set.FrontDeg=180; + //cmps_set.CmpsDiff = REFERENCE - cmps_set.CmpsInitialValue; + + /*for(int i=0; i<5; i++){ + ReadCmps(); + cmps_set.CmpsInitialValue2 = cmps_set.cmps; + wait_ms(10); + }*/ + //cmps_set.CmpsDiff = REFERENCE - cmps_set.CmpsInitialValue2; + + cmps_set.FrontDeg=-180;//-(cmps_set.CmpsInitialValue2-cmps_set.CmpsInitialValue0); + } + else{ + for(int i=0; i<5; i++){ + ReadCmps(); + cmps_set.CmpsInitialValue = cmps_set.cmps; + wait_ms(10); + } + cmps_set.CmpsDiff = REFERENCE - cmps_set.cmps; + + + cmps_set.FrontDeg=0; + } + Motor_ticker.attach(&ValidTx_motor, 0.020); + //pidupdate.attach(&ValidPidUpdate, PID_CYCLE); + } + else{ + //pidupdate.detach(); + Motor_ticker.detach(); + ////Hmc_ticker.detach(); + motor.printf("1F0002F0003F0004F000\r\n"); //モータ停止 + move(0,0,0); + cmps_set.OutputPID=0; + cmps_set.InputPID=REFERENCE; + HmcReset(); + } +} +void SetInfo(void){ + if(sys.KickOffFlag==1){ + Info_ticker.attach(&ValidInfo, 0.050); + } + else{ + Info_ticker.detach(); + } +} +void SetLine(void){ + if(sys.KickOffFlag==1){ + //Line_ticker.attach(&ReadLine, 0.005); + /*Line[A_SPOT].rise(&LineCall_A); + Line[B_SPOT].rise(&LineCall_B); + Line[C_SPOT].rise(&LineCall_C);*/ + /* + LineHolding[A_SPOT].rise(&LineRanking_A); + LineHolding[B_SPOT].rise(&LineRanking_B); + LineHolding[C_SPOT].rise(&LineRanking_C); + */ + /* + Line[A_SPOT].rise(&LineRawCall_A); + Line[B_SPOT].rise(&LineRawCall_B); + Line[C_SPOT].rise(&LineRawCall_C); + */ + + Line[A_SPOT].rise(&LineRawRanking_A); + Line[B_SPOT].rise(&LineRawRanking_B); + Line[C_SPOT].rise(&LineRawRanking_C); + } + else{ + ////Line_ticker.detach(); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/setup_command_active/setup.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,15 @@ +#ifndef _SETUP_H_ +#define _SETUP_H_ + +void SetUp(void);//電源を入れた時の処理 +void SetUp2(void);//スタートした時の処理 +void StopProcess(void);//コマンドに戻るときの処理 + +void SetKick(void); +void SetPidAndMotor(void); +void SetIr(void); +void SetPing(void); +void SetInfo(void); +void SetLine(void); + +#endif //_SETUP_H_ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy/LineProcess.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,1201 @@ +#include "mbed.h" +#include "extern.h" + +void LineJudgeSlow(double pow_x, double pow_y, double *x, double *y){ + uint8_t LineState; + uint8_t LineSum; + + //line + LineState = 0; + + LineSum = ((data.lnHold>>2)&0x1)+((data.lnHold>>1)&0x1)+((data.lnHold>>0)&0x1); + if((LineSum==3)||(data.FieldSpot==LINE_OUTSIDE)){ + LineState = 3; + } + else if(LineSum==2){ + LineState = 2; + } + else if(LineSum==1){ + LineState = 1; + } + else if(LineSum==0){ + LineState = 0; + } + + + if(pow_x>=0){ + if(data.ping[R_PING]<WhiteToWall[X_PING]) (*x)=LineDecline[LineState]; + else *x=1; + } + else{ + if(data.ping[L_PING]<WhiteToWall[X_PING]) (*x)=LineDecline[LineState]; + else *x=1; + } + + if(pow_y>=0){ + if(data.ping[F_PING]<WhiteToWall[Y_PING]) (*y)=LineDecline[LineState]; + else *y=1; + } + else{ + if(data.ping[B_PING]<WhiteToWall[Y_PING]) (*y)=LineDecline[LineState]; + else *y=1; + } +} +void LineJudgeSlow2(double pow_x, double pow_y, double *x, double *y, uint8_t *px, uint8_t *py){ + uint8_t LineState; + uint8_t LineSum; + + //line + LineState = 0; + + LineSum = (data.lnRawOrder[0]!=LINE_EMPTY)+(data.lnRawOrder[1]!=LINE_EMPTY)+(data.lnRawOrder[2]!=LINE_EMPTY); + if(LineSum==3){ + LineState = 3; + } + else if(LineSum==2){ + LineState = 2; + } + else if(LineSum==1){ + LineState = 1; + } + else if(LineSum==0){ + LineState = 0; + } + + if(LineSum>0){ + if(pow_x>=0){ + if((data.ping[R_PING]<WhiteToWall[X_PING])&&((*px)>LineDecrease[LineState])) (*px)=LineDecrease[LineState]; + } + else{ + if((data.ping[L_PING]<WhiteToWall[X_PING])&&((*px)>LineDecrease[LineState])) (*px)=LineDecrease[LineState]; + } + + if(pow_y>=0){ + if((data.ping[F_PING]<WhiteToWall[Y_PING])&&((*py)>LineDecrease[LineState])) (*py)=LineDecrease[LineState]; + } + else{ + if((data.ping[B_PING]<WhiteToWall[Y_PING])&&((*py)>LineDecrease[LineState])) (*py)=LineDecrease[LineState]; + } + } + else if(LineSum==0){ + ////超音波による減速 + if(pow_x>=0){ + if((data.ping[R_PING]<GoalEdgeToWall[X_PING])&&((*px)>LineDecrease[LineState])) (*px)=LineDecrease[LineState]; + } + else{ + if((data.ping[L_PING]<GoalEdgeToWall[X_PING])&&((*px)>LineDecrease[LineState])) (*px)=LineDecrease[LineState]; + } + + if(pow_y>=0){ + //if((data.ping[F_PING]<15)&&((*py)>LineDecrease[LineState])) (*py)=LineDecrease[LineState]; + } + else{ + if((data.ping[B_PING]<15)&&((*py)>LineDecrease[LineState])) (*py)=LineDecrease[LineState]; + } + } + + if((data.lnStayNow[X_LINE]==1)&&((*px)>15)){ + (*px)=15; + } + if((data.lnStayNow[Y_LINE]==1)&&((*py)>15)){ + (*py)=15; + } + + ////超音波による減速 + if(pow_x>=0){ + if((data.ping[R_PING]<GoalEdgeToWall[X_PING])&&((*px)>20)){ + (*px)=20; + if((*py)>30) (*py)=30; + } + } + else{ + if((data.ping[L_PING]<GoalEdgeToWall[X_PING])&&((*px)>20)){ + (*px)=20; + if((*py)>30) (*py)=30; + } + } + + if(pow_y>=0){ + if((data.ping[F_PING]<WhiteToWallPlus[Y_PING])&&((*py)>25)) (*py)=25; + } + else{ + if((data.ping[B_PING]<WhiteToWallPlus[Y_PING])&&((*py)>25)) (*py)=25; + } + + *x=1; + *y=1; +} +void LineJudgeReturn(double pow_x, double pow_y, double *x, double *y){ + const int8_t static LineReturn[5] = {0, 0, 0, 0, 20}; + uint8_t LinePingState[4]; + //◎ボールを追う力とラインから離れる力の向きが違うならばラインから離れる力が優先される. + //◎ボールを追う力とラインから離れる力の向きが同じならばボールを追う力が優先される. + //◎ラインセンサ全てが場外になるまではボールを追う力は作用しない.ボールを追う力は場内に出るまで作用する. + //×ラインのほぼ場外では常時ラインから離れる力が優先される. + //※場外判定を行うには再び場内に戻る必要がある. + + if(data.FieldSpot==LINE_OUTSIDE){ + + LinePingState[L_PING]=(data.ping[L_PING]<WhiteToWall[X_PING]); + LinePingState[R_PING]=(data.ping[R_PING]<WhiteToWall[X_PING]); + LinePingState[F_PING]=(data.ping[F_PING]<WhiteToWall[Y_PING]); + LinePingState[B_PING]=(data.ping[B_PING]<WhiteToWall[Y_PING]); + + //line間際の復帰力以外の力を作用させるか否か + data.lnStop[X_LINE]=1; + data.lnStop[Y_LINE]=1; + + data.ReturnDir[X_LINE]=LINE_EMPTY; + data.ReturnDir[Y_LINE]=LINE_EMPTY; + + //x + if(data.ReturnDir[X_LINE]==L_LINE){ + if(pow_x<0){ + *x = 0; + data.lnStop[X_LINE]=1; + } + else{ + *x = -LineReturn[4]; + data.lnStop[X_LINE]=0; + } + } + else if(data.ReturnDir[X_LINE]==R_LINE){ + if(pow_x>0){ + *x = 0; + data.lnStop[X_LINE]=1; + } + else{ + *x = LineReturn[4]; + data.lnStop[X_LINE]=0; + } + } + else if(data.ReturnDir[X_LINE]==LINE_EMPTY){ + if((LinePingState[L_PING]==0)&&(LinePingState[R_PING]==0)){ + /*if(pow_x>0){ + *x = -pow_x*(1-0.75); + } + else{ + *x = pow_x*(1-0.75); + }*/ + data.lnStop[X_LINE]=1; + } + if((LinePingState[L_PING]==0)&&(LinePingState[R_PING]==1)){ + + data.ReturnDir[X_LINE]=L_LINE; + + /*if(pow_x<0){ + *x = 0; + data.lnStop[X_LINE]=1; + } + else{ + *x = -LineReturn[4]; + data.lnStop[X_LINE]=0; + }*/ + *x = -LineReturn[4]; + data.lnStop[X_LINE]=0; + } + if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==0)){ + + data.ReturnDir[X_LINE]=R_LINE; + + /*if(pow_x>0){ + *x = 0; + data.lnStop[X_LINE]=1; + } + else{ + *x = LineReturn[4]; + data.lnStop[X_LINE]=0; + }*/ + *x = LineReturn[4]; + data.lnStop[X_LINE]=0; + } + if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==1)){ + + if( + (data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==C_SPOT)&&(data.lnOrder[2]==B_SPOT) + ){ + *x = -LineReturn[4]; + data.lnStop[X_LINE]=0; + } + else if( + (data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==C_SPOT)&&(data.lnOrder[2]==A_SPOT) + ){ + *x = LineReturn[4]; + data.lnStop[X_LINE]=0; + } + else{ + *x = 0; + data.lnStop[X_LINE]=0; + } + } + } + //y + if(data.ReturnDir[Y_LINE]==F_LINE){ + if(pow_y>0){ + *y = 0; + data.lnStop[Y_LINE]=1; + } + else{ + *y = LineReturn[4]; + data.lnStop[Y_LINE]=0; + } + } + else if(data.ReturnDir[Y_LINE]==B_LINE){ + if(pow_y<0){ + *y = 0; + data.lnStop[Y_LINE]=1; + } + else{ + *y = -LineReturn[4]; + data.lnStop[Y_LINE]=0; + } + } + else if(data.ReturnDir[Y_LINE]==LINE_EMPTY){ + if((LinePingState[B_PING]==0)&&(LinePingState[F_PING]==0)){ + /*if(pow_y>0){ + *y = -pow_y*(1-0.75); + } + else{ + *y = pow_y*(1-0.75); + }*/ + data.lnStop[Y_LINE]=1; + } + if((LinePingState[B_PING]==0)&&(LinePingState[F_PING]==1)){ + + data.ReturnDir[Y_LINE]=B_LINE; + + if(pow_y<0){ + *y = 0; + data.lnStop[Y_LINE]=1; + } + else{ + *y = -LineReturn[4]; + data.lnStop[Y_LINE]=0; + } + } + if((LinePingState[B_PING]==1)&&(LinePingState[F_PING]==0)){ + + data.ReturnDir[Y_LINE]=F_LINE; + + if(pow_y>0){ + *y = 0; + data.lnStop[Y_LINE]=1; + } + else{ + *y = LineReturn[4]; + data.lnStop[Y_LINE]=0; + } + } + if((LinePingState[B_PING]==1)&&(LinePingState[F_PING]==1)){ + if( + (data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==A_SPOT)&&(data.lnOrder[2]==B_SPOT)|| + (data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==B_SPOT)&&(data.lnOrder[2]==A_SPOT) + ){ + *y = LineReturn[4]; + data.lnStop[Y_LINE]=0; + } + else if( + (data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==B_SPOT)&&(data.lnOrder[2]==C_SPOT)|| + (data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==A_SPOT)&&(data.lnOrder[2]==C_SPOT) + ){ + *y = -LineReturn[4]; + data.lnStop[Y_LINE]=0; + } + else{ + *y = 0; + data.lnStop[Y_LINE]=0; + } + } + } + //none + if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==1)&&(LinePingState[F_PING]==1)&&(LinePingState[B_PING]==1)){ + //turn! + } + + } + else{//data.FieldSpot==LINE_INSIDE + + data.ReturnDir[X_LINE]=LINE_EMPTY; + data.ReturnDir[Y_LINE]=LINE_EMPTY; + + *x = 0; + *y = 0; + + //line間際の復帰力以外の力を作用させるか否か + data.lnStop[X_LINE]=1; + data.lnStop[Y_LINE]=1; + /* + if( + (data.lnRawMemory[A_SPOT]==1)&& + (data.lnRawMemory[B_SPOT]==1)&& + (data.lnRawMemory[C_SPOT]==0) + ){ + data.lnStop[Y_LINE]=0; + *y = -LineReturn[4]; + } + else if( + (data.lnRawMemory[A_SPOT]==0)&& + (data.lnRawMemory[B_SPOT]==0)&& + (data.lnRawMemory[C_SPOT]==1) + ){ + data.lnStop[Y_LINE]=0; + *y = LineReturn[4]; + }*/ + } +} +void LineJudgeReturn2(double pow_x, double pow_y, double *x, double *y){ + const int8_t static LineReturn[5] = {0, 0, 0, 0, 20}; + uint8_t LinePingState[4]; + //JSO2 + static uint8_t lnRawReturn1 = 0; + //◎ボールを追う力とラインから離れる力の向きが違うならばラインから離れる力が優先される. + //◎ボールを追う力とラインから離れる力の向きが同じならばボールを追う力が優先される. + //◎ラインセンサ全てが場外になるまではボールを追う力は作用しない.ボールを追う力は場内に出るまで作用する. + //×ラインのほぼ場外では常時ラインから離れる力が優先される. + //※場外判定を行うには再び場内に戻る必要がある. + + data.FieldSpot=LINE_INSIDE; + + if(data.FieldSpot==LINE_OUTSIDE){ + } + else{//data.FieldSpot==LINE_INSIDE + + data.ReturnDir[X_LINE]=LINE_EMPTY; + data.ReturnDir[Y_LINE]=LINE_EMPTY; + + *x = 0; + *y = 0; + + //line間際の復帰力以外の力を作用させるか否か + data.lnStop[X_LINE]=1; + data.lnStop[Y_LINE]=1; + + if(//y + ((data.lnRawOrder[0]==A_SPOT)&&(data.lnRawOrder[1]==B_SPOT)&&(1))|| + ((data.lnRawOrder[0]==B_SPOT)&&(data.lnRawOrder[1]==A_SPOT)&&(1)) + ){ + data.lnStop[Y_LINE]=0; + *y = -LineReturn[4]; + //JSO1 + if( + (data.ping[F_PING]<45)&& + (data.lnRawReturn==1)//JSO2 + ){ + data.lnStop[X_LINE]=0; + } + //JSO2 + if( + ( + ((Line[A_SPOT].read()==1)&&(Line[B_SPOT].read()==0))|| + ((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==0)) + )&& + (data.ping[F_PING]>45)&& + (data.ping[F_PING]<200)&& + (data.ping[R_PING]<25)&& + (data.ping[L_PING]>40) + ){ + *x = -LineReturn[4]; + data.lnStop[X_LINE]=0; + } + if( + ( + ((Line[A_SPOT].read()==0)&&(Line[B_SPOT].read()==1))|| + ((LineHolding[A_SPOT].read()==0)&&(LineHolding[B_SPOT].read()==1)) + )&& + (data.ping[F_PING]>45)&& + (data.ping[F_PING]<200)&& + (data.ping[L_PING]<25)&& + (data.ping[R_PING]>40) + ){ + *x = LineReturn[4]; + data.lnStop[X_LINE]=0; + } + } + else if( + ((data.lnRawOrder[0]==C_SPOT)&&(1)&&(1)) + ){ + data.lnStop[Y_LINE]=0; + *y = LineReturn[4]; + + //JSO1 + if( + (data.ping[B_PING]<45)&& + (data.lnRawReturn==1) + ){ + data.lnStop[X_LINE]=0; + } + } + else if(//x + ((data.lnRawOrder[0]==A_SPOT)&&(data.lnRawOrder[1]==C_SPOT)&&(1)) + ){ + *x = -LineReturn[4]; + data.lnStop[X_LINE]=0; + } + else if( + ((data.lnRawOrder[0]==B_SPOT)&&(data.lnRawOrder[1]==C_SPOT)&&(1)) + ){ + *x = LineReturn[4]; + data.lnStop[X_LINE]=0; + } + + if( + ((*x)!=0)|| + ((*y)!=0) + ){ + + data.lnRawReturn=1; + + LinePingState[L_PING]=(data.ping[L_PING]<WhiteToWallPlus[X_PING]); + LinePingState[R_PING]=(data.ping[R_PING]<WhiteToWallPlus[X_PING]); + LinePingState[F_PING]=(data.ping[F_PING]<WhiteToWallPlus[Y_PING]); + LinePingState[B_PING]=(data.ping[B_PING]<WhiteToWallPlus[Y_PING]); + //x + if(data.lnStop[X_LINE]==1){ + if((LinePingState[L_PING]==0)&&(LinePingState[R_PING]==1)){ + *x = -LineReturn[4]; + data.lnStop[X_LINE]=0; + } + if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==0)){ + *x = LineReturn[4]; + data.lnStop[X_LINE]=0; + } + if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==1)){ + *x = 0; + data.lnStop[X_LINE]=0; + } + } + //y + if(data.lnStop[Y_LINE]==1){ + if((LinePingState[B_PING]==0)&&(LinePingState[F_PING]==1)){ + if(pow_y<0){ + *y = 0; + data.lnStop[Y_LINE]=1; + } + else{ + *y = -LineReturn[4]; + data.lnStop[Y_LINE]=0; + } + } + //JSO2 + if((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==1)&&(LineHolding[C_SPOT].read()==0)&&(data.lnRawReturn==1)){ + *y = -LineReturn[4]; + data.lnStop[Y_LINE]=0; + } + + if((LinePingState[B_PING]==1)&&(LinePingState[F_PING]==0)){ + if(pow_y>0){ + *y = 0; + data.lnStop[Y_LINE]=1; + } + else{ + *y = LineReturn[4]; + data.lnStop[Y_LINE]=0; + } + } + if((LinePingState[B_PING]==1)&&(LinePingState[F_PING]==1)){ + *y = 0; + data.lnStop[Y_LINE]=0; + } + } + } + else{ + data.lnRawReturn=0; + + //JSO3 + if((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==LINE_EMPTY)&&(pow_x>0)){ + data.lnStop[X_LINE]=0; + } + if((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==LINE_EMPTY)&&(pow_x<0)){ + data.lnStop[X_LINE]=0; + } + //JSO3 + if((Line[C_SPOT].read()==1)&&(1)&&(pow_y>0)){ + data.lnStop[Y_LINE]=0; + } + } + //JSO3 + if((Line[C_SPOT].read()==1)&&(1)&&(pow_y>0)){ + data.lnStop[Y_LINE]=0; + } + //JSO1 + if(data.lnRawReturn==1){ + //JSO2 + if((lnRawReturn1==0)){ + LineLiberate(); + lnRawReturn1=1; + } + + if( + ( + ((data.lnRawOrder[0]==A_SPOT)&&(data.lnRawOrder[1]==C_SPOT)&&(1))|| + ((data.lnRawOrder[0]==B_SPOT)&&(data.lnRawOrder[1]==C_SPOT)&&(1)) + )&& + //((Line[A_SPOT].read()==1)&&(Line[B_SPOT].read()==1))&&//JSO1 + ((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==1))&&//JSO2 + ((data.ping[F_PING]<45)&&(1))&&//JSO2 + //(!((data.ping[B_PING]<40)&&(data.ping[B_PING]>25)))&&//JSO2 + ((data.lnRawOrder[0]!=C_SPOT)&&(data.lnRawOrderLog1[0]!=C_SPOT)&&(data.lnRawOrderLog2[0]!=C_SPOT)) + + ){ + *y = -LineReturn[4]; + data.lnStop[Y_LINE]=0;//JSO2 + } + } + else{ + lnRawReturn1=0; + + + if((LinePingState[L_PING]==0)&&(LinePingState[R_PING]==1)){ + *x = -LineReturn[4]; + data.lnStop[X_LINE]=0; + } + if((LinePingState[L_PING]==1)&&(LinePingState[R_PING]==0)){ + *x = LineReturn[4]; + data.lnStop[X_LINE]=0; + } + + } + + } +} +void LineJudgeReset(double pow_x, double pow_y, double *x, double *y){ + //static uint8_t NewLineCorner[4]={LINE_EMPTY, LINE_EMPTY, LINE_EMPTY, LINE_EMPTY}; + //static uint8_t LastLineCorner[4]={LINE_EMPTY, LINE_EMPTY, LINE_EMPTY, LINE_EMPTY}; + static uint8_t NewLineCorner[4]={LINE_EMPTY, LINE_EMPTY, LINE_EMPTY, LINE_EMPTY}; + static uint8_t LastLineCorner[4]={LINE_EMPTY, LINE_EMPTY, LINE_EMPTY, LINE_EMPTY}; + + if((/*data.lnRaw==0*/1)&&(data.lnHold==7)){ + if(data.FieldSpot==LINE_INSIDE){ + + data.lnCorner[L_LINE] = (data.ping[L_PING]<OutToWall[X_PING]); + data.lnCorner[R_LINE] = (data.ping[R_PING]<OutToWall[X_PING]); + data.lnCorner[F_LINE] = (data.ping[F_PING]<OutToWall[Y_PING]); + data.lnCorner[B_LINE] = (data.ping[B_PING]<OutToWall[Y_PING]); + if( + (data.lnCorner[L_LINE])|| + (data.lnCorner[R_LINE])|| + (data.lnCorner[F_LINE])|| + (data.lnCorner[B_LINE]) + ){ + + data.NonWall[L_LINE] = (data.ping[L_PING]>WhiteToWall[X_PING]); + data.NonWall[R_LINE] = (data.ping[R_PING]>WhiteToWall[X_PING]); + data.NonWall[F_LINE] = (data.ping[F_PING]>WhiteToWall[Y_PING]); + data.NonWall[B_LINE] = (data.ping[B_PING]>WhiteToWall[Y_PING]); + + + + ///* + LastLineCorner[L_LINE]=NewLineCorner[L_LINE]; + LastLineCorner[R_LINE]=NewLineCorner[R_LINE]; + LastLineCorner[F_LINE]=NewLineCorner[F_LINE]; + LastLineCorner[B_LINE]=NewLineCorner[B_LINE]; + + NewLineCorner[L_LINE]=data.lnCorner[L_LINE]; + NewLineCorner[R_LINE]=data.lnCorner[R_LINE]; + NewLineCorner[F_LINE]=data.lnCorner[F_LINE]; + NewLineCorner[B_LINE]=data.lnCorner[B_LINE]; + + if( + (LastLineCorner[L_LINE]==NewLineCorner[L_LINE])&& + (LastLineCorner[R_LINE]==NewLineCorner[R_LINE])&& + (LastLineCorner[F_LINE]==NewLineCorner[F_LINE])&& + (LastLineCorner[B_LINE]==NewLineCorner[B_LINE]) + ){ + data.lnRepeat++; + } + else{ + data.lnRepeat=0; + } + //*/ + + data.FieldSpot = LINE_OUTSIDE; + LineLiberate(); + } + } + else if(data.FieldSpot==LINE_OUTSIDE){ + if(data.lnRaw==0){ + data.FieldSpot = LINE_INSIDE; + data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; + LineLiberate(); + LineRankClear(); + } + } + } + if(data.FieldSpot == LINE_OUTSIDE){ + if( + ( + (data.ping[L_PING]>=WhiteToWall[X_PING])|| + (data.NonWall[L_LINE]==1)|| + ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==C_SPOT)) + //(data.lnOrder[0]==A_SPOT) + )&& + ( + (data.ping[R_PING]>=WhiteToWall[X_PING])|| + (data.NonWall[R_LINE]==1)|| + ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==C_SPOT)) + //(data.lnOrder[0]==B_SPOT) + )&& + ( + (data.ping[F_PING]>=WhiteToWall[Y_PING])|| + (data.NonWall[F_LINE]==1)|| + ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==A_SPOT))|| + ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==B_SPOT)) + )&& + ((data.ping[B_PING]>=WhiteToWall[Y_PING])|| + (data.NonWall[B_LINE]==1)|| + ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==B_SPOT))|| + ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==A_SPOT)) + ) + ){ + data.FieldSpot = LINE_INSIDE; + data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; + LineLiberate(); + LineRankClear(); + } + } + if((data.FieldSpot == LINE_INSIDE)&&(0<data.lnHold)&&(data.lnHold<7)&&(data.lnRaw==0)){ + if( + ( + ( + (data.ping[L_PING]>=WhiteToWall[X_PING])|| + ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==C_SPOT)) + //(data.lnOrder[0]==A_SPOT) + )&& + ( + (data.ping[R_PING]>=WhiteToWall[X_PING])|| + ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==C_SPOT)) + //(data.lnOrder[0]==B_SPOT) + )&& + ( + (data.ping[F_PING]>=WhiteToWall[Y_PING])|| + ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==A_SPOT))|| + ((data.lnOrder[0]==C_SPOT)&&(data.lnOrder[1]==B_SPOT)) + )&& + ( + (data.ping[B_PING]>=WhiteToWall[Y_PING])|| + ((data.lnOrder[0]==A_SPOT)&&(data.lnOrder[1]==B_SPOT))|| + ((data.lnOrder[0]==B_SPOT)&&(data.lnOrder[1]==A_SPOT)) + ) + ) + || + ( + (data.ping[L_PING]>=GoalEdgeToWall[X_PING])&& + (data.ping[R_PING]>=GoalEdgeToWall[X_PING]) + ) + ){ + data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; + LineLiberate(); + } + } + ///* + if( + (data.irNotice==IR_NONE)|| + (data.irNotice==IR_FAR)|| + ( + (data.ping[L_PING]>=GoalEdgeToWall[X_PING])&& + (data.ping[R_PING]>=GoalEdgeToWall[X_PING]) + ) + ){ + data.lnRepeat = 0; + + NewLineCorner[L_LINE]=LINE_EMPTY; + NewLineCorner[R_LINE]=LINE_EMPTY; + NewLineCorner[F_LINE]=LINE_EMPTY; + NewLineCorner[B_LINE]=LINE_EMPTY; + + LastLineCorner[L_LINE]=LINE_EMPTY; + LastLineCorner[R_LINE]=LINE_EMPTY; + LastLineCorner[F_LINE]=LINE_EMPTY; + LastLineCorner[B_LINE]=LINE_EMPTY; + } + //data.lnRepeat=0; + if((data.lnRepeat>0)&&(data.FieldSpot == LINE_INSIDE)){ + //x + if( + ((pow_x>=0)&&(NewLineCorner[R_LINE]))|| + ((pow_x<0)&&(NewLineCorner[L_LINE])) + ){ + data.lnStay[X_LINE]=0; + } + else{ + data.lnStay[X_LINE]=1; + } + //y + if( + ((pow_y>=0)&&(NewLineCorner[F_LINE]))|| + ((pow_y<0)&&(NewLineCorner[B_LINE])) + ){ + data.lnStay[Y_LINE]=0; + } + else{ + data.lnStay[Y_LINE]=1; + } + } + else{ + data.lnStay[X_LINE]=data.lnStay[Y_LINE]=1; + } + //*/ + +} +void LineJudgeReset2(double pow_x, double pow_y, double *x, double *y){ + + if(data.lnRepeat==0){ + data.lnStayNow[X_LINE]=0; + data.lnStayNow[Y_LINE]=0; + } + data.lnStay[X_LINE]=1; + data.lnStay[Y_LINE]=1; + + if((data.irNotice==IR_FAR)&&(data.lnRepeat>1)){ + data.lnRepeat=1; + } + + if( + (data.irNotice==IR_NONE)|| + //(data.irNotice==IR_FAR)|| + //(data.irLastPosition<=7)|| + ( + (!( + (data.irPosition==data.irLastPosition)|| + (data.irPosition==(ir_posi_s[(data.irLastPosition-8+24+1)%12]))|| + (data.irPosition==(ir_posi_s[(data.irLastPosition-8+24-1)%12]))|| + (data.irPosition==(ir_posi_s[(data.irLastPosition-8+24+2)%12]))|| + (data.irPosition==(ir_posi_s[(data.irLastPosition-8+24-2)%12])) + //((data.irPosition==(ir_posi_s[(data.irLastPosition-8+24+3)%12]))&&(cmps_set.GoalDeg==0))|| + //((data.irPosition==(ir_posi_s[(data.irLastPosition-8+24-3)%12]))&&(cmps_set.GoalDeg==0)) + ))&&( + (data.irLastNotice==IR_CLOSE)|| + (data.irLastNotice==IR_CLOSER) + ) + ) + ){ + data.lnRepeat = 0; + + LineRawLogReset(); + } + //data.lnRepeat=0; + //if((data.lnRepeat==1)&&((data.lnRawOrder[0]==LINE_EMPTY)&&(data.lnRawOrder[1]==LINE_EMPTY)&&(data.lnRawOrder[2]==LINE_EMPTY))){ + if( + (data.lnRepeat>=1)&& + (data.lnRawOrder[0]==LINE_EMPTY)/*&& + ( + ( + (data.irPosition==data.irLastPosition)|| + (data.irPosition==(data.irLastPosition+1))|| + (data.irPosition==(data.irLastPosition-1))|| + (data.irPosition==(data.irLastPosition+11))|| + (data.irPosition==(data.irLastPosition-11)) + )&& + ( + (data.irNotice==IR_CLOSE)|| + (data.irNotice==IR_CLOSER) + ) + )*/ + ){ + //y + if( + ((pow_y>0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==B_SPOT)&&(1)))|| + ((pow_y>0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==A_SPOT)&&(1))) + ){ + if(data.ping[F_PING]<WhiteToWallPlus[Y_PING]){ + data.lnStay[Y_LINE]=0; + } + else{ + data.lnStay[Y_LINE]=1; + } + data.lnStay[Y_LINE]=0; + data.lnStayNow[Y_LINE]=1; + } + else{ + data.lnStay[Y_LINE]=1; + } + if( + ((pow_y<0)&&((data.lnRawOrderLog1[0]==C_SPOT)&&(1)&&(1))) + ){ + if(data.ping[B_PING]<WhiteToWallPlus[Y_PING]){ + data.lnStay[Y_LINE]=0; + } + else{ + data.lnStay[Y_LINE]=1; + } + data.lnStay[Y_LINE]=0; + data.lnStayNow[Y_LINE]=1; + } + else{ + data.lnStay[Y_LINE]=1; + } + //x + if( + ((pow_x>0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT)&&(1))) + ){ + if(data.ping[R_PING]<WhiteToWallPlus[X_PING]){ + data.lnStay[X_LINE]=0; + } + else{ + data.lnStay[X_LINE]=1; + } + data.lnStay[X_LINE]=0; + data.lnStayNow[X_LINE]=1; + } + else{ + data.lnStay[X_LINE]=1; + } + if( + ((pow_x<0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT)&&(1))) + ){ + if(data.ping[L_PING]<WhiteToWallPlus[X_PING]){ + data.lnStay[X_LINE]=0; + } + else{ + data.lnStay[X_LINE]=1; + } + data.lnStay[X_LINE]=0; + data.lnStayNow[X_LINE]=1; + } + else{ + data.lnStay[X_LINE]=1; + } + if((data.irNotice==IR_CLOSE)||(data.irNotice==IR_CLOSER)){ + //y2 + if((data.lnStay[X_LINE]==1)&&(data.lnStay[Y_LINE]==0)){ + if( + ((pow_x>0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==B_SPOT))&&((data.irPosition== 9)||(data.irPosition==10)))|| + ((pow_x>0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==A_SPOT))&&((data.irPosition== 9)||(data.irPosition==10)))|| + ((pow_x>0)&&((data.lnRawOrderLog1[0]==C_SPOT)&&(1 ))&&((data.irPosition==18)||(data.irPosition==19))) + ){ + if(data.ping[R_PING]<WhiteToWallPlus[X_PING]){ + data.lnStay[X_LINE]=0; + } + else{ + data.lnStay[X_LINE]=1; + } + if(data.lnRepeat>=LINE_REPEAT){ + data.lnStay[X_LINE]=0; + } + data.lnStayNow[X_LINE]=1; + } + else{ + data.lnStay[X_LINE]=1; + } + } + if((data.lnStay[X_LINE]==1)&&(data.lnStay[Y_LINE]==0)){ + if( + ((pow_x<0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==B_SPOT))&&((data.irPosition==12)||(data.irPosition==13)))|| + ((pow_x<0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==A_SPOT))&&((data.irPosition==12)||(data.irPosition==13)))|| + ((pow_x<0)&&((data.lnRawOrderLog1[0]==C_SPOT)&&(1 ))&&((data.irPosition==15)||(data.irPosition==16))) + ){ + if(data.ping[L_PING]<WhiteToWallPlus[X_PING]){ + data.lnStay[X_LINE]=0; + } + else{ + data.lnStay[X_LINE]=1; + } + if(data.lnRepeat>=LINE_REPEAT){ + data.lnStay[X_LINE]=0; + } + data.lnStayNow[X_LINE]=1; + } + else{ + data.lnStay[X_LINE]=1; + } + } + //x2 + if((data.lnStay[X_LINE]==0)&&(data.lnStay[Y_LINE]==1)){ + if( + ((pow_y>0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT))&&((data.irPosition== 9)||(data.irPosition==10)))|| + ((pow_y>0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT))&&((data.irPosition==12)||(data.irPosition==13))) + ){ + if(data.ping[F_PING]<WhiteToWallPlus[Y_PING]){ + data.lnStay[Y_LINE]=0; + } + else{ + data.lnStay[Y_LINE]=1; + } + if(data.lnRepeat>=LINE_REPEAT){ + data.lnStay[Y_LINE]=0; + } + data.lnStayNow[Y_LINE]=1; + } + else{ + data.lnStay[Y_LINE]=1; + } + + if( + ((pow_y<0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT))&&((data.irPosition==18)||(data.irPosition==19)))|| + ((pow_y<0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT))&&((data.irPosition==15)||(data.irPosition==16))) + ){ + if(data.ping[B_PING]<WhiteToWallPlus[Y_PING]){ + data.lnStay[Y_LINE]=0; + } + else{ + data.lnStay[Y_LINE]=1; + } + if(data.lnRepeat>=LINE_REPEAT){ + data.lnStay[Y_LINE]=0; + } + data.lnStayNow[Y_LINE]=1; + } + else{ + data.lnStay[Y_LINE]=1; + } + } + if( + (data.lnRepeat>=2) + ){ + if( + ((pow_y>0)&&((data.ping[F_PING]<40)&&(1)))|| + ((pow_y<0)&&((data.ping[B_PING]<40)&&(1))) + ){ + data.lnStay[Y_LINE]=0; + } + if( + ((pow_x>0)&&((data.ping[R_PING]<40)&&(1)))|| + ((pow_x<0)&&((data.ping[L_PING]<40)&&(1))) + ){ + data.lnStay[X_LINE]=0; + } + } + } + + + } + else{ + data.lnStay[X_LINE]=data.lnStay[Y_LINE]=1; + } + +} +void LineJudgeReset3(double pow_x, double pow_y, double *x, double *y){ + + if(data.lnRepeat==0){ + data.lnStayNow[X_LINE]=0; + data.lnStayNow[Y_LINE]=0; + } + data.lnStay[X_LINE]=1; + data.lnStay[Y_LINE]=1; + + if((data.irNotice==IR_FAR)&&(data.lnRepeat>1)){ + data.lnRepeat=1; + } + + if( + (data.irNotice==IR_NONE)|| + (data.irNotice==IR_FAR)|| + //(data.irLastPosition<=7)|| + ( + (!( + (data.irPosition==data.irLastPosition)|| + (data.irPosition==(ir_posi_s[(data.irLastPosition-8+24+1)%12]))|| + (data.irPosition==(ir_posi_s[(data.irLastPosition-8+24-1)%12])) + //(data.irPosition==(ir_posi_s[(data.irLastPosition-8+24+2)%12]))|| + //(data.irPosition==(ir_posi_s[(data.irLastPosition-8+24-2)%12])) + //((data.irPosition==(ir_posi_s[(data.irLastPosition-8+24+3)%12]))&&(cmps_set.GoalDeg==0))|| + //((data.irPosition==(ir_posi_s[(data.irLastPosition-8+24-3)%12]))&&(cmps_set.GoalDeg==0)) + ))&&( + (data.irLastNotice==IR_CLOSE)|| + (data.irLastNotice==IR_CLOSER) + ) + ) + ){ + data.lnRepeat = 0; + + LineRawLogReset(); + } + //data.lnRepeat=0; + //if((data.lnRepeat==1)&&((data.lnRawOrder[0]==LINE_EMPTY)&&(data.lnRawOrder[1]==LINE_EMPTY)&&(data.lnRawOrder[2]==LINE_EMPTY))){ + if( + (data.lnRepeat>=1)&& + (data.lnRawOrder[0]==LINE_EMPTY)/*&& + ( + ( + (data.irPosition==data.irLastPosition)|| + (data.irPosition==(data.irLastPosition+1))|| + (data.irPosition==(data.irLastPosition-1))|| + (data.irPosition==(data.irLastPosition+11))|| + (data.irPosition==(data.irLastPosition-11)) + )&& + ( + (data.irNotice==IR_CLOSE)|| + (data.irNotice==IR_CLOSER) + ) + )*/ + ){ + //y + if( + ((pow_y>0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==B_SPOT)&&(1)))|| + ((pow_y>0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==A_SPOT)&&(1))) + ){ + if(data.ping[F_PING]<WhiteToWallPlus[Y_PING]){ + data.lnStay[Y_LINE]=0; + } + else{ + data.lnStay[Y_LINE]=1; + } + data.lnStay[Y_LINE]=0; + data.lnStayNow[Y_LINE]=1; + } + else{ + data.lnStay[Y_LINE]=1; + } + if( + ((pow_y<0)&&((data.lnRawOrderLog1[0]==C_SPOT)&&(1)&&(1))) + ){ + if(data.ping[B_PING]<WhiteToWallPlus[Y_PING]){ + data.lnStay[Y_LINE]=0; + } + else{ + data.lnStay[Y_LINE]=1; + } + data.lnStay[Y_LINE]=0; + data.lnStayNow[Y_LINE]=1; + } + else{ + data.lnStay[Y_LINE]=1; + } + //x + if( + ((pow_x>0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT)&&(1))) + ){ + if(data.ping[R_PING]<WhiteToWallPlus[X_PING]){ + data.lnStay[X_LINE]=0; + } + else{ + data.lnStay[X_LINE]=1; + } + data.lnStay[X_LINE]=0; + data.lnStayNow[X_LINE]=1; + } + else{ + data.lnStay[X_LINE]=1; + } + if( + ((pow_x<0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT)&&(1))) + ){ + if(data.ping[L_PING]<WhiteToWallPlus[X_PING]){ + data.lnStay[X_LINE]=0; + } + else{ + data.lnStay[X_LINE]=1; + } + data.lnStay[X_LINE]=0; + data.lnStayNow[X_LINE]=1; + } + else{ + data.lnStay[X_LINE]=1; + } + if((data.irNotice==IR_CLOSE)||(data.irNotice==IR_CLOSER)){ + //y2 + if((data.lnStay[X_LINE]==1)&&(data.lnStay[Y_LINE]==0)){ + if( + ((pow_x>0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==B_SPOT))&&((data.irPosition== 9)||(data.irPosition==10)))|| + ((pow_x>0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==A_SPOT))&&((data.irPosition== 9)||(data.irPosition==10)))|| + ((pow_x>0)&&((data.lnRawOrderLog1[0]==C_SPOT)&&(1 ))&&((data.irPosition==18)||(data.irPosition==19))) + ){ + if(data.ping[R_PING]<WhiteToWallPlus[X_PING]){ + data.lnStay[X_LINE]=0; + } + else{ + data.lnStay[X_LINE]=1; + } + if(data.lnRepeat>=LINE_REPEAT){ + data.lnStay[X_LINE]=0; + } + data.lnStayNow[X_LINE]=1; + } + else{ + data.lnStay[X_LINE]=1; + } + } + if((data.lnStay[X_LINE]==1)&&(data.lnStay[Y_LINE]==0)){ + if( + ((pow_x<0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==B_SPOT))&&((data.irPosition==12)||(data.irPosition==13)))|| + ((pow_x<0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==A_SPOT))&&((data.irPosition==12)||(data.irPosition==13)))|| + ((pow_x<0)&&((data.lnRawOrderLog1[0]==C_SPOT)&&(1 ))&&((data.irPosition==15)||(data.irPosition==16))) + ){ + if(data.ping[L_PING]<WhiteToWallPlus[X_PING]){ + data.lnStay[X_LINE]=0; + } + else{ + data.lnStay[X_LINE]=1; + } + if(data.lnRepeat>=LINE_REPEAT){ + data.lnStay[X_LINE]=0; + } + data.lnStayNow[X_LINE]=1; + } + else{ + data.lnStay[X_LINE]=1; + } + } + //x2 + if((data.lnStay[X_LINE]==0)&&(data.lnStay[Y_LINE]==1)){ + if( + ((pow_y>0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT))&&((data.irPosition== 9)||(data.irPosition==10)))|| + ((pow_y>0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT))&&((data.irPosition==12)||(data.irPosition==13))) + ){ + if(data.ping[F_PING]<WhiteToWallPlus[Y_PING]){ + data.lnStay[Y_LINE]=0; + } + else{ + data.lnStay[Y_LINE]=1; + } + if(data.lnRepeat>=LINE_REPEAT){ + data.lnStay[Y_LINE]=0; + } + data.lnStayNow[Y_LINE]=1; + } + else{ + data.lnStay[Y_LINE]=1; + } + + if( + ((pow_y<0)&&((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT))&&((data.irPosition==18)||(data.irPosition==19)))|| + ((pow_y<0)&&((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==C_SPOT))&&((data.irPosition==15)||(data.irPosition==16))) + ){ + if(data.ping[B_PING]<WhiteToWallPlus[Y_PING]){ + data.lnStay[Y_LINE]=0; + } + else{ + data.lnStay[Y_LINE]=1; + } + if(data.lnRepeat>=LINE_REPEAT){ + data.lnStay[Y_LINE]=0; + } + data.lnStayNow[Y_LINE]=1; + } + else{ + data.lnStay[Y_LINE]=1; + } + } + if( + (data.lnRepeat>=2) + ){ + if( + ((pow_y>0)&&((data.ping[F_PING]<40)&&(1)))|| + ((pow_y<0)&&((data.ping[B_PING]<40)&&(1))) + ){ + data.lnStay[Y_LINE]=0; + } + if( + ((pow_x>0)&&((data.ping[R_PING]<40)&&(1)))|| + ((pow_x<0)&&((data.ping[L_PING]<40)&&(1))) + ){ + data.lnStay[X_LINE]=0; + } + } + } + + + } + else{ + data.lnStay[X_LINE]=data.lnStay[Y_LINE]=1; + } + +} +void JudgeInSide(void){ + data.FieldSpot = LINE_INSIDE; + data.NonWall[L_LINE] = data.NonWall[R_LINE] = data.NonWall[F_LINE] = data.NonWall[B_LINE] = 0; + LineLiberate(); + LineRankClear(); + //Line_home.detach(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy/LineProcess.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,13 @@ +#ifndef _LINE_PROCESS_H_ +#define _LINE_PROCESS_H_ + +void LineJudgeSlow(double pow_x, double pow_y, double *x, double *y); +void LineJudgeSlow2(double pow_x, double pow_y, double *x, double *y, uint8_t *px, uint8_t *py); +void LineJudgeReturn(double pow_x, double pow_y, double *x, double *y); +void LineJudgeReturn2(double pow_x, double pow_y, double *x, double *y); +void LineJudgeReset(double pow_x, double pow_y, double *x, double *y); +void LineJudgeReset2(double pow_x, double pow_y, double *x, double *y); +void LineJudgeReset3(double pow_x, double pow_y, double *x, double *y); +void JudgeInSide(void); + +#endif //_LINE_PROCESS_H_
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy/old_strategy.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,226 @@ +#include "mbed.h" +#include "extern.h" + +//Atk +void modeAttack0(void){//red(NormalAtk_______) + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=1; + sys.DriBlind=0; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +} +void modeAttack1(void){//green(Libero__________) + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=0; + sys.DriBlind=0;//1; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +} +void modeAttack2(void){ + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=0; + sys.DriBlind=1; + sys.DriMotorBlind=1; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +} +void modeAttack3(void){ + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=1; + sys.DriBlind=0; + sys.DriMotorBlind=1; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +} + +//Debug +void modeDebug0(void){ + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=1; + sys.DriBlind=0; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +} +void modeDebug1(void){ + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=1; + sys.DriBlind=0; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +} +void modeDebug2(void){ + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=1; + sys.PingBlind=0; + + sys.HomeBlind=0; + sys.DriBlind=1; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +} +void modeDebug3(void){ + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=1; + sys.PingBlind=0; + + sys.HomeBlind=1; + sys.DriBlind=0; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +} +void modeDebug4(void){ + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=1; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=0; + sys.DriBlind=1; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +} +void modeDebug5(void){ + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=1; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=1; + sys.DriBlind=0; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy/old_strategy.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,21 @@ +#ifndef _OLD_STRATEGY_H_ +#define _OLD_STRATEGY_H_ + +#include "mbed.h" +#include "extern.h" + +//Atk +void modeAttack0(void); +void modeAttack1(void); +void modeAttack2(void); +void modeAttack3(void); + +//Debug +void modeDebug0(void); +void modeDebug1(void); +void modeDebug2(void); +void modeDebug3(void); +void modeDebug4(void); +void modeDebug5(void); + +#endif //_OLD_STRATEGY_H_ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy/strategy.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,653 @@ +#include "mbed.h" +#include "extern.h" + +//Atk +void modeAttack4(void){ + //irの値に影響するモーター補正値 + //uint8_t ir_pow; + uint8_t ir_pow_x, ir_pow_y; + double ir_x_dir, ir_y_dir; + double ir_x_turn, ir_y_turn; + double ir_x, ir_y; + //lineの値に影響するモーター補正値 + double LineSlowPower[2]; + double LineReturnPower[2]; + + //モーターの出力値 + int vx,vy,vs; + + ////初期値を決める等 + if(sys.KickOffFlag==1){ + /* + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=1; + sys.DriBlind=1; + //defence + sys.DefenceFlag=0; + */ + + + //Kick + sys.KickStopFlag=0; + //Ir + sys.ir_pow_table = 0; + //Line + //data.lnCorner[L_LINE]=data.lnCorner[R_LINE]=data.lnCorner[F_LINE]=data.lnCorner[B_LINE]=LINE_EMPTY; + data.lnRepeat = 0; + data.lnStay[X_LINE]=data.lnStay[Y_LINE]=1; + data.lnStayNow[X_LINE]=data.lnStayNow[Y_LINE]=0; + data.lnStop[X_LINE]=data.lnStop[Y_LINE]=1; + + //data.FieldSpot = LINE_INSIDE; + //LineLiberate(); + //LineRankClear(); + + //JSO2 + LineLiberate(); + + LineRawRankClear(); + + //data.lnRawMemory[A_SPOT]=0; + //data.lnRawMemory[B_SPOT]=0; + //data.lnRawMemory[C_SPOT]=0; + + data.lnRawReturn=0; + + LineRawLogReset(); + //backhome + sys.HomeStayFlag[X_PING]=0; + sys.HomeStayFlag[Y_PING]=0; + //pid + sys.TurnStopFlag=0; + cmps_set.AtkDeg=0; + cmps_set.HoldDeg=0; + cmps_set.GoalDeg=0; + //ドリブラー + sys.BallHoldJudgeFlag=0; + sys.BallHoldFlag=0; + + //初期値設定の終了 + sys.KickOffFlag=0; + } + ////DataRetrieve + if(sys.InfoFlag==1){ReadInfo();sys.InfoFlag=0;} + data.lnRaw = LineRaw; + data.lnHold = LineHold; + data.ball = ReadBall(); + + //ボールがなければ自分のゴールに戻る + if(data.irNotice==IR_NONE){ + + cmps_set.GoalDeg=0; + sys.BackHomeFlag=(sys.HomeBlind==0); + } + else{ + sys.BackHomeFlag=0; + sys.HomeStayFlag[X_PING]=0; + sys.HomeStayFlag[Y_PING]=0; + } + //回り込みの値を代入 + if(sys.DefenceFlag==1){ + + if((data.irNotice==IR_NONE)||(data.irNotice==IR_FAR)){ + + if((data.ping[L_PING]>=50)&&(data.ping[R_PING]>=50)){ + ir_x_dir = ir_move_val[5][data.irNotice][data.irPosition][IR_X_DIR]; + ir_x_turn = ir_move_val[5][data.irNotice][data.irPosition][IR_X_TURN]; + + if(data.ping[B_PING]>=10){ + ir_y_dir = -1; + ir_y_turn = 0; + } + else{ + ir_y_dir = 0; + ir_y_turn = 0; + } + } + else if((data.ping[L_PING]>=50)&&(data.ping[R_PING]<50)){ + ir_x_dir = -1; + ir_x_turn = 0; + + if(data.ping[B_PING]>=45){ + ir_y_dir = -1; + ir_y_turn = 0; + } + else{ + ir_y_dir = 0; + ir_y_turn = 0; + } + } + else if((data.ping[L_PING]<50)&&(data.ping[R_PING]>=50)){ + ir_x_dir = 1; + ir_x_turn = 0; + + if(data.ping[B_PING]>=45){ + ir_y_dir = -1; + ir_y_turn = 0; + } + else{ + ir_y_dir = 0; + ir_y_turn = 0; + } + } + else if((data.ping[L_PING]<50)&&(data.ping[R_PING]<50)){ + ir_x_dir = 0; + ir_x_turn = 0; + + if(data.ping[B_PING]>=45){ + ir_y_dir = -1; + ir_y_turn = 0; + } + else{ + ir_y_dir = 0; + ir_y_turn = 0; + } + } + } + else{ + + ir_x_dir = ir_move_val[5][data.irNotice][data.irPosition][IR_X_DIR]; + ir_x_turn = ir_move_val[5][data.irNotice][data.irPosition][IR_X_TURN]; + + if((data.ping[B_PING]>=5)&&(data.ping[R_PING]>=50)&&(data.ping[L_PING]>=50)){ + ir_y_dir = -1; + ir_y_turn = 0; + } + else{ + ir_y_dir = 0; + ir_y_turn = 0; + } + } + /* + if((data.ping[L_PING]>=50)&&(data.ping[R_PING]>=50)&&(data.ping[B_PING]>10)){ + ir_y_dir = -1; + ir_y_turn = 0; + + if(data.ping[B_PING]>=10){ + ir_y_dir = -1; + ir_y_turn = 0; + } + else{ + ir_y_dir = 0; + ir_y_turn = 0; + } + + ir_x_dir = ir_move_val[2][data.irNotice][data.irPosition][IR_X_DIR]; + ir_x_turn = ir_move_val[2][data.irNotice][data.irPosition][IR_X_TURN]; + } + else{ + + } + */ + /* + if((data.ping[B_PING]>=45)&&(data.irNotice!=IR_NONE)&&(15<=data.irPosition)&&(data.irPosition<=19)){ + //sys.ir_pow_table=1; + ir_x_dir = 0; + ir_y_dir = -1; + ir_x_turn = 0; + ir_y_turn = 0; + } + else{ + if(data.irValPhase[IR_SHORT]>=DIS_4){ + sys.ir_pow_table=2;//直進 + ir_x_dir = ir_move_val[2][data.irNotice][data.irPosition][IR_X_DIR]; + ir_y_dir = ir_move_val[2][data.irNotice][data.irPosition][IR_Y_DIR]; + ir_x_turn = ir_move_val[2][data.irNotice][data.irPosition][IR_X_TURN]; + ir_y_turn = ir_move_val[2][data.irNotice][data.irPosition][IR_Y_TURN]; + } + else{ + if(data.irValPhase[IR_SHORT]<=DIS_1){ + sys.ir_pow_table=0;//3 + ir_x_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_X_DIR]; + ir_y_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_DIR]; + ir_x_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_X_TURN]; + ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN]; + } + else{ + sys.ir_pow_table=0; + ir_x_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_X_DIR]; + ir_y_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_DIR]; + ir_x_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_X_TURN]; + ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN]; + } + } + }*/ + } + else{ + if((data.ping[B_PING]>40)&&(0)){ + sys.ir_pow_table=0; + ir_x_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_X_DIR]; + ir_y_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_DIR]; + ir_x_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_X_TURN]; + ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN]; + } + else{ + if((data.ping[B_PING]>60)&&(data.irValPhase[IR_SHORT]>=DIS_4)){ + sys.ir_pow_table=2;//直進 + ir_x_dir = ir_move_val[2][data.irNotice][data.irPosition][IR_X_DIR]; + ir_y_dir = ir_move_val[2][data.irNotice][data.irPosition][IR_Y_DIR]; + ir_x_turn = ir_move_val[2][data.irNotice][data.irPosition][IR_X_TURN]; + ir_y_turn = ir_move_val[2][data.irNotice][data.irPosition][IR_Y_TURN]; + } + else{ + if(data.irValPhase[IR_SHORT]<=DIS_1){ + sys.ir_pow_table=0;//3 + ir_x_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_X_DIR]; + ir_y_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_DIR]; + ir_x_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_X_TURN]; + ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN]; + } + else{ + sys.ir_pow_table=0; + ir_x_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_X_DIR]; + ir_y_dir = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_DIR]; + ir_x_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_X_TURN]; + ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN]; + } + } + } + if((sys.HomeBlind==0)){ + if(((data.irNotice==IR_CLOSE)||(data.irNotice==IR_CLOSER))&&(data.ping[B_PING]<60)&& + ( + (data.irPosition==11)|| + (data.irPosition==(ir_posi_s[(11-8+24+1)%12]))|| + (data.irPosition==(ir_posi_s[(11-8+24-1)%12]))|| + (data.irPosition==(ir_posi_s[(11-8+24+2)%12]))|| + (data.irPosition==(ir_posi_s[(11-8+24-2)%12]))|| + (data.irPosition==(ir_posi_s[(11-8+24+3)%12]))|| + (data.irPosition==(ir_posi_s[(11-8+24-3)%12])) + ) + ){ + sys.ir_pow_table=2;//直進 + ir_x_dir = ir_move_val[2][data.irNotice][data.irPosition][IR_X_DIR]; + ir_y_dir = ir_move_val[2][data.irNotice][data.irPosition][IR_Y_DIR]; + ir_x_turn = ir_move_val[2][data.irNotice][data.irPosition][IR_X_TURN]; + ir_y_turn = ir_move_val[2][data.irNotice][data.irPosition][IR_Y_TURN]; + } + } + } + + //Irの検出値によって出力を調整 + if(data.irNotice==IR_CLOSER){ + //ir_pow = sys.s_pow; + ir_pow_x = ir_pow_y = sys.s_pow; + } + else if(data.irNotice==IR_CLOSE){ + //ir_pow = sys.m_pow; + ir_pow_x = ir_pow_y = sys.m_pow; + } + else if(data.irNotice==IR_FAR){ + //ir_pow = sys.l_pow; + ir_pow_x = ir_pow_y = sys.l_pow; + } + else{//data.irNotice==IR_NONE + //ir_pow = 0; + ir_pow_x = ir_pow_y = 0; + } + + if(sys.DefenceFlag==1){ + ir_pow_x = 30; + ir_pow_y = 30; + if(data.ping[L_PING]<=60){ + ir_pow_y = 30; + } + if(data.ping[L_PING]<=40){ + ir_pow_y = 25; + } + if(data.ping[L_PING]<=30){ + ir_pow_y = 20; + } + if(data.ping[L_PING]<15){ + ir_pow_y = 15; + } + if(data.ping[L_PING]<10){ + ir_pow_y = 10; + } + } + ////ドリブラーdribbler + //ホールド判定hold + JudgeBallHolding(); + //JudgeBallHold(); + //sys.BallHoldFlag = data.ball; + //ドリブラー駆動 + /*if((sys.TurnDriBlind==0)&&(data.lnRawOrderLog1[0]!=LINE_EMPTY)&&(data.lnRawOrder[0]==LINE_EMPTY)){ + if(sys.TurnDriBlind==0){ + if( + ((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]==B_SPOT))|| + ((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]==A_SPOT)) + ){ + cmps_set.GoalDeg=0; + } + else if((data.lnRawOrderLog1[0]==A_SPOT)&&(1)){ + cmps_set.GoalDeg=-30; + } + else if((data.lnRawOrderLog1[0]==B_SPOT)&&(1)){ + cmps_set.GoalDeg=30; + } + else{ + cmps_set.GoalDeg=0; + } + } + }*/ + if((sys.TurnDriBlind==0)&&(/*data.lnRaw==0*/1)&&((data.irNotice==IR_CLOSER)||(data.irNotice==IR_CLOSE))&&(/*data.ping[B_PING]>90*/1)&& + ( + (data.irPosition==11)|| + (data.irPosition==(ir_posi_s[(11-8+24+1)%12]))|| + (data.irPosition==(ir_posi_s[(11-8+24-1)%12]))|| + (data.irPosition==(ir_posi_s[(11-8+24+2)%12]))|| + (data.irPosition==(ir_posi_s[(11-8+24-2)%12])) + ) + + ){ + if(sys.TurnDriBlind==0){ + if( + ((data.ping[L_PING]<40)&&(data.ping[R_PING]>70)) + ){ + cmps_set.GoalDeg=60; + } + else if( + ((data.ping[R_PING]<40)&&(data.ping[L_PING]>70)) + ){ + cmps_set.GoalDeg=-60; + } + else{ + cmps_set.GoalDeg=0; + } + } + } + if((sys.DriBlind==0)&&(data.irNotice==IR_CLOSER)&&((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))){ + sys.DribbleFlag=1; + if((sys.BallHoldFlag==1)||(data.ball==1)){ + //ir_pow=20; + ir_pow_x = ir_pow_y = 20; + } + } + else{ + sys.DribbleFlag=0; + cmps_set.HoldDeg=0; + } + + ////Kick + /*if((data.ball==1)&&(data.irNotice==IR_CLOSER)&&((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))){ + DriveTurn(); + }*/ + /*if((data.ball==1)&&(data.irNotice==IR_CLOSER)&&((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))){ + DriveTurn(); + DriveSolenoid(); + }*/ + if( + /*(sys.BallHoldFlag==1)&& + (data.ball==1)&& + (data.irNotice==IR_CLOSER)&& + ((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))&& + (data.ping[B_PING]>100)&& + ( + ((data.ping[L_PING]<60)&&(data.ping[R_PING]>60))|| + ((data.ping[L_PING]>60)&&(data.ping[R_PING]<60))|| + (data.lnRawOrderLog1[0]==A_SPOT)|| + (data.lnRawOrder[0]==A_SPOT)|| + (data.lnRawOrderLog1[0]==B_SPOT)|| + (data.lnRawOrder[0]==B_SPOT) + )&& + (data.lnRaw==0)*/ + (sys.DriBlind==0)&& + (data.ping[R_PING]<30)&& + (data.ping[L_PING]<30) + ){ + //DriveTurn(); + //DriveSolenoid(); + } + + //Irの細かい補正値の処理.基本的にLineの補正値を演算する処理が始まる前にIrのモーター出力値補正をすべて終わらせる. + //if(sys.IrBlind==1) ir_pow=0; + if(sys.IrBlind==1) ir_pow_x=ir_pow_y=0; + if((data.ping[R_PING]<data.ping[L_PING])&&(data.irPosition==17)&&(data.irNotice==IR_CLOSER)){ + ir_x_turn = -ir_x_turn; + ir_y_turn = -ir_y_turn; + } + + if((sys.BackHomeFlag==1)&&(sys.HomeBlind==0)){ + ir_pow_x = ir_pow_y = 25; + //x + if((abs(data.ping[L_PING]-data.ping[R_PING])>20)&&(sys.HomeStayFlag[X_PING]==0)){ + if(data.ping[L_PING]>data.ping[R_PING]){ + ir_x = -1; + } + else{ + ir_x = 1; + } + if((data.ping[L_PING]<WhiteToWallPlus[X_PING])&&(data.ping[R_PING]<WhiteToWallPlus[X_PING])){ + ir_x = 0; + } + } + else{ + ir_x = 0; + // + sys.HomeStayFlag[X_PING]=1; + } + //y + if((data.ping[B_PING]>60)&&(1)&&(sys.HomeStayFlag[Y_PING]==0)){ + ir_y = -1; + /*if((abs(data.ping[L_PING]-data.ping[R_PING])>30)&&(1)){ + ir_pow_y = 15; + }*/ + } + else{ + ir_y = 0; + /* + if((1)&&(data.ping[B_PING]>60)&&(data.ping[R_PING]>55)&&(data.ping[L_PING]>55)){ + ir_y = -1; + ir_pow_y = 15; + } + else{ + ir_y = 0; + } + */ + // + sys.HomeStayFlag[Y_PING]=1; + } + } + else{ + ir_x = (ir_x_dir + ir_x_turn); + ir_y = (ir_y_dir + ir_y_turn); + } + if((sys.HomeBlind==0)&&(data.irNotice==IR_FAR)){ + if(ir_y>0){ + ir_y=0; + ir_pow_x = ir_pow_y = 25; + + if((data.ping[B_PING]>50)&&(1)){ + ir_y = -1; + //ir_pow_y = 15; + } + + } + //ir_pow_x = ir_pow_y = 25; + //if(ir_y>0) ir_y=0; + /*if((data.ping[B_PING]>40)&&(1)){ + ir_y = -1; + //ir_pow_y = 15; + }*/ + } + if( + (sys.DefenceFlag==1)&& + (ir_y>0)&& + (data.ping[B_PING]>60)&& + (data.ping[B_PING]<225)&& + (sys.BackHomeFlag==0) + ){ + ir_pow_y=0; + } + ///dribbler + if((sys.DriBlind==0)&&(data.irNotice==IR_CLOSER)&&(/*sys.BallHoldFlag==1*/data.ball==1)&&((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))){ + + if((1/*data.ping[L_PING]<60*/)&&(data.ping[R_PING]>90)){ + //ir_x = 1; + } + else{ + if(data.lnRawOrderLog1[0]==B_SPOT){ + //ir_x = 1; + } + } + if((1/*data.ping[R_PING]<60*/)&&(data.ping[L_PING]>90)){ + //ir_x = -1; + } + else{ + if(data.lnRawOrderLog1[0]==A_SPOT){ + //ir_x = -1; + } + } + if((data.ping[F_PING]<50)&&(data.ping[B_PING]>100)){ + //ir_y = -1; + } + if( + ((data.ping[L_PING]<55)&&(data.ping[R_PING]<55))|| + ((data.ping[L_PING]>55)&&(data.ping[R_PING]>55)) + ){ + //DriveSolenoid(); + } + //x + if((abs(data.ping[L_PING]-data.ping[R_PING])>40)&&(data.lnRawOrderLog1[0]==A_SPOT)){ + ir_x = -1; + } + else if((abs(data.ping[L_PING]-data.ping[R_PING])>40)&&(data.lnRawOrderLog1[0]==B_SPOT)){ + ir_x = 1; + } + else if((abs(data.ping[L_PING]-data.ping[R_PING])>10)&&((data.ping[L_PING]+data.ping[R_PING])>80)){ + if(data.ping[L_PING]>data.ping[R_PING]){ + ir_x = -1; + } + else{ + ir_x = 1; + } + } + else{ + if((abs(data.ping[L_PING]-data.ping[R_PING])>10)&&(1)){ + if(data.ping[L_PING]>data.ping[R_PING]){ + ir_x = -1; + } + else{ + ir_x = 1; + } + } + else{ + ir_x = 0; + } + + //ir_x = 0; + DriveSolenoid(); + } + //y + if((data.ping[F_PING]<45)&&(abs(data.ping[L_PING]-data.ping[R_PING])>50)){ + //ir_y = 0.75; + } + //kick + if((abs(data.ping[L_PING]-data.ping[R_PING])<30)&&(1)){ + DriveSolenoid(); + } + } + ////Lineセンサーの値を評価しモーターの出力補正値を演算 + if(sys.LineBlind==1){ + + LineSlowPower[X_LINE] = 1.0; + LineSlowPower[Y_LINE] = 1.0; + + LineReturnPower[X_LINE] = 0.0; + LineReturnPower[Y_LINE] = 0.0; + + data.lnStop[X_LINE] = 1; + data.lnStop[Y_LINE] = 1; + + data.FieldSpot = LINE_INSIDE; + } + else{ + /* + LineJudgeReset(ir_x, ir_y, &LineSlowPower[X_LINE], &LineSlowPower[Y_LINE]); + LineJudgeSlow(ir_x, ir_y, &LineSlowPower[X_LINE], &LineSlowPower[Y_LINE]); + LineJudgeReturn(ir_x*LineSlowPower[X_LINE], ir_y*LineSlowPower[Y_LINE], &LineReturnPower[X_LINE], &LineReturnPower[Y_LINE]); + */ + LineJudgeReset3(ir_x, ir_y, &LineSlowPower[X_LINE], &LineSlowPower[Y_LINE]); + LineJudgeSlow2(ir_x, ir_y, &LineSlowPower[X_LINE], &LineSlowPower[Y_LINE], &ir_pow_x, &ir_pow_y); + LineJudgeReturn2(ir_x*LineSlowPower[X_LINE], ir_y*LineSlowPower[Y_LINE], &LineReturnPower[X_LINE], &LineReturnPower[Y_LINE]); + } + ////LEDデバッグ + //if(data.FieldSpot==LINE_OUTSIDE) LED = 0x9; + //if(data.FieldSpot==LINE_INSIDE) LED = 0x6; + //LED = ((data.lnRawMemory[0]!=0)<<2) | ((data.lnRawMemory[1]!=0)<<1) | ((data.lnRawMemory[2]!=0)<<0); + //LED = ((data.lnRawOrder[0]!=LINE_EMPTY)<<2) | ((data.lnRawOrder[1]!=LINE_EMPTY)<<1) | ((data.lnRawOrder[2]!=LINE_EMPTY)<<0); + //LED = ((data.lnOrder[0]!=LINE_EMPTY)<<2) | ((data.lnOrder[1]!=LINE_EMPTY)<<1) | ((data.lnOrder[2]!=LINE_EMPTY)<<0); + + //LED = sys.BallHoldFlag*15; + if(sys.BallHoldFlag==0) LED=15; + else LED=10; + /* + if((abs(data.ping[L_PING]-data.ping[R_PING])>10)&&((data.ping[L_PING]+data.ping[R_PING])>80)){ + if(data.ping[L_PING]>data.ping[R_PING]){ + LED=9; + } + else{ + LED=6; + } + } + else{ + LED=15; + }*/ + + //if(data.ball==1) LED=15; + //else LED=10; + + //if(data.lnRepeat>=1) LED=15; + //else LED=10; + + //LED = 0xFF*(data.ping[B_PING]<30); + + //LED = ((data.lnOrder[0]!=LINE_EMPTY)<<2) | ((data.lnOrder[1]!=LINE_EMPTY)<<1) | ((data.lnOrder[2]!=LINE_EMPTY)<<0); + + //else LED = 0xA; + //LED = LineHold; + + + ////最終的なモーターの出力を演算 + vx = (ir_pow_x*ir_x)*data.lnStop[X_LINE]*(data.lnStay[X_LINE])*LineSlowPower[X_LINE]*(sys.TurnStopFlag==0) + LineReturnPower[X_LINE]; + vy = (ir_pow_y*ir_y)*data.lnStop[Y_LINE]*(data.lnStay[Y_LINE])*LineSlowPower[Y_LINE]*(sys.TurnStopFlag==0) + LineReturnPower[Y_LINE]; + vs = cmps_set.OutputPID; + move( + vx, + vy, + vs + ); + //モーターに信号を出力 + if(sys.MotorFlag==1){tx_motor();sys.MotorFlag=0;} + + if(sys.stopflag==1){ + //コマンドモードに戻る際の処理 + } + return; +} + +void modeAttack5(void){ + ////初期値を決める等 + if(sys.KickOffFlag==1){ + ///Blindシリーズ.1を代入であらゆるセンサーなどの値を反映させないようにする. + sys.IrBlind=0; + sys.LineBlind=0; + sys.PingBlind=0; + + sys.HomeBlind=1; + sys.DriBlind=0; + sys.DriMotorBlind=0; + sys.TurnAtkBlind=1; + sys.TurnDriBlind=1; + sys.TurnHoldBlind=1; + sys.KickBlind=0; + //defence + sys.DefenceFlag=0; + //初期値設定の終了 + //sys.KickOffFlag=0; + } + modeAttack4(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy/strategy.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,7 @@ +#ifndef _STRATEGY_H_ +#define _STRATEGY_H_ +//Atk +void modeAttack4(void); +void modeAttack5(void); + +#endif //_STRATEGY_H_ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy/strategy2.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,4 @@ +#include "mbed.h" +#include "extern.h" + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy/strategy2.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,5 @@ +#ifndef _STRATEGY2_H_ +#define _STRATEGY2_H_ +//Debug + +#endif //_STRATEGY2_H_ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy_parts/input.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,439 @@ +#include "mbed.h" +#include "extern.h" + +//line +void ReadLine(void){ + static uint8_t line_buf[3]={0,0,0}; + wait_us(100); + if(Line[0].read()==1) line_buf[0] = 100; + if(line_buf[0]==0) data.lnFlag[0]=0; + else data.lnFlag[0]=1; + if(line_buf[0]>0) line_buf[0]--; + + if(Line[1].read()==1) line_buf[1] = 100; + if(line_buf[1]==0) data.lnFlag[1]=0; + else data.lnFlag[1]=1; + if(line_buf[1]>0) line_buf[1]--; + + if(Line[2].read()==1) line_buf[2] = 100; + if(line_buf[2]==0) data.lnFlag[2]=0; + else data.lnFlag[2]=1; + if(line_buf[2]>0) line_buf[2]--; +} +//line_hold +void LineRanking_A(void){ + if(data.lnOrder[0]==LINE_EMPTY){ + data.lnOrder[0]=A_SPOT; + } + else if(data.lnOrder[1]==LINE_EMPTY){ + data.lnOrder[1]=A_SPOT; + } + else if(data.lnOrder[2]==LINE_EMPTY){ + data.lnOrder[2]=A_SPOT; + } +} +void LineRanking_B(void){ + if(data.lnOrder[0]==LINE_EMPTY){ + data.lnOrder[0]=B_SPOT; + } + else if(data.lnOrder[1]==LINE_EMPTY){ + data.lnOrder[1]=B_SPOT; + } + else if(data.lnOrder[2]==LINE_EMPTY){ + data.lnOrder[2]=B_SPOT; + } +} +void LineRanking_C(void){ + if(data.lnOrder[0]==LINE_EMPTY){ + data.lnOrder[0]=C_SPOT; + } + else if(data.lnOrder[1]==LINE_EMPTY){ + data.lnOrder[1]=C_SPOT; + } + else if(data.lnOrder[2]==LINE_EMPTY){ + data.lnOrder[2]=C_SPOT; + } +} +void LineRankClear(void){ + data.lnOrder[0]=LINE_EMPTY; + data.lnOrder[1]=LINE_EMPTY; + data.lnOrder[2]=LINE_EMPTY; + + if((0<LineHold)&&(LineHold<7)){ + if((LineHolding[A_SPOT].read()==0)&&(LineHolding[B_SPOT].read()==0)&&(LineHolding[C_SPOT].read()==1)){ + data.lnOrder[0] = C_SPOT; + data.lnOrder[1] = LINE_EMPTY; + } + else if((LineHolding[A_SPOT].read()==0)&&(LineHolding[B_SPOT].read()==1)&&(LineHolding[C_SPOT].read()==0)){ + data.lnOrder[0] = B_SPOT; + data.lnOrder[1] = LINE_EMPTY; + } + else if((LineHolding[A_SPOT].read()==0)&&(LineHolding[B_SPOT].read()==1)&&(LineHolding[C_SPOT].read()==1)){ + data.lnOrder[0] = C_SPOT; + data.lnOrder[1] = B_SPOT; + } + else if((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==0)&&(LineHolding[C_SPOT].read()==0)){ + data.lnOrder[0] = A_SPOT; + data.lnOrder[1] = LINE_EMPTY; + } + else if((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==0)&&(LineHolding[C_SPOT].read()==1)){ + data.lnOrder[0] = C_SPOT; + data.lnOrder[1] = A_SPOT; + } + else if((LineHolding[A_SPOT].read()==1)&&(LineHolding[B_SPOT].read()==1)&&(LineHolding[C_SPOT].read()==0)){ + data.lnOrder[0] = A_SPOT; + data.lnOrder[1] = B_SPOT; + } + } +} +//line raw +/* +void LineRawCall_A(void){data.lnRawMemory[A_SPOT]=1;Line_timeout[A_SPOT].attach(&LineRawClear_A, LINE_DELAY);} +void LineRawCall_B(void){data.lnRawMemory[B_SPOT]=1;Line_timeout[B_SPOT].attach(&LineRawClear_B, LINE_DELAY);} +void LineRawCall_C(void){data.lnRawMemory[C_SPOT]=1;Line_timeout[C_SPOT].attach(&LineRawClear_C, LINE_DELAY);} +void LineRawClear_A(void){if(Line[A_SPOT].read()==1){LineRawCall_A();}else{data.lnRawMemory[A_SPOT]=0;}} +void LineRawClear_B(void){if(Line[B_SPOT].read()==1){LineRawCall_B();}else{data.lnRawMemory[B_SPOT]=0;}} +void LineRawClear_C(void){if(Line[C_SPOT].read()==1){LineRawCall_C();}else{data.lnRawMemory[C_SPOT]=0;}} +*/ +void LineRawCall_ALL(void){ + if(data.lnRawReturn==1){ + if( + (data.lnRawOrder[0]==A_SPOT)|| + (data.lnRawOrder[0]==B_SPOT)|| + (data.lnRawOrder[0]==C_SPOT) + ){ + if( + ( + (data.lnRawOrder[0]!=LINE_EMPTY)&& + (data.lnRawOrder[1]!=LINE_EMPTY)&& + ((Line[data.lnRawOrder[0]].read()==1)||(data.lnRawOrder[0]==data.lnRawLastRise)) + )|| + (data.lnRawOrder[0]==C_SPOT) + ){ + Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_3); + } + else{ + Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_2); + } + } + else{ + Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_2); + } + } + else{ + Line_reset.attach(&LineRawClear_ALL, LINE_DELAY_1); + } +} +void LineRawClear_ALL(void){ + if(LineRaw>0){ + LineRawCall_ALL(); + } + else if(LineRaw==0){ + LineRawRankClear(); + } +} +void LineRawRankClear(void){ + + //JSO2 + LineLiberate(); + + data.lnRawOrderLog2[0]=data.lnRawOrderLog1[0]; + data.lnRawOrderLog2[1]=data.lnRawOrderLog1[1]; + data.lnRawOrderLog2[2]=data.lnRawOrderLog1[2]; + + data.lnRawOrderLog1[0]=data.lnRawOrder[0]; + data.lnRawOrderLog1[1]=data.lnRawOrder[1]; + data.lnRawOrderLog1[2]=data.lnRawOrder[2]; + + data.lnRawOrder[0]=LINE_EMPTY; + data.lnRawOrder[1]=LINE_EMPTY; + data.lnRawOrder[2]=LINE_EMPTY; + + if( + (data.lnRawOrderLog2[0]==data.lnRawOrderLog1[0])&& + //(data.lnRawOrderLog2[1]==data.lnRawOrderLog1[1])&& + //(data.lnRawOrderLog2[2]==data.lnRawOrderLog1[2]) + (data.lnRawOrderLog2[0]!=LINE_EMPTY) + //(data.lnRawOrderLog2[1]!=LINE_EMPTY) + ){ + if(data.lnRepeat>100) data.lnRepeat=100; + data.lnRepeat++; + + data.irLastNotice = data.irNotice; + data.irLastPosition = data.irPosition; + } + else{ + data.lnRepeat=0; + } + + + data.lnRawRise[A_SPOT]=0; + data.lnRawRise[B_SPOT]=0; + data.lnRawRise[C_SPOT]=0; +} +void LineRawLogReset(void){ + /* + if( + (!( + (data.irPosition==data.irLastPosition)|| + (data.irPosition==(data.irLastPosition+1))|| + (data.irPosition==(data.irLastPosition-1))|| + (data.irPosition==(data.irLastPosition+11))|| + (data.irPosition==(data.irLastPosition-11)) + ))&& + ( + (data.irNotice==IR_CLOSE)|| + (data.irNotice==IR_CLOSER) + )&& + ( + (data.irLastPosition>7) + ) + ){ + data.lnRawOrderLog2[0]=LINE_EMPTY; + data.lnRawOrderLog2[1]=LINE_EMPTY; + data.lnRawOrderLog2[2]=LINE_EMPTY; + } + else{ + data.lnRawOrderLog2[0]=LINE_EMPTY; + data.lnRawOrderLog2[1]=LINE_EMPTY; + data.lnRawOrderLog2[2]=LINE_EMPTY; + + data.lnRawOrderLog1[0]=LINE_EMPTY; + data.lnRawOrderLog1[1]=LINE_EMPTY; + data.lnRawOrderLog1[2]=LINE_EMPTY; + }*/ + if(data.irNotice==IR_NONE){ + data.lnRawOrderLog2[0]=LINE_EMPTY; + data.lnRawOrderLog2[1]=LINE_EMPTY; + data.lnRawOrderLog2[2]=LINE_EMPTY; + + data.lnRawOrderLog1[0]=LINE_EMPTY; + data.lnRawOrderLog1[1]=LINE_EMPTY; + data.lnRawOrderLog1[2]=LINE_EMPTY; + } + else{ + data.lnRawOrderLog2[0]=LINE_EMPTY; + data.lnRawOrderLog2[1]=LINE_EMPTY; + data.lnRawOrderLog2[2]=LINE_EMPTY; + } + +} +void LineRawRanking_A(void){ + data.lnRawLastRise=A_SPOT; + LineRawCall_ALL(); + if(data.lnRawRise[A_SPOT]==1) return; + + if((data.lnRawOrder[0]==LINE_EMPTY)||(data.lnRawOrder[0]==A_SPOT)){ + data.lnRawOrder[0]=A_SPOT; + if((sys.DefenceFlag==1)&&(data.lnRawOrder[1]==LINE_EMPTY)){ + data.lnRawOrder[1]=C_SPOT; + } + } + else if((data.lnRawOrder[1]==LINE_EMPTY)||(data.lnRawOrder[1]==A_SPOT)){ + data.lnRawOrder[1]=A_SPOT; + } + else if((data.lnRawOrder[2]==LINE_EMPTY)||(data.lnRawOrder[2]==A_SPOT)){ + data.lnRawOrder[2]=A_SPOT; + } + data.lnRawRise[A_SPOT]=1; +} +void LineRawRanking_B(void){ + data.lnRawLastRise=B_SPOT; + LineRawCall_ALL(); + if(data.lnRawRise[B_SPOT]==1) return; + + if((data.lnRawOrder[0]==LINE_EMPTY)||(data.lnRawOrder[0]==B_SPOT)){ + data.lnRawOrder[0]=B_SPOT; + if((sys.DefenceFlag==1)&&(data.lnRawOrder[1]==LINE_EMPTY)){ + data.lnRawOrder[1]=C_SPOT; + } + } + else if((data.lnRawOrder[1]==LINE_EMPTY)||(data.lnRawOrder[1]==B_SPOT)){ + data.lnRawOrder[1]=B_SPOT; + } + else if((data.lnRawOrder[2]==LINE_EMPTY)||(data.lnRawOrder[2]==B_SPOT)){ + data.lnRawOrder[2]=B_SPOT; + } + data.lnRawRise[B_SPOT]=1; +} +void LineRawRanking_C(void){ + data.lnRawLastRise=C_SPOT; + LineRawCall_ALL(); + if(data.lnRawRise[C_SPOT]==1) return; + + if((data.lnRawOrder[0]==LINE_EMPTY)||(data.lnRawOrder[0]==C_SPOT)){ + data.lnRawOrder[0]=C_SPOT; + } + else if((data.lnRawOrder[1]==LINE_EMPTY)||(data.lnRawOrder[1]==C_SPOT)){ + data.lnRawOrder[1]=C_SPOT; + } + else if((data.lnRawOrder[2]==LINE_EMPTY)||(data.lnRawOrder[2]==C_SPOT)){ + data.lnRawOrder[2]=C_SPOT; + } + data.lnRawRise[C_SPOT]=1; +} +//ball +uint8_t ReadBall(void){//1or0 + return (BallChecker.read()==0); + //return (BallCheckerA.read_u16()<40000); +} +void JudgeBallHolding(void){ + //ホールド判定 + if(sys.DriBlind==0){ + if( + ((data.ball==0)&&(sys.BallHoldFlag==0))|| + ((data.ball==1)&&(sys.BallHoldFlag==1)) + ){ + sys.BallHoldJudgeFlag=0; + Ball_judge.detach(); + } + if( + ((data.ball==0)&&(sys.BallHoldFlag==1))|| + ((data.ball==1)&&(sys.BallHoldFlag==0)) + ){ + if(sys.BallHoldJudgeFlag==0){ + sys.BallHoldJudgeFlag=1; + Ball_judge.attach(&JudgeBallHold, .25); + } + } + /* + if( + !( + (data.irNotice==IR_CLOSER)&& + ((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12)) + ) + ){ + sys.BallHoldJudgeFlag=0; + sys.BallHoldFlag=0; + Ball_judge.detach(); + } + */ + } + else{ + sys.BallHoldFlag=0; + } +} +//readsensor +void ReadCmps(void){ + cmps_set.cmps = hmc.sample()/10.0; +} +void ReadPing(void){ + uint16_t spi_data; + //Ultra Sonic Wave + spi_ss[1]=0; + wait_us(200); + + spi_data = spi.write(0xABCD); + + wait_us(200); + spi_ss[1]=1; + + data.ping[0] = (spi_data&0x00FF)>>0; + data.ping[1] = (spi_data&0xFF00)>>8; +} +void ReadPing2(void){ + uint16_t spi_data; + //Ultra Sonic Wave + spi_ss[0]=0; + wait_us(200); + + spi_data = spi.write(0xABCD); + + wait_us(200); + spi_ss[0]=1; + + data.ping[2] = (spi_data&0x00FF)>>0; + data.ping[3] = (spi_data&0xFF00)>>8; +} +void ReadIr(void){ + uint16_t spi_data; + + //Ir + spi_ss[3]=0; + wait_us(200); + + spi_data = spi.write(0xABCD); + + wait_us(200); + spi_ss[3]=1; + /* + //key/phaseL/phaseS/long/short/ + // 2/ 3/ 3/ 4/ 4/ + data.irKey = (spi_data&0xC000)>>14;//1100000000000000 + data.irValPhase[IR_LONG] = (spi_data&0x3800)>>11;//0011100000000000 + data.irValPhase[IR_SHORT] = (spi_data&0x0700)>>8;///0000011100000000 + data.irSpot[IR_LONG] = (spi_data&0x00F0)>>4;///0000000011110000 + data.irSpot[IR_SHORT] = (spi_data&0x000F)>>0;///0000000000001111 + */ + + //key/phaseL/phaseS/diffL/position/ + // 2/ 3/ 3/ 3/ 5/ + data.irKey = (spi_data&0xC000)>>14;//1100000000000000 + data.irValPhase[IR_LONG] = (spi_data&0x3800)>>11;//0011100000000000 + data.irValPhase[IR_SHORT] = (spi_data&0x0700)>>8;///0000011100000000 + data.irDif[IR_LONG] = (spi_data&0x00E0)>>5;///0000000011100000 + data.irPosition = (spi_data&0x001F)>>0;///0000000000011111 + + if(data.irKey!=0x2) data.irNotice=IR_NONE; + + + if(data.irValPhase[IR_SHORT]>=DIS_7){ + if(data.irValPhase[IR_LONG]>=DIS_7){ + data.irNotice=IR_NONE; + } + else{ + if(data.irDif[IR_LONG]<=DIS_0){ + data.irNotice=IR_NONE; + } + else{ + data.irNotice=IR_FAR; + } + } + } + else{ + if(data.irValPhase[IR_SHORT]>=DIS_3){ + data.irNotice = IR_CLOSE; + } + else{ + data.irNotice = IR_CLOSER; + } + } + + /*if(data.irValPhase[IR_LONG]>=DIS_7){ + data.irNotice=IR_NONE; + } + else{ + if(data.irValPhase[IR_SHORT]>=DIS_7){ + data.irNotice=IR_FAR; + } + else{ + if(data.irValPhase[IR_LONG]>=DIS_4){ + data.irNotice = IR_CLOSE; + } + else{ + data.irNotice = IR_CLOSER; + } + } + }*/ + /* + if(data.irNotice == IR_NONE) data.irPosition=11; + if(data.irNotice == IR_FAR) data.irPosition=data.irSpot[IR_LONG]-1; + if(data.irNotice == IR_CLOSE) data.irPosition=data.irSpot[IR_SHORT]+7; + if(data.irNotice == IR_CLOSER) data.irPosition=data.irSpot[IR_SHORT]+7; + */ + //LED[1] = LED[0]; + //LED[0] = !LED[0]; +} +//info +void ValidInfo(void){ + //LED=0xA; + if(sys.InfoFlag==0){ + sys.InfoFlag=1; + } +} +void ReadInfo(void){ + ReadIr(); + PidUpdate(); + ReadPing(); + ReadPing2(); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy_parts/input.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,39 @@ +#ifndef _INPUT_H_ +#define _INPUT_H_ + +//line +void ReadLine(void); +//line_hold +void LineRanking_A(void); +void LineRanking_B(void); +void LineRanking_C(void); +void LineRankClear(void); +//line raw +void LineRawCall_A(void); +void LineRawCall_B(void); +void LineRawCall_C(void); +void LineRawClear_A(void); +void LineRawClear_B(void); +void LineRawClear_C(void); + +void LineRawCall_ALL(void); +void LineRawClear_ALL(void); +void LineRawRankClear(void); +void LineRawLogReset(void); +void LineRawRanking_A(void); +void LineRawRanking_B(void); +void LineRawRanking_C(void); +//ball +uint8_t ReadBall(void); +void JudgeBallHolding(void); +//other +void ReadCmps(void); +void ReadPing(void); +void ReadPing2(void); +void ReadIr(void); +//info +void ValidInfo(void); +void ReadInfo(void); + +#endif /*_INPUT_H_*/ +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy_parts/output.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,159 @@ +#include "mbed.h" +#include "extern.h" + +//pid&cmps +void PidUpdate(void) +{ + cmps_set.cmps = hmc.sample()/10.0; + cmps_set.InputPID = + fmod( + ( + cmps_set.cmps+ + (cmps_set.CmpsDiff + -cmps_set.FrontDeg + -cmps_set.AtkDeg*(sys.TurnAtkBlind==0) + -cmps_set.HoldDeg*(sys.TurnHoldBlind==0) + -cmps_set.GoalDeg*(sys.TurnDriBlind==0) + )+ + 7200.0 + ), + 360.0 + );//0<cmps_set.cmps<359.0 + pid.setProcessValue(cmps_set.InputPID); + cmps_set.OutputPID = -pid.compute(); + /*if((abs(cmps_set.OutputPID)<PID_OUT_MIN)&&(cmps_set.OutputPID!=0)){ + if(cmps_set.OutputPID>0) cmps_set.OutputPID=PID_OUT_MIN; + else cmps_set.OutputPID=-PID_OUT_MIN; + }*/ +} +void HmcReset(void){ + hmc_reset=HMC_RST; + wait_us(100); + hmc_reset=HMC_RUN; +} +void TurnAttack(void){ + cmps_set.AtkDeg = 30; +} +void DriveTurn(void){ + if(sys.TurnAtkBlind==1) return; + if(sys.TurnStopFlag==1) return; + + if( + //(data.ping[L_PING]<data.ping[R_PING])|| + ((data.lnRawOrderLog1[0]==B_SPOT)&&(data.lnRawOrderLog1[1]!=A_SPOT)&&(data.lnRawOrder[0]==LINE_EMPTY)) + ){ + cmps_set.AtkDeg = 150; + if((sys.TurnDriBlind==0)&&(cmps_set.GoalDeg>0)){ + cmps_set.AtkDeg = -cmps_set.GoalDeg*2; + } + } + else if( + //(data.ping[L_PING]>data.ping[R_PING])|| + ((data.lnRawOrderLog1[0]==A_SPOT)&&(data.lnRawOrderLog1[1]!=B_SPOT)&&(data.lnRawOrder[0]==LINE_EMPTY)) + ){ + cmps_set.AtkDeg = -150; + if((sys.TurnDriBlind==0)&&(cmps_set.GoalDeg<0)){ + cmps_set.AtkDeg = cmps_set.GoalDeg*2; + } + } + else{ + cmps_set.AtkDeg = 0; + } + if((sys.TurnDriBlind==0)&&(cmps_set.GoalDeg!=0)){ + Turn_timeout.attach(&TurnSignal, .25); + Turn_stop.attach(&ValidTurn, .5); + } + else{ + Turn_timeout.attach(&TurnSignal, .25); + Turn_stop.attach(&ValidTurn, .5); + } + sys.TurnStopFlag=1; + +} +void TurnSignal(void){ + cmps_set.AtkDeg = 0; +} +void ValidTurn(void){ + sys.TurnStopFlag=0; +} +/*void ValidPidUpdate(void){ + if(sys.PidFlag==0){ + sys.PidFlag=1; + } +}*/ +void FaceToFront(void){ + cmps_set.AtkDeg=0; +} +//motor +void ValidTx_motor(void){ + if(sys.MotorFlag==0){ + sys.MotorFlag=1; + } +} +void tx_motor(){//モーターへの送信 + array2(MD_1CH*speed[1],MD_2CH*speed[0],MD_3CH*speed[2],MD_4CH*speed[3]);//右後左ド + //array2((1)*speed[1],(1)*speed[0],(-1)*speed[2],(1)*speed[3]);//右後左ドgreen + //array2((1)*speed[1],(1)*speed[0],(1)*speed[2],(-1)*speed[3]);//右後左ドred + motor.printf("%s",StringFIN.c_str()); +} +void move(int vx, int vy, int vs){//三輪オムニの移動(基本の形) + uint8_t i; + double pwm[4] = {0}; + + pwm[0] = (double)((vx) + vs); + pwm[1] = (double)((-0.5 * vx) + ((sqrt(3.0) / 2.0) * vy) + vs); + pwm[2] = (double)((-0.5 * vx) + ((-sqrt(3.0) / 2.0) * vy) + vs); + pwm[3] = (sys.dri_pow)*(sys.DribbleFlag)*(sys.DriMotorBlind==0); + + for(i = 0; i < 4; i++){ + if(pwm[i] > 100){ + pwm[i] = 100; + } else if(pwm[i] < -100){ + pwm[i] = -100; + } + speed[i] = pwm[i]; + } +} +//solenoid +void DriveSolenoid(void){ + if(sys.KickBlind==1) return; + if(sys.KickStopFlag==1) return; + + kicker=1; + sys.KickStopFlag=1; + Solenoid_timeout.attach(&SolenoidSignal, .5); + Kick_stop.attach(&ValidSolenoid, 2.0); +} +void DriveSolenoidJudge(void){ + if(sys.DriBlind==0) return; + if((data.irNotice==IR_CLOSER)&&((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))){ + DriveTurn(); + DriveSolenoid(); + } +} +void SolenoidSignal(void){ + kicker=0; +} +void ValidSolenoid(void){ + sys.KickStopFlag=0; +} +//ball +void JudgeBallHold(void){ + if(data.ball==1){ + sys.BallHoldFlag=1; + } + else if(data.ball==0){ + sys.BallHoldFlag=0; + } + sys.BallHoldJudgeFlag=0; +} +//line +void LineLiberate(void){ + LineKeeper = LINE_FREE; + wait_us(10); + LineKeeper = LINE_FIX; +} +//math +uint8_t GetBit(uint8_t n, uint8_t bit){ + return (n>>(bit-1))%2; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_processing/strategy_parts/output.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,30 @@ +#ifndef _OUTPUT_H_ +#define _OUTPUT_H_ + +//pid&cmps +void PidUpdate(void); +void HmcReset(void); +void TurnAttack(void); +void DriveTurn(void); +void TurnSignal(void); +void ValidTurn(void); + +void ValidPidUpdate(void); +void FaceToFront(void); +//motor +void ValidTx_motor(void); +void tx_motor(); +void move(int vx, int vy, int vs); +//solenoid +void DriveSolenoid(void); +void DriveSolenoidJudge(void); +void SolenoidSignal(void); +void ValidSolenoid(void); +//ball +void JudgeBallHold(void); +//line +void LineLiberate(void); +//math +uint8_t GetBit(uint8_t n, uint8_t bit); + +#endif /*_OUTPUT_H_*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/252557024ec3 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/minilib/MathTable.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,729 @@ +#ifndef _MATH_TABLE_H_ +#define _MATH_TABLE_H_ +/* +const double SinTable[3600]={ +0.00000 , 0.00175 , 0.00349 , 0.00524 , 0.00698 , 0.00873 , 0.01047 , 0.01222 , 0.01396 , 0.01571 , +0.01745 , 0.01920 , 0.02094 , 0.02269 , 0.02443 , 0.02618 , 0.02792 , 0.02967 , 0.03141 , 0.03316 , +0.03490 , 0.03664 , 0.03839 , 0.04013 , 0.04188 , 0.04362 , 0.04536 , 0.04711 , 0.04885 , 0.05059 , +0.05234 , 0.05408 , 0.05582 , 0.05756 , 0.05931 , 0.06105 , 0.06279 , 0.06453 , 0.06627 , 0.06802 , +0.06976 , 0.07150 , 0.07324 , 0.07498 , 0.07672 , 0.07846 , 0.08020 , 0.08194 , 0.08368 , 0.08542 , +0.08716 , 0.08889 , 0.09063 , 0.09237 , 0.09411 , 0.09585 , 0.09758 , 0.09932 , 0.10106 , 0.10279 , +0.10453 , 0.10626 , 0.10800 , 0.10973 , 0.11147 , 0.11320 , 0.11494 , 0.11667 , 0.11840 , 0.12014 , +0.12187 , 0.12360 , 0.12533 , 0.12706 , 0.12880 , 0.13053 , 0.13226 , 0.13399 , 0.13572 , 0.13744 , +0.13917 , 0.14090 , 0.14263 , 0.14436 , 0.14608 , 0.14781 , 0.14954 , 0.15126 , 0.15299 , 0.15471 , +0.15643 , 0.15816 , 0.15988 , 0.16160 , 0.16333 , 0.16505 , 0.16677 , 0.16849 , 0.17021 , 0.17193 , +0.17365 , 0.17537 , 0.17708 , 0.17880 , 0.18052 , 0.18224 , 0.18395 , 0.18567 , 0.18738 , 0.18910 , +0.19081 , 0.19252 , 0.19423 , 0.19595 , 0.19766 , 0.19937 , 0.20108 , 0.20279 , 0.20450 , 0.20620 , +0.20791 , 0.20962 , 0.21132 , 0.21303 , 0.21474 , 0.21644 , 0.21814 , 0.21985 , 0.22155 , 0.22325 , +0.22495 , 0.22665 , 0.22835 , 0.23005 , 0.23175 , 0.23345 , 0.23514 , 0.23684 , 0.23853 , 0.24023 , +0.24192 , 0.24362 , 0.24531 , 0.24700 , 0.24869 , 0.25038 , 0.25207 , 0.25376 , 0.25545 , 0.25713 , +0.25882 , 0.26050 , 0.26219 , 0.26387 , 0.26556 , 0.26724 , 0.26892 , 0.27060 , 0.27228 , 0.27396 , +0.27564 , 0.27731 , 0.27899 , 0.28067 , 0.28234 , 0.28402 , 0.28569 , 0.28736 , 0.28903 , 0.29070 , +0.29237 , 0.29404 , 0.29571 , 0.29737 , 0.29904 , 0.30071 , 0.30237 , 0.30403 , 0.30570 , 0.30736 , +0.30902 , 0.31068 , 0.31233 , 0.31399 , 0.31565 , 0.31730 , 0.31896 , 0.32061 , 0.32227 , 0.32392 , +0.32557 , 0.32722 , 0.32887 , 0.33051 , 0.33216 , 0.33381 , 0.33545 , 0.33710 , 0.33874 , 0.34038 , +0.34202 , 0.34366 , 0.34530 , 0.34694 , 0.34857 , 0.35021 , 0.35184 , 0.35347 , 0.35511 , 0.35674 , +0.35837 , 0.36000 , 0.36162 , 0.36325 , 0.36488 , 0.36650 , 0.36812 , 0.36975 , 0.37137 , 0.37299 , +0.37461 , 0.37622 , 0.37784 , 0.37946 , 0.38107 , 0.38268 , 0.38430 , 0.38591 , 0.38752 , 0.38912 , +0.39073 , 0.39234 , 0.39394 , 0.39555 , 0.39715 , 0.39875 , 0.40035 , 0.40195 , 0.40355 , 0.40514 , +0.40674 , 0.40833 , 0.40992 , 0.41151 , 0.41310 , 0.41469 , 0.41628 , 0.41787 , 0.41945 , 0.42104 , +0.42262 , 0.42420 , 0.42578 , 0.42736 , 0.42894 , 0.43051 , 0.43209 , 0.43366 , 0.43523 , 0.43680 , +0.43837 , 0.43994 , 0.44151 , 0.44307 , 0.44464 , 0.44620 , 0.44776 , 0.44932 , 0.45088 , 0.45243 , +0.45399 , 0.45554 , 0.45710 , 0.45865 , 0.46020 , 0.46175 , 0.46330 , 0.46484 , 0.46639 , 0.46793 , +0.46947 , 0.47101 , 0.47255 , 0.47409 , 0.47562 , 0.47716 , 0.47869 , 0.48022 , 0.48175 , 0.48328 , +0.48481 , 0.48634 , 0.48786 , 0.48938 , 0.49090 , 0.49242 , 0.49394 , 0.49546 , 0.49697 , 0.49849 , +0.50000 , 0.50151 , 0.50302 , 0.50453 , 0.50603 , 0.50754 , 0.50904 , 0.51054 , 0.51204 , 0.51354 , +0.51504 , 0.51653 , 0.51803 , 0.51952 , 0.52101 , 0.52250 , 0.52399 , 0.52547 , 0.52696 , 0.52844 , +0.52992 , 0.53140 , 0.53288 , 0.53435 , 0.53583 , 0.53730 , 0.53877 , 0.54024 , 0.54171 , 0.54317 , +0.54464 , 0.54610 , 0.54756 , 0.54902 , 0.55048 , 0.55194 , 0.55339 , 0.55484 , 0.55630 , 0.55775 , +0.55919 , 0.56064 , 0.56208 , 0.56353 , 0.56497 , 0.56641 , 0.56784 , 0.56928 , 0.57071 , 0.57215 , +0.57358 , 0.57501 , 0.57643 , 0.57786 , 0.57928 , 0.58070 , 0.58212 , 0.58354 , 0.58496 , 0.58637 , +0.58779 , 0.58920 , 0.59061 , 0.59201 , 0.59342 , 0.59482 , 0.59622 , 0.59763 , 0.59902 , 0.60042 , +0.60182 , 0.60321 , 0.60460 , 0.60599 , 0.60738 , 0.60876 , 0.61015 , 0.61153 , 0.61291 , 0.61429 , +0.61566 , 0.61704 , 0.61841 , 0.61978 , 0.62115 , 0.62251 , 0.62388 , 0.62524 , 0.62660 , 0.62796 , +0.62932 , 0.63068 , 0.63203 , 0.63338 , 0.63473 , 0.63608 , 0.63742 , 0.63877 , 0.64011 , 0.64145 , +0.64279 , 0.64412 , 0.64546 , 0.64679 , 0.64812 , 0.64945 , 0.65077 , 0.65210 , 0.65342 , 0.65474 , +0.65606 , 0.65738 , 0.65869 , 0.66000 , 0.66131 , 0.66262 , 0.66393 , 0.66523 , 0.66653 , 0.66783 , +0.66913 , 0.67043 , 0.67172 , 0.67301 , 0.67430 , 0.67559 , 0.67688 , 0.67816 , 0.67944 , 0.68072 , +0.68200 , 0.68327 , 0.68455 , 0.68582 , 0.68709 , 0.68835 , 0.68962 , 0.69088 , 0.69214 , 0.69340 , +0.69466 , 0.69591 , 0.69717 , 0.69842 , 0.69966 , 0.70091 , 0.70215 , 0.70339 , 0.70463 , 0.70587 , +0.70711 , 0.70834 , 0.70957 , 0.71080 , 0.71203 , 0.71325 , 0.71447 , 0.71569 , 0.71691 , 0.71813 , +0.71934 , 0.72055 , 0.72176 , 0.72297 , 0.72417 , 0.72537 , 0.72657 , 0.72777 , 0.72897 , 0.73016 , +0.73135 , 0.73254 , 0.73373 , 0.73491 , 0.73610 , 0.73728 , 0.73846 , 0.73963 , 0.74080 , 0.74198 , +0.74314 , 0.74431 , 0.74548 , 0.74664 , 0.74780 , 0.74896 , 0.75011 , 0.75126 , 0.75241 , 0.75356 , +0.75471 , 0.75585 , 0.75700 , 0.75813 , 0.75927 , 0.76041 , 0.76154 , 0.76267 , 0.76380 , 0.76492 , +0.76604 , 0.76717 , 0.76828 , 0.76940 , 0.77051 , 0.77162 , 0.77273 , 0.77384 , 0.77494 , 0.77605 , +0.77715 , 0.77824 , 0.77934 , 0.78043 , 0.78152 , 0.78261 , 0.78369 , 0.78478 , 0.78586 , 0.78694 , +0.78801 , 0.78908 , 0.79016 , 0.79122 , 0.79229 , 0.79335 , 0.79441 , 0.79547 , 0.79653 , 0.79758 , +0.79864 , 0.79968 , 0.80073 , 0.80178 , 0.80282 , 0.80386 , 0.80489 , 0.80593 , 0.80696 , 0.80799 , +0.80902 , 0.81004 , 0.81106 , 0.81208 , 0.81310 , 0.81412 , 0.81513 , 0.81614 , 0.81714 , 0.81815 , +0.81915 , 0.82015 , 0.82115 , 0.82214 , 0.82314 , 0.82413 , 0.82511 , 0.82610 , 0.82708 , 0.82806 , +0.82904 , 0.83001 , 0.83098 , 0.83195 , 0.83292 , 0.83389 , 0.83485 , 0.83581 , 0.83676 , 0.83772 , +0.83867 , 0.83962 , 0.84057 , 0.84151 , 0.84245 , 0.84339 , 0.84433 , 0.84526 , 0.84619 , 0.84712 , +0.84805 , 0.84897 , 0.84989 , 0.85081 , 0.85173 , 0.85264 , 0.85355 , 0.85446 , 0.85536 , 0.85627 , +0.85717 , 0.85806 , 0.85896 , 0.85985 , 0.86074 , 0.86163 , 0.86251 , 0.86340 , 0.86427 , 0.86515 , +0.86603 , 0.86690 , 0.86777 , 0.86863 , 0.86949 , 0.87036 , 0.87121 , 0.87207 , 0.87292 , 0.87377 , +0.87462 , 0.87546 , 0.87631 , 0.87715 , 0.87798 , 0.87882 , 0.87965 , 0.88048 , 0.88130 , 0.88213 , +0.88295 , 0.88377 , 0.88458 , 0.88539 , 0.88620 , 0.88701 , 0.88782 , 0.88862 , 0.88942 , 0.89021 , +0.89101 , 0.89180 , 0.89259 , 0.89337 , 0.89415 , 0.89493 , 0.89571 , 0.89649 , 0.89726 , 0.89803 , +0.89879 , 0.89956 , 0.90032 , 0.90108 , 0.90183 , 0.90259 , 0.90334 , 0.90408 , 0.90483 , 0.90557 , +0.90631 , 0.90704 , 0.90778 , 0.90851 , 0.90924 , 0.90996 , 0.91068 , 0.91140 , 0.91212 , 0.91283 , +0.91355 , 0.91425 , 0.91496 , 0.91566 , 0.91636 , 0.91706 , 0.91775 , 0.91845 , 0.91914 , 0.91982 , +0.92050 , 0.92119 , 0.92186 , 0.92254 , 0.92321 , 0.92388 , 0.92455 , 0.92521 , 0.92587 , 0.92653 , +0.92718 , 0.92784 , 0.92849 , 0.92913 , 0.92978 , 0.93042 , 0.93106 , 0.93169 , 0.93232 , 0.93295 , +0.93358 , 0.93420 , 0.93483 , 0.93544 , 0.93606 , 0.93667 , 0.93728 , 0.93789 , 0.93849 , 0.93909 , +0.93969 , 0.94029 , 0.94088 , 0.94147 , 0.94206 , 0.94264 , 0.94322 , 0.94380 , 0.94438 , 0.94495 , +0.94552 , 0.94609 , 0.94665 , 0.94721 , 0.94777 , 0.94832 , 0.94888 , 0.94943 , 0.94997 , 0.95052 , +0.95106 , 0.95159 , 0.95213 , 0.95266 , 0.95319 , 0.95372 , 0.95424 , 0.95476 , 0.95528 , 0.95579 , +0.95630 , 0.95681 , 0.95732 , 0.95782 , 0.95832 , 0.95882 , 0.95931 , 0.95981 , 0.96029 , 0.96078 , +0.96126 , 0.96174 , 0.96222 , 0.96269 , 0.96316 , 0.96363 , 0.96410 , 0.96456 , 0.96502 , 0.96547 , +0.96593 , 0.96638 , 0.96682 , 0.96727 , 0.96771 , 0.96815 , 0.96858 , 0.96902 , 0.96945 , 0.96987 , +0.97030 , 0.97072 , 0.97113 , 0.97155 , 0.97196 , 0.97237 , 0.97278 , 0.97318 , 0.97358 , 0.97398 , +0.97437 , 0.97476 , 0.97515 , 0.97553 , 0.97592 , 0.97630 , 0.97667 , 0.97705 , 0.97742 , 0.97778 , +0.97815 , 0.97851 , 0.97887 , 0.97922 , 0.97958 , 0.97992 , 0.98027 , 0.98061 , 0.98096 , 0.98129 , +0.98163 , 0.98196 , 0.98229 , 0.98261 , 0.98294 , 0.98325 , 0.98357 , 0.98389 , 0.98420 , 0.98450 , +0.98481 , 0.98511 , 0.98541 , 0.98570 , 0.98600 , 0.98629 , 0.98657 , 0.98686 , 0.98714 , 0.98741 , +0.98769 , 0.98796 , 0.98823 , 0.98849 , 0.98876 , 0.98902 , 0.98927 , 0.98953 , 0.98978 , 0.99002 , +0.99027 , 0.99051 , 0.99075 , 0.99098 , 0.99122 , 0.99144 , 0.99167 , 0.99189 , 0.99211 , 0.99233 , +0.99255 , 0.99276 , 0.99297 , 0.99317 , 0.99337 , 0.99357 , 0.99377 , 0.99396 , 0.99415 , 0.99434 , +0.99452 , 0.99470 , 0.99488 , 0.99506 , 0.99523 , 0.99540 , 0.99556 , 0.99572 , 0.99588 , 0.99604 , +0.99619 , 0.99635 , 0.99649 , 0.99664 , 0.99678 , 0.99692 , 0.99705 , 0.99719 , 0.99731 , 0.99744 , +0.99756 , 0.99768 , 0.99780 , 0.99792 , 0.99803 , 0.99813 , 0.99824 , 0.99834 , 0.99844 , 0.99854 , +0.99863 , 0.99872 , 0.99881 , 0.99889 , 0.99897 , 0.99905 , 0.99912 , 0.99919 , 0.99926 , 0.99933 , +0.99939 , 0.99945 , 0.99951 , 0.99956 , 0.99961 , 0.99966 , 0.99970 , 0.99974 , 0.99978 , 0.99982 , +0.99985 , 0.99988 , 0.99990 , 0.99993 , 0.99995 , 0.99996 , 0.99998 , 0.99999 , 0.99999 , 1.00000 , +1.00000 , 1.00000 , 0.99999 , 0.99999 , 0.99998 , 0.99996 , 0.99995 , 0.99993 , 0.99990 , 0.99988 , +0.99985 , 0.99982 , 0.99978 , 0.99974 , 0.99970 , 0.99966 , 0.99961 , 0.99956 , 0.99951 , 0.99945 , +0.99939 , 0.99933 , 0.99926 , 0.99919 , 0.99912 , 0.99905 , 0.99897 , 0.99889 , 0.99881 , 0.99872 , +0.99863 , 0.99854 , 0.99844 , 0.99834 , 0.99824 , 0.99813 , 0.99803 , 0.99792 , 0.99780 , 0.99768 , +0.99756 , 0.99744 , 0.99731 , 0.99719 , 0.99705 , 0.99692 , 0.99678 , 0.99664 , 0.99649 , 0.99635 , +0.99619 , 0.99604 , 0.99588 , 0.99572 , 0.99556 , 0.99540 , 0.99523 , 0.99506 , 0.99488 , 0.99470 , +0.99452 , 0.99434 , 0.99415 , 0.99396 , 0.99377 , 0.99357 , 0.99337 , 0.99317 , 0.99297 , 0.99276 , +0.99255 , 0.99233 , 0.99211 , 0.99189 , 0.99167 , 0.99144 , 0.99122 , 0.99098 , 0.99075 , 0.99051 , +0.99027 , 0.99002 , 0.98978 , 0.98953 , 0.98927 , 0.98902 , 0.98876 , 0.98849 , 0.98823 , 0.98796 , +0.98769 , 0.98741 , 0.98714 , 0.98686 , 0.98657 , 0.98629 , 0.98600 , 0.98570 , 0.98541 , 0.98511 , +0.98481 , 0.98450 , 0.98420 , 0.98389 , 0.98357 , 0.98325 , 0.98294 , 0.98261 , 0.98229 , 0.98196 , +0.98163 , 0.98129 , 0.98096 , 0.98061 , 0.98027 , 0.97992 , 0.97958 , 0.97922 , 0.97887 , 0.97851 , +0.97815 , 0.97778 , 0.97742 , 0.97705 , 0.97667 , 0.97630 , 0.97592 , 0.97553 , 0.97515 , 0.97476 , +0.97437 , 0.97398 , 0.97358 , 0.97318 , 0.97278 , 0.97237 , 0.97196 , 0.97155 , 0.97113 , 0.97072 , +0.97030 , 0.96987 , 0.96945 , 0.96902 , 0.96858 , 0.96815 , 0.96771 , 0.96727 , 0.96682 , 0.96638 , +0.96593 , 0.96547 , 0.96502 , 0.96456 , 0.96410 , 0.96363 , 0.96316 , 0.96269 , 0.96222 , 0.96174 , +0.96126 , 0.96078 , 0.96029 , 0.95981 , 0.95931 , 0.95882 , 0.95832 , 0.95782 , 0.95732 , 0.95681 , +0.95630 , 0.95579 , 0.95528 , 0.95476 , 0.95424 , 0.95372 , 0.95319 , 0.95266 , 0.95213 , 0.95159 , +0.95106 , 0.95052 , 0.94997 , 0.94943 , 0.94888 , 0.94832 , 0.94777 , 0.94721 , 0.94665 , 0.94609 , +0.94552 , 0.94495 , 0.94438 , 0.94380 , 0.94322 , 0.94264 , 0.94206 , 0.94147 , 0.94088 , 0.94029 , +0.93969 , 0.93909 , 0.93849 , 0.93789 , 0.93728 , 0.93667 , 0.93606 , 0.93544 , 0.93483 , 0.93420 , +0.93358 , 0.93295 , 0.93232 , 0.93169 , 0.93106 , 0.93042 , 0.92978 , 0.92913 , 0.92849 , 0.92784 , +0.92718 , 0.92653 , 0.92587 , 0.92521 , 0.92455 , 0.92388 , 0.92321 , 0.92254 , 0.92186 , 0.92119 , +0.92050 , 0.91982 , 0.91914 , 0.91845 , 0.91775 , 0.91706 , 0.91636 , 0.91566 , 0.91496 , 0.91425 , +0.91355 , 0.91283 , 0.91212 , 0.91140 , 0.91068 , 0.90996 , 0.90924 , 0.90851 , 0.90778 , 0.90704 , +0.90631 , 0.90557 , 0.90483 , 0.90408 , 0.90334 , 0.90259 , 0.90183 , 0.90108 , 0.90032 , 0.89956 , +0.89879 , 0.89803 , 0.89726 , 0.89649 , 0.89571 , 0.89493 , 0.89415 , 0.89337 , 0.89259 , 0.89180 , +0.89101 , 0.89021 , 0.88942 , 0.88862 , 0.88782 , 0.88701 , 0.88620 , 0.88539 , 0.88458 , 0.88377 , +0.88295 , 0.88213 , 0.88130 , 0.88048 , 0.87965 , 0.87882 , 0.87798 , 0.87715 , 0.87631 , 0.87546 , +0.87462 , 0.87377 , 0.87292 , 0.87207 , 0.87121 , 0.87036 , 0.86949 , 0.86863 , 0.86777 , 0.86690 , +0.86603 , 0.86515 , 0.86427 , 0.86340 , 0.86251 , 0.86163 , 0.86074 , 0.85985 , 0.85896 , 0.85806 , +0.85717 , 0.85627 , 0.85536 , 0.85446 , 0.85355 , 0.85264 , 0.85173 , 0.85081 , 0.84989 , 0.84897 , +0.84805 , 0.84712 , 0.84619 , 0.84526 , 0.84433 , 0.84339 , 0.84245 , 0.84151 , 0.84057 , 0.83962 , +0.83867 , 0.83772 , 0.83676 , 0.83581 , 0.83485 , 0.83389 , 0.83292 , 0.83195 , 0.83098 , 0.83001 , +0.82904 , 0.82806 , 0.82708 , 0.82610 , 0.82511 , 0.82413 , 0.82314 , 0.82214 , 0.82115 , 0.82015 , +0.81915 , 0.81815 , 0.81714 , 0.81614 , 0.81513 , 0.81412 , 0.81310 , 0.81208 , 0.81106 , 0.81004 , +0.80902 , 0.80799 , 0.80696 , 0.80593 , 0.80489 , 0.80386 , 0.80282 , 0.80178 , 0.80073 , 0.79968 , +0.79864 , 0.79758 , 0.79653 , 0.79547 , 0.79441 , 0.79335 , 0.79229 , 0.79122 , 0.79016 , 0.78908 , +0.78801 , 0.78694 , 0.78586 , 0.78478 , 0.78369 , 0.78261 , 0.78152 , 0.78043 , 0.77934 , 0.77824 , +0.77715 , 0.77605 , 0.77494 , 0.77384 , 0.77273 , 0.77162 , 0.77051 , 0.76940 , 0.76828 , 0.76717 , +0.76604 , 0.76492 , 0.76380 , 0.76267 , 0.76154 , 0.76041 , 0.75927 , 0.75813 , 0.75700 , 0.75585 , +0.75471 , 0.75356 , 0.75241 , 0.75126 , 0.75011 , 0.74896 , 0.74780 , 0.74664 , 0.74548 , 0.74431 , +0.74314 , 0.74198 , 0.74080 , 0.73963 , 0.73846 , 0.73728 , 0.73610 , 0.73491 , 0.73373 , 0.73254 , +0.73135 , 0.73016 , 0.72897 , 0.72777 , 0.72657 , 0.72537 , 0.72417 , 0.72297 , 0.72176 , 0.72055 , +0.71934 , 0.71813 , 0.71691 , 0.71569 , 0.71447 , 0.71325 , 0.71203 , 0.71080 , 0.70957 , 0.70834 , +0.70711 , 0.70587 , 0.70463 , 0.70339 , 0.70215 , 0.70091 , 0.69966 , 0.69842 , 0.69717 , 0.69591 , +0.69466 , 0.69340 , 0.69214 , 0.69088 , 0.68962 , 0.68835 , 0.68709 , 0.68582 , 0.68455 , 0.68327 , +0.68200 , 0.68072 , 0.67944 , 0.67816 , 0.67688 , 0.67559 , 0.67430 , 0.67301 , 0.67172 , 0.67043 , +0.66913 , 0.66783 , 0.66653 , 0.66523 , 0.66393 , 0.66262 , 0.66131 , 0.66000 , 0.65869 , 0.65738 , +0.65606 , 0.65474 , 0.65342 , 0.65210 , 0.65077 , 0.64945 , 0.64812 , 0.64679 , 0.64546 , 0.64412 , +0.64279 , 0.64145 , 0.64011 , 0.63877 , 0.63742 , 0.63608 , 0.63473 , 0.63338 , 0.63203 , 0.63068 , +0.62932 , 0.62796 , 0.62660 , 0.62524 , 0.62388 , 0.62251 , 0.62115 , 0.61978 , 0.61841 , 0.61704 , +0.61566 , 0.61429 , 0.61291 , 0.61153 , 0.61015 , 0.60876 , 0.60738 , 0.60599 , 0.60460 , 0.60321 , +0.60182 , 0.60042 , 0.59902 , 0.59763 , 0.59622 , 0.59482 , 0.59342 , 0.59201 , 0.59061 , 0.58920 , +0.58779 , 0.58637 , 0.58496 , 0.58354 , 0.58212 , 0.58070 , 0.57928 , 0.57786 , 0.57643 , 0.57501 , +0.57358 , 0.57215 , 0.57071 , 0.56928 , 0.56784 , 0.56641 , 0.56497 , 0.56353 , 0.56208 , 0.56064 , +0.55919 , 0.55775 , 0.55630 , 0.55484 , 0.55339 , 0.55194 , 0.55048 , 0.54902 , 0.54756 , 0.54610 , +0.54464 , 0.54317 , 0.54171 , 0.54024 , 0.53877 , 0.53730 , 0.53583 , 0.53435 , 0.53288 , 0.53140 , +0.52992 , 0.52844 , 0.52696 , 0.52547 , 0.52399 , 0.52250 , 0.52101 , 0.51952 , 0.51803 , 0.51653 , +0.51504 , 0.51354 , 0.51204 , 0.51054 , 0.50904 , 0.50754 , 0.50603 , 0.50453 , 0.50302 , 0.50151 , +0.50000 , 0.49849 , 0.49697 , 0.49546 , 0.49394 , 0.49242 , 0.49090 , 0.48938 , 0.48786 , 0.48634 , +0.48481 , 0.48328 , 0.48175 , 0.48022 , 0.47869 , 0.47716 , 0.47562 , 0.47409 , 0.47255 , 0.47101 , +0.46947 , 0.46793 , 0.46639 , 0.46484 , 0.46330 , 0.46175 , 0.46020 , 0.45865 , 0.45710 , 0.45554 , +0.45399 , 0.45243 , 0.45088 , 0.44932 , 0.44776 , 0.44620 , 0.44464 , 0.44307 , 0.44151 , 0.43994 , +0.43837 , 0.43680 , 0.43523 , 0.43366 , 0.43209 , 0.43051 , 0.42894 , 0.42736 , 0.42578 , 0.42420 , +0.42262 , 0.42104 , 0.41945 , 0.41787 , 0.41628 , 0.41469 , 0.41310 , 0.41151 , 0.40992 , 0.40833 , +0.40674 , 0.40514 , 0.40355 , 0.40195 , 0.40035 , 0.39875 , 0.39715 , 0.39555 , 0.39394 , 0.39234 , +0.39073 , 0.38912 , 0.38752 , 0.38591 , 0.38430 , 0.38268 , 0.38107 , 0.37946 , 0.37784 , 0.37622 , +0.37461 , 0.37299 , 0.37137 , 0.36975 , 0.36812 , 0.36650 , 0.36488 , 0.36325 , 0.36162 , 0.36000 , +0.35837 , 0.35674 , 0.35511 , 0.35347 , 0.35184 , 0.35021 , 0.34857 , 0.34694 , 0.34530 , 0.34366 , +0.34202 , 0.34038 , 0.33874 , 0.33710 , 0.33545 , 0.33381 , 0.33216 , 0.33051 , 0.32887 , 0.32722 , +0.32557 , 0.32392 , 0.32227 , 0.32061 , 0.31896 , 0.31730 , 0.31565 , 0.31399 , 0.31233 , 0.31068 , +0.30902 , 0.30736 , 0.30570 , 0.30403 , 0.30237 , 0.30071 , 0.29904 , 0.29737 , 0.29571 , 0.29404 , +0.29237 , 0.29070 , 0.28903 , 0.28736 , 0.28569 , 0.28402 , 0.28234 , 0.28067 , 0.27899 , 0.27731 , +0.27564 , 0.27396 , 0.27228 , 0.27060 , 0.26892 , 0.26724 , 0.26556 , 0.26387 , 0.26219 , 0.26050 , +0.25882 , 0.25713 , 0.25545 , 0.25376 , 0.25207 , 0.25038 , 0.24869 , 0.24700 , 0.24531 , 0.24362 , +0.24192 , 0.24023 , 0.23853 , 0.23684 , 0.23514 , 0.23345 , 0.23175 , 0.23005 , 0.22835 , 0.22665 , +0.22495 , 0.22325 , 0.22155 , 0.21985 , 0.21814 , 0.21644 , 0.21474 , 0.21303 , 0.21132 , 0.20962 , +0.20791 , 0.20620 , 0.20450 , 0.20279 , 0.20108 , 0.19937 , 0.19766 , 0.19595 , 0.19423 , 0.19252 , +0.19081 , 0.18910 , 0.18738 , 0.18567 , 0.18395 , 0.18224 , 0.18052 , 0.17880 , 0.17708 , 0.17537 , +0.17365 , 0.17193 , 0.17021 , 0.16849 , 0.16677 , 0.16505 , 0.16333 , 0.16160 , 0.15988 , 0.15816 , +0.15643 , 0.15471 , 0.15299 , 0.15126 , 0.14954 , 0.14781 , 0.14608 , 0.14436 , 0.14263 , 0.14090 , +0.13917 , 0.13744 , 0.13572 , 0.13399 , 0.13226 , 0.13053 , 0.12880 , 0.12706 , 0.12533 , 0.12360 , +0.12187 , 0.12014 , 0.11840 , 0.11667 , 0.11494 , 0.11320 , 0.11147 , 0.10973 , 0.10800 , 0.10626 , +0.10453 , 0.10279 , 0.10106 , 0.09932 , 0.09758 , 0.09585 , 0.09411 , 0.09237 , 0.09063 , 0.08889 , +0.08716 , 0.08542 , 0.08368 , 0.08194 , 0.08020 , 0.07846 , 0.07672 , 0.07498 , 0.07324 , 0.07150 , +0.06976 , 0.06802 , 0.06627 , 0.06453 , 0.06279 , 0.06105 , 0.05931 , 0.05756 , 0.05582 , 0.05408 , +0.05234 , 0.05059 , 0.04885 , 0.04711 , 0.04536 , 0.04362 , 0.04188 , 0.04013 , 0.03839 , 0.03664 , +0.03490 , 0.03316 , 0.03141 , 0.02967 , 0.02792 , 0.02618 , 0.02443 , 0.02269 , 0.02094 , 0.01920 , +0.01745 , 0.01571 , 0.01396 , 0.01222 , 0.01047 , 0.00873 , 0.00698 , 0.00524 , 0.00349 , 0.00175 , +0.00000 , -0.00175 , -0.00349 , -0.00524 , -0.00698 , -0.00873 , -0.01047 , -0.01222 , -0.01396 , -0.01571 , +-0.01745 , -0.01920 , -0.02094 , -0.02269 , -0.02443 , -0.02618 , -0.02792 , -0.02967 , -0.03141 , -0.03316 , +-0.03490 , -0.03664 , -0.03839 , -0.04013 , -0.04188 , -0.04362 , -0.04536 , -0.04711 , -0.04885 , -0.05059 , +-0.05234 , -0.05408 , -0.05582 , -0.05756 , -0.05931 , -0.06105 , -0.06279 , -0.06453 , -0.06627 , -0.06802 , +-0.06976 , -0.07150 , -0.07324 , -0.07498 , -0.07672 , -0.07846 , -0.08020 , -0.08194 , -0.08368 , -0.08542 , +-0.08716 , -0.08889 , -0.09063 , -0.09237 , -0.09411 , -0.09585 , -0.09758 , -0.09932 , -0.10106 , -0.10279 , +-0.10453 , -0.10626 , -0.10800 , -0.10973 , -0.11147 , -0.11320 , -0.11494 , -0.11667 , -0.11840 , -0.12014 , +-0.12187 , -0.12360 , -0.12533 , -0.12706 , -0.12880 , -0.13053 , -0.13226 , -0.13399 , -0.13572 , -0.13744 , +-0.13917 , -0.14090 , -0.14263 , -0.14436 , -0.14608 , -0.14781 , -0.14954 , -0.15126 , -0.15299 , -0.15471 , +-0.15643 , -0.15816 , -0.15988 , -0.16160 , -0.16333 , -0.16505 , -0.16677 , -0.16849 , -0.17021 , -0.17193 , +-0.17365 , -0.17537 , -0.17708 , -0.17880 , -0.18052 , -0.18224 , -0.18395 , -0.18567 , -0.18738 , -0.18910 , +-0.19081 , -0.19252 , -0.19423 , -0.19595 , -0.19766 , -0.19937 , -0.20108 , -0.20279 , -0.20450 , -0.20620 , +-0.20791 , -0.20962 , -0.21132 , -0.21303 , -0.21474 , -0.21644 , -0.21814 , -0.21985 , -0.22155 , -0.22325 , +-0.22495 , -0.22665 , -0.22835 , -0.23005 , -0.23175 , -0.23345 , -0.23514 , -0.23684 , -0.23853 , -0.24023 , +-0.24192 , -0.24362 , -0.24531 , -0.24700 , -0.24869 , -0.25038 , -0.25207 , -0.25376 , -0.25545 , -0.25713 , +-0.25882 , -0.26050 , -0.26219 , -0.26387 , -0.26556 , -0.26724 , -0.26892 , -0.27060 , -0.27228 , -0.27396 , +-0.27564 , -0.27731 , -0.27899 , -0.28067 , -0.28234 , -0.28402 , -0.28569 , -0.28736 , -0.28903 , -0.29070 , +-0.29237 , -0.29404 , -0.29571 , -0.29737 , -0.29904 , -0.30071 , -0.30237 , -0.30403 , -0.30570 , -0.30736 , +-0.30902 , -0.31068 , -0.31233 , -0.31399 , -0.31565 , -0.31730 , -0.31896 , -0.32061 , -0.32227 , -0.32392 , +-0.32557 , -0.32722 , -0.32887 , -0.33051 , -0.33216 , -0.33381 , -0.33545 , -0.33710 , -0.33874 , -0.34038 , +-0.34202 , -0.34366 , -0.34530 , -0.34694 , -0.34857 , -0.35021 , -0.35184 , -0.35347 , -0.35511 , -0.35674 , +-0.35837 , -0.36000 , -0.36162 , -0.36325 , -0.36488 , -0.36650 , -0.36812 , -0.36975 , -0.37137 , -0.37299 , +-0.37461 , -0.37622 , -0.37784 , -0.37946 , -0.38107 , -0.38268 , -0.38430 , -0.38591 , -0.38752 , -0.38912 , +-0.39073 , -0.39234 , -0.39394 , -0.39555 , -0.39715 , -0.39875 , -0.40035 , -0.40195 , -0.40355 , -0.40514 , +-0.40674 , -0.40833 , -0.40992 , -0.41151 , -0.41310 , -0.41469 , -0.41628 , -0.41787 , -0.41945 , -0.42104 , +-0.42262 , -0.42420 , -0.42578 , -0.42736 , -0.42894 , -0.43051 , -0.43209 , -0.43366 , -0.43523 , -0.43680 , +-0.43837 , -0.43994 , -0.44151 , -0.44307 , -0.44464 , -0.44620 , -0.44776 , -0.44932 , -0.45088 , -0.45243 , +-0.45399 , -0.45554 , -0.45710 , -0.45865 , -0.46020 , -0.46175 , -0.46330 , -0.46484 , -0.46639 , -0.46793 , +-0.46947 , -0.47101 , -0.47255 , -0.47409 , -0.47562 , -0.47716 , -0.47869 , -0.48022 , -0.48175 , -0.48328 , +-0.48481 , -0.48634 , -0.48786 , -0.48938 , -0.49090 , -0.49242 , -0.49394 , -0.49546 , -0.49697 , -0.49849 , +-0.50000 , -0.50151 , -0.50302 , -0.50453 , -0.50603 , -0.50754 , -0.50904 , -0.51054 , -0.51204 , -0.51354 , +-0.51504 , -0.51653 , -0.51803 , -0.51952 , -0.52101 , -0.52250 , -0.52399 , -0.52547 , -0.52696 , -0.52844 , +-0.52992 , -0.53140 , -0.53288 , -0.53435 , -0.53583 , -0.53730 , -0.53877 , -0.54024 , -0.54171 , -0.54317 , +-0.54464 , -0.54610 , -0.54756 , -0.54902 , -0.55048 , -0.55194 , -0.55339 , -0.55484 , -0.55630 , -0.55775 , +-0.55919 , -0.56064 , -0.56208 , -0.56353 , -0.56497 , -0.56641 , -0.56784 , -0.56928 , -0.57071 , -0.57215 , +-0.57358 , -0.57501 , -0.57643 , -0.57786 , -0.57928 , -0.58070 , -0.58212 , -0.58354 , -0.58496 , -0.58637 , +-0.58779 , -0.58920 , -0.59061 , -0.59201 , -0.59342 , -0.59482 , -0.59622 , -0.59763 , -0.59902 , -0.60042 , +-0.60182 , -0.60321 , -0.60460 , -0.60599 , -0.60738 , -0.60876 , -0.61015 , -0.61153 , -0.61291 , -0.61429 , +-0.61566 , -0.61704 , -0.61841 , -0.61978 , -0.62115 , -0.62251 , -0.62388 , -0.62524 , -0.62660 , -0.62796 , +-0.62932 , -0.63068 , -0.63203 , -0.63338 , -0.63473 , -0.63608 , -0.63742 , -0.63877 , -0.64011 , -0.64145 , +-0.64279 , -0.64412 , -0.64546 , -0.64679 , -0.64812 , -0.64945 , -0.65077 , -0.65210 , -0.65342 , -0.65474 , +-0.65606 , -0.65738 , -0.65869 , -0.66000 , -0.66131 , -0.66262 , -0.66393 , -0.66523 , -0.66653 , -0.66783 , +-0.66913 , -0.67043 , -0.67172 , -0.67301 , -0.67430 , -0.67559 , -0.67688 , -0.67816 , -0.67944 , -0.68072 , +-0.68200 , -0.68327 , -0.68455 , -0.68582 , -0.68709 , -0.68835 , -0.68962 , -0.69088 , -0.69214 , -0.69340 , +-0.69466 , -0.69591 , -0.69717 , -0.69842 , -0.69966 , -0.70091 , -0.70215 , -0.70339 , -0.70463 , -0.70587 , +-0.70711 , -0.70834 , -0.70957 , -0.71080 , -0.71203 , -0.71325 , -0.71447 , -0.71569 , -0.71691 , -0.71813 , +-0.71934 , -0.72055 , -0.72176 , -0.72297 , -0.72417 , -0.72537 , -0.72657 , -0.72777 , -0.72897 , -0.73016 , +-0.73135 , -0.73254 , -0.73373 , -0.73491 , -0.73610 , -0.73728 , -0.73846 , -0.73963 , -0.74080 , -0.74198 , +-0.74314 , -0.74431 , -0.74548 , -0.74664 , -0.74780 , -0.74896 , -0.75011 , -0.75126 , -0.75241 , -0.75356 , +-0.75471 , -0.75585 , -0.75700 , -0.75813 , -0.75927 , -0.76041 , -0.76154 , -0.76267 , -0.76380 , -0.76492 , +-0.76604 , -0.76717 , -0.76828 , -0.76940 , -0.77051 , -0.77162 , -0.77273 , -0.77384 , -0.77494 , -0.77605 , +-0.77715 , -0.77824 , -0.77934 , -0.78043 , -0.78152 , -0.78261 , -0.78369 , -0.78478 , -0.78586 , -0.78694 , +-0.78801 , -0.78908 , -0.79016 , -0.79122 , -0.79229 , -0.79335 , -0.79441 , -0.79547 , -0.79653 , -0.79758 , +-0.79864 , -0.79968 , -0.80073 , -0.80178 , -0.80282 , -0.80386 , -0.80489 , -0.80593 , -0.80696 , -0.80799 , +-0.80902 , -0.81004 , -0.81106 , -0.81208 , -0.81310 , -0.81412 , -0.81513 , -0.81614 , -0.81714 , -0.81815 , +-0.81915 , -0.82015 , -0.82115 , -0.82214 , -0.82314 , -0.82413 , -0.82511 , -0.82610 , -0.82708 , -0.82806 , +-0.82904 , -0.83001 , -0.83098 , -0.83195 , -0.83292 , -0.83389 , -0.83485 , -0.83581 , -0.83676 , -0.83772 , +-0.83867 , -0.83962 , -0.84057 , -0.84151 , -0.84245 , -0.84339 , -0.84433 , -0.84526 , -0.84619 , -0.84712 , +-0.84805 , -0.84897 , -0.84989 , -0.85081 , -0.85173 , -0.85264 , -0.85355 , -0.85446 , -0.85536 , -0.85627 , +-0.85717 , -0.85806 , -0.85896 , -0.85985 , -0.86074 , -0.86163 , -0.86251 , -0.86340 , -0.86427 , -0.86515 , +-0.86603 , -0.86690 , -0.86777 , -0.86863 , -0.86949 , -0.87036 , -0.87121 , -0.87207 , -0.87292 , -0.87377 , +-0.87462 , -0.87546 , -0.87631 , -0.87715 , -0.87798 , -0.87882 , -0.87965 , -0.88048 , -0.88130 , -0.88213 , +-0.88295 , -0.88377 , -0.88458 , -0.88539 , -0.88620 , -0.88701 , -0.88782 , -0.88862 , -0.88942 , -0.89021 , +-0.89101 , -0.89180 , -0.89259 , -0.89337 , -0.89415 , -0.89493 , -0.89571 , -0.89649 , -0.89726 , -0.89803 , +-0.89879 , -0.89956 , -0.90032 , -0.90108 , -0.90183 , -0.90259 , -0.90334 , -0.90408 , -0.90483 , -0.90557 , +-0.90631 , -0.90704 , -0.90778 , -0.90851 , -0.90924 , -0.90996 , -0.91068 , -0.91140 , -0.91212 , -0.91283 , +-0.91355 , -0.91425 , -0.91496 , -0.91566 , -0.91636 , -0.91706 , -0.91775 , -0.91845 , -0.91914 , -0.91982 , +-0.92050 , -0.92119 , -0.92186 , -0.92254 , -0.92321 , -0.92388 , -0.92455 , -0.92521 , -0.92587 , -0.92653 , +-0.92718 , -0.92784 , -0.92849 , -0.92913 , -0.92978 , -0.93042 , -0.93106 , -0.93169 , -0.93232 , -0.93295 , +-0.93358 , -0.93420 , -0.93483 , -0.93544 , -0.93606 , -0.93667 , -0.93728 , -0.93789 , -0.93849 , -0.93909 , +-0.93969 , -0.94029 , -0.94088 , -0.94147 , -0.94206 , -0.94264 , -0.94322 , -0.94380 , -0.94438 , -0.94495 , +-0.94552 , -0.94609 , -0.94665 , -0.94721 , -0.94777 , -0.94832 , -0.94888 , -0.94943 , -0.94997 , -0.95052 , +-0.95106 , -0.95159 , -0.95213 , -0.95266 , -0.95319 , -0.95372 , -0.95424 , -0.95476 , -0.95528 , -0.95579 , +-0.95630 , -0.95681 , -0.95732 , -0.95782 , -0.95832 , -0.95882 , -0.95931 , -0.95981 , -0.96029 , -0.96078 , +-0.96126 , -0.96174 , -0.96222 , -0.96269 , -0.96316 , -0.96363 , -0.96410 , -0.96456 , -0.96502 , -0.96547 , +-0.96593 , -0.96638 , -0.96682 , -0.96727 , -0.96771 , -0.96815 , -0.96858 , -0.96902 , -0.96945 , -0.96987 , +-0.97030 , -0.97072 , -0.97113 , -0.97155 , -0.97196 , -0.97237 , -0.97278 , -0.97318 , -0.97358 , -0.97398 , +-0.97437 , -0.97476 , -0.97515 , -0.97553 , -0.97592 , -0.97630 , -0.97667 , -0.97705 , -0.97742 , -0.97778 , +-0.97815 , -0.97851 , -0.97887 , -0.97922 , -0.97958 , -0.97992 , -0.98027 , -0.98061 , -0.98096 , -0.98129 , +-0.98163 , -0.98196 , -0.98229 , -0.98261 , -0.98294 , -0.98325 , -0.98357 , -0.98389 , -0.98420 , -0.98450 , +-0.98481 , -0.98511 , -0.98541 , -0.98570 , -0.98600 , -0.98629 , -0.98657 , -0.98686 , -0.98714 , -0.98741 , +-0.98769 , -0.98796 , -0.98823 , -0.98849 , -0.98876 , -0.98902 , -0.98927 , -0.98953 , -0.98978 , -0.99002 , +-0.99027 , -0.99051 , -0.99075 , -0.99098 , -0.99122 , -0.99144 , -0.99167 , -0.99189 , -0.99211 , -0.99233 , +-0.99255 , -0.99276 , -0.99297 , -0.99317 , -0.99337 , -0.99357 , -0.99377 , -0.99396 , -0.99415 , -0.99434 , +-0.99452 , -0.99470 , -0.99488 , -0.99506 , -0.99523 , -0.99540 , -0.99556 , -0.99572 , -0.99588 , -0.99604 , +-0.99619 , -0.99635 , -0.99649 , -0.99664 , -0.99678 , -0.99692 , -0.99705 , -0.99719 , -0.99731 , -0.99744 , +-0.99756 , -0.99768 , -0.99780 , -0.99792 , -0.99803 , -0.99813 , -0.99824 , -0.99834 , -0.99844 , -0.99854 , +-0.99863 , -0.99872 , -0.99881 , -0.99889 , -0.99897 , -0.99905 , -0.99912 , -0.99919 , -0.99926 , -0.99933 , +-0.99939 , -0.99945 , -0.99951 , -0.99956 , -0.99961 , -0.99966 , -0.99970 , -0.99974 , -0.99978 , -0.99982 , +-0.99985 , -0.99988 , -0.99990 , -0.99993 , -0.99995 , -0.99996 , -0.99998 , -0.99999 , -0.99999 , -1.00000 , +-1.00000 , -1.00000 , -0.99999 , -0.99999 , -0.99998 , -0.99996 , -0.99995 , -0.99993 , -0.99990 , -0.99988 , +-0.99985 , -0.99982 , -0.99978 , -0.99974 , -0.99970 , -0.99966 , -0.99961 , -0.99956 , -0.99951 , -0.99945 , +-0.99939 , -0.99933 , -0.99926 , -0.99919 , -0.99912 , -0.99905 , -0.99897 , -0.99889 , -0.99881 , -0.99872 , +-0.99863 , -0.99854 , -0.99844 , -0.99834 , -0.99824 , -0.99813 , -0.99803 , -0.99792 , -0.99780 , -0.99768 , +-0.99756 , -0.99744 , -0.99731 , -0.99719 , -0.99705 , -0.99692 , -0.99678 , -0.99664 , -0.99649 , -0.99635 , +-0.99619 , -0.99604 , -0.99588 , -0.99572 , -0.99556 , -0.99540 , -0.99523 , -0.99506 , -0.99488 , -0.99470 , +-0.99452 , -0.99434 , -0.99415 , -0.99396 , -0.99377 , -0.99357 , -0.99337 , -0.99317 , -0.99297 , -0.99276 , +-0.99255 , -0.99233 , -0.99211 , -0.99189 , -0.99167 , -0.99144 , -0.99122 , -0.99098 , -0.99075 , -0.99051 , +-0.99027 , -0.99002 , -0.98978 , -0.98953 , -0.98927 , -0.98902 , -0.98876 , -0.98849 , -0.98823 , -0.98796 , +-0.98769 , -0.98741 , -0.98714 , -0.98686 , -0.98657 , -0.98629 , -0.98600 , -0.98570 , -0.98541 , -0.98511 , +-0.98481 , -0.98450 , -0.98420 , -0.98389 , -0.98357 , -0.98325 , -0.98294 , -0.98261 , -0.98229 , -0.98196 , +-0.98163 , -0.98129 , -0.98096 , -0.98061 , -0.98027 , -0.97992 , -0.97958 , -0.97922 , -0.97887 , -0.97851 , +-0.97815 , -0.97778 , -0.97742 , -0.97705 , -0.97667 , -0.97630 , -0.97592 , -0.97553 , -0.97515 , -0.97476 , +-0.97437 , -0.97398 , -0.97358 , -0.97318 , -0.97278 , -0.97237 , -0.97196 , -0.97155 , -0.97113 , -0.97072 , +-0.97030 , -0.96987 , -0.96945 , -0.96902 , -0.96858 , -0.96815 , -0.96771 , -0.96727 , -0.96682 , -0.96638 , +-0.96593 , -0.96547 , -0.96502 , -0.96456 , -0.96410 , -0.96363 , -0.96316 , -0.96269 , -0.96222 , -0.96174 , +-0.96126 , -0.96078 , -0.96029 , -0.95981 , -0.95931 , -0.95882 , -0.95832 , -0.95782 , -0.95732 , -0.95681 , +-0.95630 , -0.95579 , -0.95528 , -0.95476 , -0.95424 , -0.95372 , -0.95319 , -0.95266 , -0.95213 , -0.95159 , +-0.95106 , -0.95052 , -0.94997 , -0.94943 , -0.94888 , -0.94832 , -0.94777 , -0.94721 , -0.94665 , -0.94609 , +-0.94552 , -0.94495 , -0.94438 , -0.94380 , -0.94322 , -0.94264 , -0.94206 , -0.94147 , -0.94088 , -0.94029 , +-0.93969 , -0.93909 , -0.93849 , -0.93789 , -0.93728 , -0.93667 , -0.93606 , -0.93544 , -0.93483 , -0.93420 , +-0.93358 , -0.93295 , -0.93232 , -0.93169 , -0.93106 , -0.93042 , -0.92978 , -0.92913 , -0.92849 , -0.92784 , +-0.92718 , -0.92653 , -0.92587 , -0.92521 , -0.92455 , -0.92388 , -0.92321 , -0.92254 , -0.92186 , -0.92119 , +-0.92050 , -0.91982 , -0.91914 , -0.91845 , -0.91775 , -0.91706 , -0.91636 , -0.91566 , -0.91496 , -0.91425 , +-0.91355 , -0.91283 , -0.91212 , -0.91140 , -0.91068 , -0.90996 , -0.90924 , -0.90851 , -0.90778 , -0.90704 , +-0.90631 , -0.90557 , -0.90483 , -0.90408 , -0.90334 , -0.90259 , -0.90183 , -0.90108 , -0.90032 , -0.89956 , +-0.89879 , -0.89803 , -0.89726 , -0.89649 , -0.89571 , -0.89493 , -0.89415 , -0.89337 , -0.89259 , -0.89180 , +-0.89101 , -0.89021 , -0.88942 , -0.88862 , -0.88782 , -0.88701 , -0.88620 , -0.88539 , -0.88458 , -0.88377 , +-0.88295 , -0.88213 , -0.88130 , -0.88048 , -0.87965 , -0.87882 , -0.87798 , -0.87715 , -0.87631 , -0.87546 , +-0.87462 , -0.87377 , -0.87292 , -0.87207 , -0.87121 , -0.87036 , -0.86949 , -0.86863 , -0.86777 , -0.86690 , +-0.86603 , -0.86515 , -0.86427 , -0.86340 , -0.86251 , -0.86163 , -0.86074 , -0.85985 , -0.85896 , -0.85806 , +-0.85717 , -0.85627 , -0.85536 , -0.85446 , -0.85355 , -0.85264 , -0.85173 , -0.85081 , -0.84989 , -0.84897 , +-0.84805 , -0.84712 , -0.84619 , -0.84526 , -0.84433 , -0.84339 , -0.84245 , -0.84151 , -0.84057 , -0.83962 , +-0.83867 , -0.83772 , -0.83676 , -0.83581 , -0.83485 , -0.83389 , -0.83292 , -0.83195 , -0.83098 , -0.83001 , +-0.82904 , -0.82806 , -0.82708 , -0.82610 , -0.82511 , -0.82413 , -0.82314 , -0.82214 , -0.82115 , -0.82015 , +-0.81915 , -0.81815 , -0.81714 , -0.81614 , -0.81513 , -0.81412 , -0.81310 , -0.81208 , -0.81106 , -0.81004 , +-0.80902 , -0.80799 , -0.80696 , -0.80593 , -0.80489 , -0.80386 , -0.80282 , -0.80178 , -0.80073 , -0.79968 , +-0.79864 , -0.79758 , -0.79653 , -0.79547 , -0.79441 , -0.79335 , -0.79229 , -0.79122 , -0.79016 , -0.78908 , +-0.78801 , -0.78694 , -0.78586 , -0.78478 , -0.78369 , -0.78261 , -0.78152 , -0.78043 , -0.77934 , -0.77824 , +-0.77715 , -0.77605 , -0.77494 , -0.77384 , -0.77273 , -0.77162 , -0.77051 , -0.76940 , -0.76828 , -0.76717 , +-0.76604 , -0.76492 , -0.76380 , -0.76267 , -0.76154 , -0.76041 , -0.75927 , -0.75813 , -0.75700 , -0.75585 , +-0.75471 , -0.75356 , -0.75241 , -0.75126 , -0.75011 , -0.74896 , -0.74780 , -0.74664 , -0.74548 , -0.74431 , +-0.74314 , -0.74198 , -0.74080 , -0.73963 , -0.73846 , -0.73728 , -0.73610 , -0.73491 , -0.73373 , -0.73254 , +-0.73135 , -0.73016 , -0.72897 , -0.72777 , -0.72657 , -0.72537 , -0.72417 , -0.72297 , -0.72176 , -0.72055 , +-0.71934 , -0.71813 , -0.71691 , -0.71569 , -0.71447 , -0.71325 , -0.71203 , -0.71080 , -0.70957 , -0.70834 , +-0.70711 , -0.70587 , -0.70463 , -0.70339 , -0.70215 , -0.70091 , -0.69966 , -0.69842 , -0.69717 , -0.69591 , +-0.69466 , -0.69340 , -0.69214 , -0.69088 , -0.68962 , -0.68835 , -0.68709 , -0.68582 , -0.68455 , -0.68327 , +-0.68200 , -0.68072 , -0.67944 , -0.67816 , -0.67688 , -0.67559 , -0.67430 , -0.67301 , -0.67172 , -0.67043 , +-0.66913 , -0.66783 , -0.66653 , -0.66523 , -0.66393 , -0.66262 , -0.66131 , -0.66000 , -0.65869 , -0.65738 , +-0.65606 , -0.65474 , -0.65342 , -0.65210 , -0.65077 , -0.64945 , -0.64812 , -0.64679 , -0.64546 , -0.64412 , +-0.64279 , -0.64145 , -0.64011 , -0.63877 , -0.63742 , -0.63608 , -0.63473 , -0.63338 , -0.63203 , -0.63068 , +-0.62932 , -0.62796 , -0.62660 , -0.62524 , -0.62388 , -0.62251 , -0.62115 , -0.61978 , -0.61841 , -0.61704 , +-0.61566 , -0.61429 , -0.61291 , -0.61153 , -0.61015 , -0.60876 , -0.60738 , -0.60599 , -0.60460 , -0.60321 , +-0.60182 , -0.60042 , -0.59902 , -0.59763 , -0.59622 , -0.59482 , -0.59342 , -0.59201 , -0.59061 , -0.58920 , +-0.58779 , -0.58637 , -0.58496 , -0.58354 , -0.58212 , -0.58070 , -0.57928 , -0.57786 , -0.57643 , -0.57501 , +-0.57358 , -0.57215 , -0.57071 , -0.56928 , -0.56784 , -0.56641 , -0.56497 , -0.56353 , -0.56208 , -0.56064 , +-0.55919 , -0.55775 , -0.55630 , -0.55484 , -0.55339 , -0.55194 , -0.55048 , -0.54902 , -0.54756 , -0.54610 , +-0.54464 , -0.54317 , -0.54171 , -0.54024 , -0.53877 , -0.53730 , -0.53583 , -0.53435 , -0.53288 , -0.53140 , +-0.52992 , -0.52844 , -0.52696 , -0.52547 , -0.52399 , -0.52250 , -0.52101 , -0.51952 , -0.51803 , -0.51653 , +-0.51504 , -0.51354 , -0.51204 , -0.51054 , -0.50904 , -0.50754 , -0.50603 , -0.50453 , -0.50302 , -0.50151 , +-0.50000 , -0.49849 , -0.49697 , -0.49546 , -0.49394 , -0.49242 , -0.49090 , -0.48938 , -0.48786 , -0.48634 , +-0.48481 , -0.48328 , -0.48175 , -0.48022 , -0.47869 , -0.47716 , -0.47562 , -0.47409 , -0.47255 , -0.47101 , +-0.46947 , -0.46793 , -0.46639 , -0.46484 , -0.46330 , -0.46175 , -0.46020 , -0.45865 , -0.45710 , -0.45554 , +-0.45399 , -0.45243 , -0.45088 , -0.44932 , -0.44776 , -0.44620 , -0.44464 , -0.44307 , -0.44151 , -0.43994 , +-0.43837 , -0.43680 , -0.43523 , -0.43366 , -0.43209 , -0.43051 , -0.42894 , -0.42736 , -0.42578 , -0.42420 , +-0.42262 , -0.42104 , -0.41945 , -0.41787 , -0.41628 , -0.41469 , -0.41310 , -0.41151 , -0.40992 , -0.40833 , +-0.40674 , -0.40514 , -0.40355 , -0.40195 , -0.40035 , -0.39875 , -0.39715 , -0.39555 , -0.39394 , -0.39234 , +-0.39073 , -0.38912 , -0.38752 , -0.38591 , -0.38430 , -0.38268 , -0.38107 , -0.37946 , -0.37784 , -0.37622 , +-0.37461 , -0.37299 , -0.37137 , -0.36975 , -0.36812 , -0.36650 , -0.36488 , -0.36325 , -0.36162 , -0.36000 , +-0.35837 , -0.35674 , -0.35511 , -0.35347 , -0.35184 , -0.35021 , -0.34857 , -0.34694 , -0.34530 , -0.34366 , +-0.34202 , -0.34038 , -0.33874 , -0.33710 , -0.33545 , -0.33381 , -0.33216 , -0.33051 , -0.32887 , -0.32722 , +-0.32557 , -0.32392 , -0.32227 , -0.32061 , -0.31896 , -0.31730 , -0.31565 , -0.31399 , -0.31233 , -0.31068 , +-0.30902 , -0.30736 , -0.30570 , -0.30403 , -0.30237 , -0.30071 , -0.29904 , -0.29737 , -0.29571 , -0.29404 , +-0.29237 , -0.29070 , -0.28903 , -0.28736 , -0.28569 , -0.28402 , -0.28234 , -0.28067 , -0.27899 , -0.27731 , +-0.27564 , -0.27396 , -0.27228 , -0.27060 , -0.26892 , -0.26724 , -0.26556 , -0.26387 , -0.26219 , -0.26050 , +-0.25882 , -0.25713 , -0.25545 , -0.25376 , -0.25207 , -0.25038 , -0.24869 , -0.24700 , -0.24531 , -0.24362 , +-0.24192 , -0.24023 , -0.23853 , -0.23684 , -0.23514 , -0.23345 , -0.23175 , -0.23005 , -0.22835 , -0.22665 , +-0.22495 , -0.22325 , -0.22155 , -0.21985 , -0.21814 , -0.21644 , -0.21474 , -0.21303 , -0.21132 , -0.20962 , +-0.20791 , -0.20620 , -0.20450 , -0.20279 , -0.20108 , -0.19937 , -0.19766 , -0.19595 , -0.19423 , -0.19252 , +-0.19081 , -0.18910 , -0.18738 , -0.18567 , -0.18395 , -0.18224 , -0.18052 , -0.17880 , -0.17708 , -0.17537 , +-0.17365 , -0.17193 , -0.17021 , -0.16849 , -0.16677 , -0.16505 , -0.16333 , -0.16160 , -0.15988 , -0.15816 , +-0.15643 , -0.15471 , -0.15299 , -0.15126 , -0.14954 , -0.14781 , -0.14608 , -0.14436 , -0.14263 , -0.14090 , +-0.13917 , -0.13744 , -0.13572 , -0.13399 , -0.13226 , -0.13053 , -0.12880 , -0.12706 , -0.12533 , -0.12360 , +-0.12187 , -0.12014 , -0.11840 , -0.11667 , -0.11494 , -0.11320 , -0.11147 , -0.10973 , -0.10800 , -0.10626 , +-0.10453 , -0.10279 , -0.10106 , -0.09932 , -0.09758 , -0.09585 , -0.09411 , -0.09237 , -0.09063 , -0.08889 , +-0.08716 , -0.08542 , -0.08368 , -0.08194 , -0.08020 , -0.07846 , -0.07672 , -0.07498 , -0.07324 , -0.07150 , +-0.06976 , -0.06802 , -0.06627 , -0.06453 , -0.06279 , -0.06105 , -0.05931 , -0.05756 , -0.05582 , -0.05408 , +-0.05234 , -0.05059 , -0.04885 , -0.04711 , -0.04536 , -0.04362 , -0.04188 , -0.04013 , -0.03839 , -0.03664 , +-0.03490 , -0.03316 , -0.03141 , -0.02967 , -0.02792 , -0.02618 , -0.02443 , -0.02269 , -0.02094 , -0.01920 , +-0.01745 , -0.01571 , -0.01396 , -0.01222 , -0.01047 , -0.00873 , -0.00698 , -0.00524 , -0.00349 , -0.00175 , +}; +const double CosTable[3600]={ +1.00000 , 1.00000 , 0.99999 , 0.99999 , 0.99998 , 0.99996 , 0.99995 , 0.99993 , 0.99990 , 0.99988 , +0.99985 , 0.99982 , 0.99978 , 0.99974 , 0.99970 , 0.99966 , 0.99961 , 0.99956 , 0.99951 , 0.99945 , +0.99939 , 0.99933 , 0.99926 , 0.99919 , 0.99912 , 0.99905 , 0.99897 , 0.99889 , 0.99881 , 0.99872 , +0.99863 , 0.99854 , 0.99844 , 0.99834 , 0.99824 , 0.99813 , 0.99803 , 0.99792 , 0.99780 , 0.99768 , +0.99756 , 0.99744 , 0.99731 , 0.99719 , 0.99705 , 0.99692 , 0.99678 , 0.99664 , 0.99649 , 0.99635 , +0.99619 , 0.99604 , 0.99588 , 0.99572 , 0.99556 , 0.99540 , 0.99523 , 0.99506 , 0.99488 , 0.99470 , +0.99452 , 0.99434 , 0.99415 , 0.99396 , 0.99377 , 0.99357 , 0.99337 , 0.99317 , 0.99297 , 0.99276 , +0.99255 , 0.99233 , 0.99211 , 0.99189 , 0.99167 , 0.99144 , 0.99122 , 0.99098 , 0.99075 , 0.99051 , +0.99027 , 0.99002 , 0.98978 , 0.98953 , 0.98927 , 0.98902 , 0.98876 , 0.98849 , 0.98823 , 0.98796 , +0.98769 , 0.98741 , 0.98714 , 0.98686 , 0.98657 , 0.98629 , 0.98600 , 0.98570 , 0.98541 , 0.98511 , +0.98481 , 0.98450 , 0.98420 , 0.98389 , 0.98357 , 0.98325 , 0.98294 , 0.98261 , 0.98229 , 0.98196 , +0.98163 , 0.98129 , 0.98096 , 0.98061 , 0.98027 , 0.97992 , 0.97958 , 0.97922 , 0.97887 , 0.97851 , +0.97815 , 0.97778 , 0.97742 , 0.97705 , 0.97667 , 0.97630 , 0.97592 , 0.97553 , 0.97515 , 0.97476 , +0.97437 , 0.97398 , 0.97358 , 0.97318 , 0.97278 , 0.97237 , 0.97196 , 0.97155 , 0.97113 , 0.97072 , +0.97030 , 0.96987 , 0.96945 , 0.96902 , 0.96858 , 0.96815 , 0.96771 , 0.96727 , 0.96682 , 0.96638 , +0.96593 , 0.96547 , 0.96502 , 0.96456 , 0.96410 , 0.96363 , 0.96316 , 0.96269 , 0.96222 , 0.96174 , +0.96126 , 0.96078 , 0.96029 , 0.95981 , 0.95931 , 0.95882 , 0.95832 , 0.95782 , 0.95732 , 0.95681 , +0.95630 , 0.95579 , 0.95528 , 0.95476 , 0.95424 , 0.95372 , 0.95319 , 0.95266 , 0.95213 , 0.95159 , +0.95106 , 0.95052 , 0.94997 , 0.94943 , 0.94888 , 0.94832 , 0.94777 , 0.94721 , 0.94665 , 0.94609 , +0.94552 , 0.94495 , 0.94438 , 0.94380 , 0.94322 , 0.94264 , 0.94206 , 0.94147 , 0.94088 , 0.94029 , +0.93969 , 0.93909 , 0.93849 , 0.93789 , 0.93728 , 0.93667 , 0.93606 , 0.93544 , 0.93483 , 0.93420 , +0.93358 , 0.93295 , 0.93232 , 0.93169 , 0.93106 , 0.93042 , 0.92978 , 0.92913 , 0.92849 , 0.92784 , +0.92718 , 0.92653 , 0.92587 , 0.92521 , 0.92455 , 0.92388 , 0.92321 , 0.92254 , 0.92186 , 0.92119 , +0.92050 , 0.91982 , 0.91914 , 0.91845 , 0.91775 , 0.91706 , 0.91636 , 0.91566 , 0.91496 , 0.91425 , +0.91355 , 0.91283 , 0.91212 , 0.91140 , 0.91068 , 0.90996 , 0.90924 , 0.90851 , 0.90778 , 0.90704 , +0.90631 , 0.90557 , 0.90483 , 0.90408 , 0.90334 , 0.90259 , 0.90183 , 0.90108 , 0.90032 , 0.89956 , +0.89879 , 0.89803 , 0.89726 , 0.89649 , 0.89571 , 0.89493 , 0.89415 , 0.89337 , 0.89259 , 0.89180 , +0.89101 , 0.89021 , 0.88942 , 0.88862 , 0.88782 , 0.88701 , 0.88620 , 0.88539 , 0.88458 , 0.88377 , +0.88295 , 0.88213 , 0.88130 , 0.88048 , 0.87965 , 0.87882 , 0.87798 , 0.87715 , 0.87631 , 0.87546 , +0.87462 , 0.87377 , 0.87292 , 0.87207 , 0.87121 , 0.87036 , 0.86949 , 0.86863 , 0.86777 , 0.86690 , +0.86603 , 0.86515 , 0.86427 , 0.86340 , 0.86251 , 0.86163 , 0.86074 , 0.85985 , 0.85896 , 0.85806 , +0.85717 , 0.85627 , 0.85536 , 0.85446 , 0.85355 , 0.85264 , 0.85173 , 0.85081 , 0.84989 , 0.84897 , +0.84805 , 0.84712 , 0.84619 , 0.84526 , 0.84433 , 0.84339 , 0.84245 , 0.84151 , 0.84057 , 0.83962 , +0.83867 , 0.83772 , 0.83676 , 0.83581 , 0.83485 , 0.83389 , 0.83292 , 0.83195 , 0.83098 , 0.83001 , +0.82904 , 0.82806 , 0.82708 , 0.82610 , 0.82511 , 0.82413 , 0.82314 , 0.82214 , 0.82115 , 0.82015 , +0.81915 , 0.81815 , 0.81714 , 0.81614 , 0.81513 , 0.81412 , 0.81310 , 0.81208 , 0.81106 , 0.81004 , +0.80902 , 0.80799 , 0.80696 , 0.80593 , 0.80489 , 0.80386 , 0.80282 , 0.80178 , 0.80073 , 0.79968 , +0.79864 , 0.79758 , 0.79653 , 0.79547 , 0.79441 , 0.79335 , 0.79229 , 0.79122 , 0.79016 , 0.78908 , +0.78801 , 0.78694 , 0.78586 , 0.78478 , 0.78369 , 0.78261 , 0.78152 , 0.78043 , 0.77934 , 0.77824 , +0.77715 , 0.77605 , 0.77494 , 0.77384 , 0.77273 , 0.77162 , 0.77051 , 0.76940 , 0.76828 , 0.76717 , +0.76604 , 0.76492 , 0.76380 , 0.76267 , 0.76154 , 0.76041 , 0.75927 , 0.75813 , 0.75700 , 0.75585 , +0.75471 , 0.75356 , 0.75241 , 0.75126 , 0.75011 , 0.74896 , 0.74780 , 0.74664 , 0.74548 , 0.74431 , +0.74314 , 0.74198 , 0.74080 , 0.73963 , 0.73846 , 0.73728 , 0.73610 , 0.73491 , 0.73373 , 0.73254 , +0.73135 , 0.73016 , 0.72897 , 0.72777 , 0.72657 , 0.72537 , 0.72417 , 0.72297 , 0.72176 , 0.72055 , +0.71934 , 0.71813 , 0.71691 , 0.71569 , 0.71447 , 0.71325 , 0.71203 , 0.71080 , 0.70957 , 0.70834 , +0.70711 , 0.70587 , 0.70463 , 0.70339 , 0.70215 , 0.70091 , 0.69966 , 0.69842 , 0.69717 , 0.69591 , +0.69466 , 0.69340 , 0.69214 , 0.69088 , 0.68962 , 0.68835 , 0.68709 , 0.68582 , 0.68455 , 0.68327 , +0.68200 , 0.68072 , 0.67944 , 0.67816 , 0.67688 , 0.67559 , 0.67430 , 0.67301 , 0.67172 , 0.67043 , +0.66913 , 0.66783 , 0.66653 , 0.66523 , 0.66393 , 0.66262 , 0.66131 , 0.66000 , 0.65869 , 0.65738 , +0.65606 , 0.65474 , 0.65342 , 0.65210 , 0.65077 , 0.64945 , 0.64812 , 0.64679 , 0.64546 , 0.64412 , +0.64279 , 0.64145 , 0.64011 , 0.63877 , 0.63742 , 0.63608 , 0.63473 , 0.63338 , 0.63203 , 0.63068 , +0.62932 , 0.62796 , 0.62660 , 0.62524 , 0.62388 , 0.62251 , 0.62115 , 0.61978 , 0.61841 , 0.61704 , +0.61566 , 0.61429 , 0.61291 , 0.61153 , 0.61015 , 0.60876 , 0.60738 , 0.60599 , 0.60460 , 0.60321 , +0.60182 , 0.60042 , 0.59902 , 0.59763 , 0.59622 , 0.59482 , 0.59342 , 0.59201 , 0.59061 , 0.58920 , +0.58779 , 0.58637 , 0.58496 , 0.58354 , 0.58212 , 0.58070 , 0.57928 , 0.57786 , 0.57643 , 0.57501 , +0.57358 , 0.57215 , 0.57071 , 0.56928 , 0.56784 , 0.56641 , 0.56497 , 0.56353 , 0.56208 , 0.56064 , +0.55919 , 0.55775 , 0.55630 , 0.55484 , 0.55339 , 0.55194 , 0.55048 , 0.54902 , 0.54756 , 0.54610 , +0.54464 , 0.54317 , 0.54171 , 0.54024 , 0.53877 , 0.53730 , 0.53583 , 0.53435 , 0.53288 , 0.53140 , +0.52992 , 0.52844 , 0.52696 , 0.52547 , 0.52399 , 0.52250 , 0.52101 , 0.51952 , 0.51803 , 0.51653 , +0.51504 , 0.51354 , 0.51204 , 0.51054 , 0.50904 , 0.50754 , 0.50603 , 0.50453 , 0.50302 , 0.50151 , +0.50000 , 0.49849 , 0.49697 , 0.49546 , 0.49394 , 0.49242 , 0.49090 , 0.48938 , 0.48786 , 0.48634 , +0.48481 , 0.48328 , 0.48175 , 0.48022 , 0.47869 , 0.47716 , 0.47562 , 0.47409 , 0.47255 , 0.47101 , +0.46947 , 0.46793 , 0.46639 , 0.46484 , 0.46330 , 0.46175 , 0.46020 , 0.45865 , 0.45710 , 0.45554 , +0.45399 , 0.45243 , 0.45088 , 0.44932 , 0.44776 , 0.44620 , 0.44464 , 0.44307 , 0.44151 , 0.43994 , +0.43837 , 0.43680 , 0.43523 , 0.43366 , 0.43209 , 0.43051 , 0.42894 , 0.42736 , 0.42578 , 0.42420 , +0.42262 , 0.42104 , 0.41945 , 0.41787 , 0.41628 , 0.41469 , 0.41310 , 0.41151 , 0.40992 , 0.40833 , +0.40674 , 0.40514 , 0.40355 , 0.40195 , 0.40035 , 0.39875 , 0.39715 , 0.39555 , 0.39394 , 0.39234 , +0.39073 , 0.38912 , 0.38752 , 0.38591 , 0.38430 , 0.38268 , 0.38107 , 0.37946 , 0.37784 , 0.37622 , +0.37461 , 0.37299 , 0.37137 , 0.36975 , 0.36812 , 0.36650 , 0.36488 , 0.36325 , 0.36162 , 0.36000 , +0.35837 , 0.35674 , 0.35511 , 0.35347 , 0.35184 , 0.35021 , 0.34857 , 0.34694 , 0.34530 , 0.34366 , +0.34202 , 0.34038 , 0.33874 , 0.33710 , 0.33545 , 0.33381 , 0.33216 , 0.33051 , 0.32887 , 0.32722 , +0.32557 , 0.32392 , 0.32227 , 0.32061 , 0.31896 , 0.31730 , 0.31565 , 0.31399 , 0.31233 , 0.31068 , +0.30902 , 0.30736 , 0.30570 , 0.30403 , 0.30237 , 0.30071 , 0.29904 , 0.29737 , 0.29571 , 0.29404 , +0.29237 , 0.29070 , 0.28903 , 0.28736 , 0.28569 , 0.28402 , 0.28234 , 0.28067 , 0.27899 , 0.27731 , +0.27564 , 0.27396 , 0.27228 , 0.27060 , 0.26892 , 0.26724 , 0.26556 , 0.26387 , 0.26219 , 0.26050 , +0.25882 , 0.25713 , 0.25545 , 0.25376 , 0.25207 , 0.25038 , 0.24869 , 0.24700 , 0.24531 , 0.24362 , +0.24192 , 0.24023 , 0.23853 , 0.23684 , 0.23514 , 0.23345 , 0.23175 , 0.23005 , 0.22835 , 0.22665 , +0.22495 , 0.22325 , 0.22155 , 0.21985 , 0.21814 , 0.21644 , 0.21474 , 0.21303 , 0.21132 , 0.20962 , +0.20791 , 0.20620 , 0.20450 , 0.20279 , 0.20108 , 0.19937 , 0.19766 , 0.19595 , 0.19423 , 0.19252 , +0.19081 , 0.18910 , 0.18738 , 0.18567 , 0.18395 , 0.18224 , 0.18052 , 0.17880 , 0.17708 , 0.17537 , +0.17365 , 0.17193 , 0.17021 , 0.16849 , 0.16677 , 0.16505 , 0.16333 , 0.16160 , 0.15988 , 0.15816 , +0.15643 , 0.15471 , 0.15299 , 0.15126 , 0.14954 , 0.14781 , 0.14608 , 0.14436 , 0.14263 , 0.14090 , +0.13917 , 0.13744 , 0.13572 , 0.13399 , 0.13226 , 0.13053 , 0.12880 , 0.12706 , 0.12533 , 0.12360 , +0.12187 , 0.12014 , 0.11840 , 0.11667 , 0.11494 , 0.11320 , 0.11147 , 0.10973 , 0.10800 , 0.10626 , +0.10453 , 0.10279 , 0.10106 , 0.09932 , 0.09758 , 0.09585 , 0.09411 , 0.09237 , 0.09063 , 0.08889 , +0.08716 , 0.08542 , 0.08368 , 0.08194 , 0.08020 , 0.07846 , 0.07672 , 0.07498 , 0.07324 , 0.07150 , +0.06976 , 0.06802 , 0.06627 , 0.06453 , 0.06279 , 0.06105 , 0.05931 , 0.05756 , 0.05582 , 0.05408 , +0.05234 , 0.05059 , 0.04885 , 0.04711 , 0.04536 , 0.04362 , 0.04188 , 0.04013 , 0.03839 , 0.03664 , +0.03490 , 0.03316 , 0.03141 , 0.02967 , 0.02792 , 0.02618 , 0.02443 , 0.02269 , 0.02094 , 0.01920 , +0.01745 , 0.01571 , 0.01396 , 0.01222 , 0.01047 , 0.00873 , 0.00698 , 0.00524 , 0.00349 , 0.00175 , +0.00000 , -0.00175 , -0.00349 , -0.00524 , -0.00698 , -0.00873 , -0.01047 , -0.01222 , -0.01396 , -0.01571 , +-0.01745 , -0.01920 , -0.02094 , -0.02269 , -0.02443 , -0.02618 , -0.02792 , -0.02967 , -0.03141 , -0.03316 , +-0.03490 , -0.03664 , -0.03839 , -0.04013 , -0.04188 , -0.04362 , -0.04536 , -0.04711 , -0.04885 , -0.05059 , +-0.05234 , -0.05408 , -0.05582 , -0.05756 , -0.05931 , -0.06105 , -0.06279 , -0.06453 , -0.06627 , -0.06802 , +-0.06976 , -0.07150 , -0.07324 , -0.07498 , -0.07672 , -0.07846 , -0.08020 , -0.08194 , -0.08368 , -0.08542 , +-0.08716 , -0.08889 , -0.09063 , -0.09237 , -0.09411 , -0.09585 , -0.09758 , -0.09932 , -0.10106 , -0.10279 , +-0.10453 , -0.10626 , -0.10800 , -0.10973 , -0.11147 , -0.11320 , -0.11494 , -0.11667 , -0.11840 , -0.12014 , +-0.12187 , -0.12360 , -0.12533 , -0.12706 , -0.12880 , -0.13053 , -0.13226 , -0.13399 , -0.13572 , -0.13744 , +-0.13917 , -0.14090 , -0.14263 , -0.14436 , -0.14608 , -0.14781 , -0.14954 , -0.15126 , -0.15299 , -0.15471 , +-0.15643 , -0.15816 , -0.15988 , -0.16160 , -0.16333 , -0.16505 , -0.16677 , -0.16849 , -0.17021 , -0.17193 , +-0.17365 , -0.17537 , -0.17708 , -0.17880 , -0.18052 , -0.18224 , -0.18395 , -0.18567 , -0.18738 , -0.18910 , +-0.19081 , -0.19252 , -0.19423 , -0.19595 , -0.19766 , -0.19937 , -0.20108 , -0.20279 , -0.20450 , -0.20620 , +-0.20791 , -0.20962 , -0.21132 , -0.21303 , -0.21474 , -0.21644 , -0.21814 , -0.21985 , -0.22155 , -0.22325 , +-0.22495 , -0.22665 , -0.22835 , -0.23005 , -0.23175 , -0.23345 , -0.23514 , -0.23684 , -0.23853 , -0.24023 , +-0.24192 , -0.24362 , -0.24531 , -0.24700 , -0.24869 , -0.25038 , -0.25207 , -0.25376 , -0.25545 , -0.25713 , +-0.25882 , -0.26050 , -0.26219 , -0.26387 , -0.26556 , -0.26724 , -0.26892 , -0.27060 , -0.27228 , -0.27396 , +-0.27564 , -0.27731 , -0.27899 , -0.28067 , -0.28234 , -0.28402 , -0.28569 , -0.28736 , -0.28903 , -0.29070 , +-0.29237 , -0.29404 , -0.29571 , -0.29737 , -0.29904 , -0.30071 , -0.30237 , -0.30403 , -0.30570 , -0.30736 , +-0.30902 , -0.31068 , -0.31233 , -0.31399 , -0.31565 , -0.31730 , -0.31896 , -0.32061 , -0.32227 , -0.32392 , +-0.32557 , -0.32722 , -0.32887 , -0.33051 , -0.33216 , -0.33381 , -0.33545 , -0.33710 , -0.33874 , -0.34038 , +-0.34202 , -0.34366 , -0.34530 , -0.34694 , -0.34857 , -0.35021 , -0.35184 , -0.35347 , -0.35511 , -0.35674 , +-0.35837 , -0.36000 , -0.36162 , -0.36325 , -0.36488 , -0.36650 , -0.36812 , -0.36975 , -0.37137 , -0.37299 , +-0.37461 , -0.37622 , -0.37784 , -0.37946 , -0.38107 , -0.38268 , -0.38430 , -0.38591 , -0.38752 , -0.38912 , +-0.39073 , -0.39234 , -0.39394 , -0.39555 , -0.39715 , -0.39875 , -0.40035 , -0.40195 , -0.40355 , -0.40514 , +-0.40674 , -0.40833 , -0.40992 , -0.41151 , -0.41310 , -0.41469 , -0.41628 , -0.41787 , -0.41945 , -0.42104 , +-0.42262 , -0.42420 , -0.42578 , -0.42736 , -0.42894 , -0.43051 , -0.43209 , -0.43366 , -0.43523 , -0.43680 , +-0.43837 , -0.43994 , -0.44151 , -0.44307 , -0.44464 , -0.44620 , -0.44776 , -0.44932 , -0.45088 , -0.45243 , +-0.45399 , -0.45554 , -0.45710 , -0.45865 , -0.46020 , -0.46175 , -0.46330 , -0.46484 , -0.46639 , -0.46793 , +-0.46947 , -0.47101 , -0.47255 , -0.47409 , -0.47562 , -0.47716 , -0.47869 , -0.48022 , -0.48175 , -0.48328 , +-0.48481 , -0.48634 , -0.48786 , -0.48938 , -0.49090 , -0.49242 , -0.49394 , -0.49546 , -0.49697 , -0.49849 , +-0.50000 , -0.50151 , -0.50302 , -0.50453 , -0.50603 , -0.50754 , -0.50904 , -0.51054 , -0.51204 , -0.51354 , +-0.51504 , -0.51653 , -0.51803 , -0.51952 , -0.52101 , -0.52250 , -0.52399 , -0.52547 , -0.52696 , -0.52844 , +-0.52992 , -0.53140 , -0.53288 , -0.53435 , -0.53583 , -0.53730 , -0.53877 , -0.54024 , -0.54171 , -0.54317 , +-0.54464 , -0.54610 , -0.54756 , -0.54902 , -0.55048 , -0.55194 , -0.55339 , -0.55484 , -0.55630 , -0.55775 , +-0.55919 , -0.56064 , -0.56208 , -0.56353 , -0.56497 , -0.56641 , -0.56784 , -0.56928 , -0.57071 , -0.57215 , +-0.57358 , -0.57501 , -0.57643 , -0.57786 , -0.57928 , -0.58070 , -0.58212 , -0.58354 , -0.58496 , -0.58637 , +-0.58779 , -0.58920 , -0.59061 , -0.59201 , -0.59342 , -0.59482 , -0.59622 , -0.59763 , -0.59902 , -0.60042 , +-0.60182 , -0.60321 , -0.60460 , -0.60599 , -0.60738 , -0.60876 , -0.61015 , -0.61153 , -0.61291 , -0.61429 , +-0.61566 , -0.61704 , -0.61841 , -0.61978 , -0.62115 , -0.62251 , -0.62388 , -0.62524 , -0.62660 , -0.62796 , +-0.62932 , -0.63068 , -0.63203 , -0.63338 , -0.63473 , -0.63608 , -0.63742 , -0.63877 , -0.64011 , -0.64145 , +-0.64279 , -0.64412 , -0.64546 , -0.64679 , -0.64812 , -0.64945 , -0.65077 , -0.65210 , -0.65342 , -0.65474 , +-0.65606 , -0.65738 , -0.65869 , -0.66000 , -0.66131 , -0.66262 , -0.66393 , -0.66523 , -0.66653 , -0.66783 , +-0.66913 , -0.67043 , -0.67172 , -0.67301 , -0.67430 , -0.67559 , -0.67688 , -0.67816 , -0.67944 , -0.68072 , +-0.68200 , -0.68327 , -0.68455 , -0.68582 , -0.68709 , -0.68835 , -0.68962 , -0.69088 , -0.69214 , -0.69340 , +-0.69466 , -0.69591 , -0.69717 , -0.69842 , -0.69966 , -0.70091 , -0.70215 , -0.70339 , -0.70463 , -0.70587 , +-0.70711 , -0.70834 , -0.70957 , -0.71080 , -0.71203 , -0.71325 , -0.71447 , -0.71569 , -0.71691 , -0.71813 , +-0.71934 , -0.72055 , -0.72176 , -0.72297 , -0.72417 , -0.72537 , -0.72657 , -0.72777 , -0.72897 , -0.73016 , +-0.73135 , -0.73254 , -0.73373 , -0.73491 , -0.73610 , -0.73728 , -0.73846 , -0.73963 , -0.74080 , -0.74198 , +-0.74314 , -0.74431 , -0.74548 , -0.74664 , -0.74780 , -0.74896 , -0.75011 , -0.75126 , -0.75241 , -0.75356 , +-0.75471 , -0.75585 , -0.75700 , -0.75813 , -0.75927 , -0.76041 , -0.76154 , -0.76267 , -0.76380 , -0.76492 , +-0.76604 , -0.76717 , -0.76828 , -0.76940 , -0.77051 , -0.77162 , -0.77273 , -0.77384 , -0.77494 , -0.77605 , +-0.77715 , -0.77824 , -0.77934 , -0.78043 , -0.78152 , -0.78261 , -0.78369 , -0.78478 , -0.78586 , -0.78694 , +-0.78801 , -0.78908 , -0.79016 , -0.79122 , -0.79229 , -0.79335 , -0.79441 , -0.79547 , -0.79653 , -0.79758 , +-0.79864 , -0.79968 , -0.80073 , -0.80178 , -0.80282 , -0.80386 , -0.80489 , -0.80593 , -0.80696 , -0.80799 , +-0.80902 , -0.81004 , -0.81106 , -0.81208 , -0.81310 , -0.81412 , -0.81513 , -0.81614 , -0.81714 , -0.81815 , +-0.81915 , -0.82015 , -0.82115 , -0.82214 , -0.82314 , -0.82413 , -0.82511 , -0.82610 , -0.82708 , -0.82806 , +-0.82904 , -0.83001 , -0.83098 , -0.83195 , -0.83292 , -0.83389 , -0.83485 , -0.83581 , -0.83676 , -0.83772 , +-0.83867 , -0.83962 , -0.84057 , -0.84151 , -0.84245 , -0.84339 , -0.84433 , -0.84526 , -0.84619 , -0.84712 , +-0.84805 , -0.84897 , -0.84989 , -0.85081 , -0.85173 , -0.85264 , -0.85355 , -0.85446 , -0.85536 , -0.85627 , +-0.85717 , -0.85806 , -0.85896 , -0.85985 , -0.86074 , -0.86163 , -0.86251 , -0.86340 , -0.86427 , -0.86515 , +-0.86603 , -0.86690 , -0.86777 , -0.86863 , -0.86949 , -0.87036 , -0.87121 , -0.87207 , -0.87292 , -0.87377 , +-0.87462 , -0.87546 , -0.87631 , -0.87715 , -0.87798 , -0.87882 , -0.87965 , -0.88048 , -0.88130 , -0.88213 , +-0.88295 , -0.88377 , -0.88458 , -0.88539 , -0.88620 , -0.88701 , -0.88782 , -0.88862 , -0.88942 , -0.89021 , +-0.89101 , -0.89180 , -0.89259 , -0.89337 , -0.89415 , -0.89493 , -0.89571 , -0.89649 , -0.89726 , -0.89803 , +-0.89879 , -0.89956 , -0.90032 , -0.90108 , -0.90183 , -0.90259 , -0.90334 , -0.90408 , -0.90483 , -0.90557 , +-0.90631 , -0.90704 , -0.90778 , -0.90851 , -0.90924 , -0.90996 , -0.91068 , -0.91140 , -0.91212 , -0.91283 , +-0.91355 , -0.91425 , -0.91496 , -0.91566 , -0.91636 , -0.91706 , -0.91775 , -0.91845 , -0.91914 , -0.91982 , +-0.92050 , -0.92119 , -0.92186 , -0.92254 , -0.92321 , -0.92388 , -0.92455 , -0.92521 , -0.92587 , -0.92653 , +-0.92718 , -0.92784 , -0.92849 , -0.92913 , -0.92978 , -0.93042 , -0.93106 , -0.93169 , -0.93232 , -0.93295 , +-0.93358 , -0.93420 , -0.93483 , -0.93544 , -0.93606 , -0.93667 , -0.93728 , -0.93789 , -0.93849 , -0.93909 , +-0.93969 , -0.94029 , -0.94088 , -0.94147 , -0.94206 , -0.94264 , -0.94322 , -0.94380 , -0.94438 , -0.94495 , +-0.94552 , -0.94609 , -0.94665 , -0.94721 , -0.94777 , -0.94832 , -0.94888 , -0.94943 , -0.94997 , -0.95052 , +-0.95106 , -0.95159 , -0.95213 , -0.95266 , -0.95319 , -0.95372 , -0.95424 , -0.95476 , -0.95528 , -0.95579 , +-0.95630 , -0.95681 , -0.95732 , -0.95782 , -0.95832 , -0.95882 , -0.95931 , -0.95981 , -0.96029 , -0.96078 , +-0.96126 , -0.96174 , -0.96222 , -0.96269 , -0.96316 , -0.96363 , -0.96410 , -0.96456 , -0.96502 , -0.96547 , +-0.96593 , -0.96638 , -0.96682 , -0.96727 , -0.96771 , -0.96815 , -0.96858 , -0.96902 , -0.96945 , -0.96987 , +-0.97030 , -0.97072 , -0.97113 , -0.97155 , -0.97196 , -0.97237 , -0.97278 , -0.97318 , -0.97358 , -0.97398 , +-0.97437 , -0.97476 , -0.97515 , -0.97553 , -0.97592 , -0.97630 , -0.97667 , -0.97705 , -0.97742 , -0.97778 , +-0.97815 , -0.97851 , -0.97887 , -0.97922 , -0.97958 , -0.97992 , -0.98027 , -0.98061 , -0.98096 , -0.98129 , +-0.98163 , -0.98196 , -0.98229 , -0.98261 , -0.98294 , -0.98325 , -0.98357 , -0.98389 , -0.98420 , -0.98450 , +-0.98481 , -0.98511 , -0.98541 , -0.98570 , -0.98600 , -0.98629 , -0.98657 , -0.98686 , -0.98714 , -0.98741 , +-0.98769 , -0.98796 , -0.98823 , -0.98849 , -0.98876 , -0.98902 , -0.98927 , -0.98953 , -0.98978 , -0.99002 , +-0.99027 , -0.99051 , -0.99075 , -0.99098 , -0.99122 , -0.99144 , -0.99167 , -0.99189 , -0.99211 , -0.99233 , +-0.99255 , -0.99276 , -0.99297 , -0.99317 , -0.99337 , -0.99357 , -0.99377 , -0.99396 , -0.99415 , -0.99434 , +-0.99452 , -0.99470 , -0.99488 , -0.99506 , -0.99523 , -0.99540 , -0.99556 , -0.99572 , -0.99588 , -0.99604 , +-0.99619 , -0.99635 , -0.99649 , -0.99664 , -0.99678 , -0.99692 , -0.99705 , -0.99719 , -0.99731 , -0.99744 , +-0.99756 , -0.99768 , -0.99780 , -0.99792 , -0.99803 , -0.99813 , -0.99824 , -0.99834 , -0.99844 , -0.99854 , +-0.99863 , -0.99872 , -0.99881 , -0.99889 , -0.99897 , -0.99905 , -0.99912 , -0.99919 , -0.99926 , -0.99933 , +-0.99939 , -0.99945 , -0.99951 , -0.99956 , -0.99961 , -0.99966 , -0.99970 , -0.99974 , -0.99978 , -0.99982 , +-0.99985 , -0.99988 , -0.99990 , -0.99993 , -0.99995 , -0.99996 , -0.99998 , -0.99999 , -0.99999 , -1.00000 , +-1.00000 , -1.00000 , -0.99999 , -0.99999 , -0.99998 , -0.99996 , -0.99995 , -0.99993 , -0.99990 , -0.99988 , +-0.99985 , -0.99982 , -0.99978 , -0.99974 , -0.99970 , -0.99966 , -0.99961 , -0.99956 , -0.99951 , -0.99945 , +-0.99939 , -0.99933 , -0.99926 , -0.99919 , -0.99912 , -0.99905 , -0.99897 , -0.99889 , -0.99881 , -0.99872 , +-0.99863 , -0.99854 , -0.99844 , -0.99834 , -0.99824 , -0.99813 , -0.99803 , -0.99792 , -0.99780 , -0.99768 , +-0.99756 , -0.99744 , -0.99731 , -0.99719 , -0.99705 , -0.99692 , -0.99678 , -0.99664 , -0.99649 , -0.99635 , +-0.99619 , -0.99604 , -0.99588 , -0.99572 , -0.99556 , -0.99540 , -0.99523 , -0.99506 , -0.99488 , -0.99470 , +-0.99452 , -0.99434 , -0.99415 , -0.99396 , -0.99377 , -0.99357 , -0.99337 , -0.99317 , -0.99297 , -0.99276 , +-0.99255 , -0.99233 , -0.99211 , -0.99189 , -0.99167 , -0.99144 , -0.99122 , -0.99098 , -0.99075 , -0.99051 , +-0.99027 , -0.99002 , -0.98978 , -0.98953 , -0.98927 , -0.98902 , -0.98876 , -0.98849 , -0.98823 , -0.98796 , +-0.98769 , -0.98741 , -0.98714 , -0.98686 , -0.98657 , -0.98629 , -0.98600 , -0.98570 , -0.98541 , -0.98511 , +-0.98481 , -0.98450 , -0.98420 , -0.98389 , -0.98357 , -0.98325 , -0.98294 , -0.98261 , -0.98229 , -0.98196 , +-0.98163 , -0.98129 , -0.98096 , -0.98061 , -0.98027 , -0.97992 , -0.97958 , -0.97922 , -0.97887 , -0.97851 , +-0.97815 , -0.97778 , -0.97742 , -0.97705 , -0.97667 , -0.97630 , -0.97592 , -0.97553 , -0.97515 , -0.97476 , +-0.97437 , -0.97398 , -0.97358 , -0.97318 , -0.97278 , -0.97237 , -0.97196 , -0.97155 , -0.97113 , -0.97072 , +-0.97030 , -0.96987 , -0.96945 , -0.96902 , -0.96858 , -0.96815 , -0.96771 , -0.96727 , -0.96682 , -0.96638 , +-0.96593 , -0.96547 , -0.96502 , -0.96456 , -0.96410 , -0.96363 , -0.96316 , -0.96269 , -0.96222 , -0.96174 , +-0.96126 , -0.96078 , -0.96029 , -0.95981 , -0.95931 , -0.95882 , -0.95832 , -0.95782 , -0.95732 , -0.95681 , +-0.95630 , -0.95579 , -0.95528 , -0.95476 , -0.95424 , -0.95372 , -0.95319 , -0.95266 , -0.95213 , -0.95159 , +-0.95106 , -0.95052 , -0.94997 , -0.94943 , -0.94888 , -0.94832 , -0.94777 , -0.94721 , -0.94665 , -0.94609 , +-0.94552 , -0.94495 , -0.94438 , -0.94380 , -0.94322 , -0.94264 , -0.94206 , -0.94147 , -0.94088 , -0.94029 , +-0.93969 , -0.93909 , -0.93849 , -0.93789 , -0.93728 , -0.93667 , -0.93606 , -0.93544 , -0.93483 , -0.93420 , +-0.93358 , -0.93295 , -0.93232 , -0.93169 , -0.93106 , -0.93042 , -0.92978 , -0.92913 , -0.92849 , -0.92784 , +-0.92718 , -0.92653 , -0.92587 , -0.92521 , -0.92455 , -0.92388 , -0.92321 , -0.92254 , -0.92186 , -0.92119 , +-0.92050 , -0.91982 , -0.91914 , -0.91845 , -0.91775 , -0.91706 , -0.91636 , -0.91566 , -0.91496 , -0.91425 , +-0.91355 , -0.91283 , -0.91212 , -0.91140 , -0.91068 , -0.90996 , -0.90924 , -0.90851 , -0.90778 , -0.90704 , +-0.90631 , -0.90557 , -0.90483 , -0.90408 , -0.90334 , -0.90259 , -0.90183 , -0.90108 , -0.90032 , -0.89956 , +-0.89879 , -0.89803 , -0.89726 , -0.89649 , -0.89571 , -0.89493 , -0.89415 , -0.89337 , -0.89259 , -0.89180 , +-0.89101 , -0.89021 , -0.88942 , -0.88862 , -0.88782 , -0.88701 , -0.88620 , -0.88539 , -0.88458 , -0.88377 , +-0.88295 , -0.88213 , -0.88130 , -0.88048 , -0.87965 , -0.87882 , -0.87798 , -0.87715 , -0.87631 , -0.87546 , +-0.87462 , -0.87377 , -0.87292 , -0.87207 , -0.87121 , -0.87036 , -0.86949 , -0.86863 , -0.86777 , -0.86690 , +-0.86603 , -0.86515 , -0.86427 , -0.86340 , -0.86251 , -0.86163 , -0.86074 , -0.85985 , -0.85896 , -0.85806 , +-0.85717 , -0.85627 , -0.85536 , -0.85446 , -0.85355 , -0.85264 , -0.85173 , -0.85081 , -0.84989 , -0.84897 , +-0.84805 , -0.84712 , -0.84619 , -0.84526 , -0.84433 , -0.84339 , -0.84245 , -0.84151 , -0.84057 , -0.83962 , +-0.83867 , -0.83772 , -0.83676 , -0.83581 , -0.83485 , -0.83389 , -0.83292 , -0.83195 , -0.83098 , -0.83001 , +-0.82904 , -0.82806 , -0.82708 , -0.82610 , -0.82511 , -0.82413 , -0.82314 , -0.82214 , -0.82115 , -0.82015 , +-0.81915 , -0.81815 , -0.81714 , -0.81614 , -0.81513 , -0.81412 , -0.81310 , -0.81208 , -0.81106 , -0.81004 , +-0.80902 , -0.80799 , -0.80696 , -0.80593 , -0.80489 , -0.80386 , -0.80282 , -0.80178 , -0.80073 , -0.79968 , +-0.79864 , -0.79758 , -0.79653 , -0.79547 , -0.79441 , -0.79335 , -0.79229 , -0.79122 , -0.79016 , -0.78908 , +-0.78801 , -0.78694 , -0.78586 , -0.78478 , -0.78369 , -0.78261 , -0.78152 , -0.78043 , -0.77934 , -0.77824 , +-0.77715 , -0.77605 , -0.77494 , -0.77384 , -0.77273 , -0.77162 , -0.77051 , -0.76940 , -0.76828 , -0.76717 , +-0.76604 , -0.76492 , -0.76380 , -0.76267 , -0.76154 , -0.76041 , -0.75927 , -0.75813 , -0.75700 , -0.75585 , +-0.75471 , -0.75356 , -0.75241 , -0.75126 , -0.75011 , -0.74896 , -0.74780 , -0.74664 , -0.74548 , -0.74431 , +-0.74314 , -0.74198 , -0.74080 , -0.73963 , -0.73846 , -0.73728 , -0.73610 , -0.73491 , -0.73373 , -0.73254 , +-0.73135 , -0.73016 , -0.72897 , -0.72777 , -0.72657 , -0.72537 , -0.72417 , -0.72297 , -0.72176 , -0.72055 , +-0.71934 , -0.71813 , -0.71691 , -0.71569 , -0.71447 , -0.71325 , -0.71203 , -0.71080 , -0.70957 , -0.70834 , +-0.70711 , -0.70587 , -0.70463 , -0.70339 , -0.70215 , -0.70091 , -0.69966 , -0.69842 , -0.69717 , -0.69591 , +-0.69466 , -0.69340 , -0.69214 , -0.69088 , -0.68962 , -0.68835 , -0.68709 , -0.68582 , -0.68455 , -0.68327 , +-0.68200 , -0.68072 , -0.67944 , -0.67816 , -0.67688 , -0.67559 , -0.67430 , -0.67301 , -0.67172 , -0.67043 , +-0.66913 , -0.66783 , -0.66653 , -0.66523 , -0.66393 , -0.66262 , -0.66131 , -0.66000 , -0.65869 , -0.65738 , +-0.65606 , -0.65474 , -0.65342 , -0.65210 , -0.65077 , -0.64945 , -0.64812 , -0.64679 , -0.64546 , -0.64412 , +-0.64279 , -0.64145 , -0.64011 , -0.63877 , -0.63742 , -0.63608 , -0.63473 , -0.63338 , -0.63203 , -0.63068 , +-0.62932 , -0.62796 , -0.62660 , -0.62524 , -0.62388 , -0.62251 , -0.62115 , -0.61978 , -0.61841 , -0.61704 , +-0.61566 , -0.61429 , -0.61291 , -0.61153 , -0.61015 , -0.60876 , -0.60738 , -0.60599 , -0.60460 , -0.60321 , +-0.60182 , -0.60042 , -0.59902 , -0.59763 , -0.59622 , -0.59482 , -0.59342 , -0.59201 , -0.59061 , -0.58920 , +-0.58779 , -0.58637 , -0.58496 , -0.58354 , -0.58212 , -0.58070 , -0.57928 , -0.57786 , -0.57643 , -0.57501 , +-0.57358 , -0.57215 , -0.57071 , -0.56928 , -0.56784 , -0.56641 , -0.56497 , -0.56353 , -0.56208 , -0.56064 , +-0.55919 , -0.55775 , -0.55630 , -0.55484 , -0.55339 , -0.55194 , -0.55048 , -0.54902 , -0.54756 , -0.54610 , +-0.54464 , -0.54317 , -0.54171 , -0.54024 , -0.53877 , -0.53730 , -0.53583 , -0.53435 , -0.53288 , -0.53140 , +-0.52992 , -0.52844 , -0.52696 , -0.52547 , -0.52399 , -0.52250 , -0.52101 , -0.51952 , -0.51803 , -0.51653 , +-0.51504 , -0.51354 , -0.51204 , -0.51054 , -0.50904 , -0.50754 , -0.50603 , -0.50453 , -0.50302 , -0.50151 , +-0.50000 , -0.49849 , -0.49697 , -0.49546 , -0.49394 , -0.49242 , -0.49090 , -0.48938 , -0.48786 , -0.48634 , +-0.48481 , -0.48328 , -0.48175 , -0.48022 , -0.47869 , -0.47716 , -0.47562 , -0.47409 , -0.47255 , -0.47101 , +-0.46947 , -0.46793 , -0.46639 , -0.46484 , -0.46330 , -0.46175 , -0.46020 , -0.45865 , -0.45710 , -0.45554 , +-0.45399 , -0.45243 , -0.45088 , -0.44932 , -0.44776 , -0.44620 , -0.44464 , -0.44307 , -0.44151 , -0.43994 , +-0.43837 , -0.43680 , -0.43523 , -0.43366 , -0.43209 , -0.43051 , -0.42894 , -0.42736 , -0.42578 , -0.42420 , +-0.42262 , -0.42104 , -0.41945 , -0.41787 , -0.41628 , -0.41469 , -0.41310 , -0.41151 , -0.40992 , -0.40833 , +-0.40674 , -0.40514 , -0.40355 , -0.40195 , -0.40035 , -0.39875 , -0.39715 , -0.39555 , -0.39394 , -0.39234 , +-0.39073 , -0.38912 , -0.38752 , -0.38591 , -0.38430 , -0.38268 , -0.38107 , -0.37946 , -0.37784 , -0.37622 , +-0.37461 , -0.37299 , -0.37137 , -0.36975 , -0.36812 , -0.36650 , -0.36488 , -0.36325 , -0.36162 , -0.36000 , +-0.35837 , -0.35674 , -0.35511 , -0.35347 , -0.35184 , -0.35021 , -0.34857 , -0.34694 , -0.34530 , -0.34366 , +-0.34202 , -0.34038 , -0.33874 , -0.33710 , -0.33545 , -0.33381 , -0.33216 , -0.33051 , -0.32887 , -0.32722 , +-0.32557 , -0.32392 , -0.32227 , -0.32061 , -0.31896 , -0.31730 , -0.31565 , -0.31399 , -0.31233 , -0.31068 , +-0.30902 , -0.30736 , -0.30570 , -0.30403 , -0.30237 , -0.30071 , -0.29904 , -0.29737 , -0.29571 , -0.29404 , +-0.29237 , -0.29070 , -0.28903 , -0.28736 , -0.28569 , -0.28402 , -0.28234 , -0.28067 , -0.27899 , -0.27731 , +-0.27564 , -0.27396 , -0.27228 , -0.27060 , -0.26892 , -0.26724 , -0.26556 , -0.26387 , -0.26219 , -0.26050 , +-0.25882 , -0.25713 , -0.25545 , -0.25376 , -0.25207 , -0.25038 , -0.24869 , -0.24700 , -0.24531 , -0.24362 , +-0.24192 , -0.24023 , -0.23853 , -0.23684 , -0.23514 , -0.23345 , -0.23175 , -0.23005 , -0.22835 , -0.22665 , +-0.22495 , -0.22325 , -0.22155 , -0.21985 , -0.21814 , -0.21644 , -0.21474 , -0.21303 , -0.21132 , -0.20962 , +-0.20791 , -0.20620 , -0.20450 , -0.20279 , -0.20108 , -0.19937 , -0.19766 , -0.19595 , -0.19423 , -0.19252 , +-0.19081 , -0.18910 , -0.18738 , -0.18567 , -0.18395 , -0.18224 , -0.18052 , -0.17880 , -0.17708 , -0.17537 , +-0.17365 , -0.17193 , -0.17021 , -0.16849 , -0.16677 , -0.16505 , -0.16333 , -0.16160 , -0.15988 , -0.15816 , +-0.15643 , -0.15471 , -0.15299 , -0.15126 , -0.14954 , -0.14781 , -0.14608 , -0.14436 , -0.14263 , -0.14090 , +-0.13917 , -0.13744 , -0.13572 , -0.13399 , -0.13226 , -0.13053 , -0.12880 , -0.12706 , -0.12533 , -0.12360 , +-0.12187 , -0.12014 , -0.11840 , -0.11667 , -0.11494 , -0.11320 , -0.11147 , -0.10973 , -0.10800 , -0.10626 , +-0.10453 , -0.10279 , -0.10106 , -0.09932 , -0.09758 , -0.09585 , -0.09411 , -0.09237 , -0.09063 , -0.08889 , +-0.08716 , -0.08542 , -0.08368 , -0.08194 , -0.08020 , -0.07846 , -0.07672 , -0.07498 , -0.07324 , -0.07150 , +-0.06976 , -0.06802 , -0.06627 , -0.06453 , -0.06279 , -0.06105 , -0.05931 , -0.05756 , -0.05582 , -0.05408 , +-0.05234 , -0.05059 , -0.04885 , -0.04711 , -0.04536 , -0.04362 , -0.04188 , -0.04013 , -0.03839 , -0.03664 , +-0.03490 , -0.03316 , -0.03141 , -0.02967 , -0.02792 , -0.02618 , -0.02443 , -0.02269 , -0.02094 , -0.01920 , +-0.01745 , -0.01571 , -0.01396 , -0.01222 , -0.01047 , -0.00873 , -0.00698 , -0.00524 , -0.00349 , -0.00175 , +0.00000 , 0.00175 , 0.00349 , 0.00524 , 0.00698 , 0.00873 , 0.01047 , 0.01222 , 0.01396 , 0.01571 , +0.01745 , 0.01920 , 0.02094 , 0.02269 , 0.02443 , 0.02618 , 0.02792 , 0.02967 , 0.03141 , 0.03316 , +0.03490 , 0.03664 , 0.03839 , 0.04013 , 0.04188 , 0.04362 , 0.04536 , 0.04711 , 0.04885 , 0.05059 , +0.05234 , 0.05408 , 0.05582 , 0.05756 , 0.05931 , 0.06105 , 0.06279 , 0.06453 , 0.06627 , 0.06802 , +0.06976 , 0.07150 , 0.07324 , 0.07498 , 0.07672 , 0.07846 , 0.08020 , 0.08194 , 0.08368 , 0.08542 , +0.08716 , 0.08889 , 0.09063 , 0.09237 , 0.09411 , 0.09585 , 0.09758 , 0.09932 , 0.10106 , 0.10279 , +0.10453 , 0.10626 , 0.10800 , 0.10973 , 0.11147 , 0.11320 , 0.11494 , 0.11667 , 0.11840 , 0.12014 , +0.12187 , 0.12360 , 0.12533 , 0.12706 , 0.12880 , 0.13053 , 0.13226 , 0.13399 , 0.13572 , 0.13744 , +0.13917 , 0.14090 , 0.14263 , 0.14436 , 0.14608 , 0.14781 , 0.14954 , 0.15126 , 0.15299 , 0.15471 , +0.15643 , 0.15816 , 0.15988 , 0.16160 , 0.16333 , 0.16505 , 0.16677 , 0.16849 , 0.17021 , 0.17193 , +0.17365 , 0.17537 , 0.17708 , 0.17880 , 0.18052 , 0.18224 , 0.18395 , 0.18567 , 0.18738 , 0.18910 , +0.19081 , 0.19252 , 0.19423 , 0.19595 , 0.19766 , 0.19937 , 0.20108 , 0.20279 , 0.20450 , 0.20620 , +0.20791 , 0.20962 , 0.21132 , 0.21303 , 0.21474 , 0.21644 , 0.21814 , 0.21985 , 0.22155 , 0.22325 , +0.22495 , 0.22665 , 0.22835 , 0.23005 , 0.23175 , 0.23345 , 0.23514 , 0.23684 , 0.23853 , 0.24023 , +0.24192 , 0.24362 , 0.24531 , 0.24700 , 0.24869 , 0.25038 , 0.25207 , 0.25376 , 0.25545 , 0.25713 , +0.25882 , 0.26050 , 0.26219 , 0.26387 , 0.26556 , 0.26724 , 0.26892 , 0.27060 , 0.27228 , 0.27396 , +0.27564 , 0.27731 , 0.27899 , 0.28067 , 0.28234 , 0.28402 , 0.28569 , 0.28736 , 0.28903 , 0.29070 , +0.29237 , 0.29404 , 0.29571 , 0.29737 , 0.29904 , 0.30071 , 0.30237 , 0.30403 , 0.30570 , 0.30736 , +0.30902 , 0.31068 , 0.31233 , 0.31399 , 0.31565 , 0.31730 , 0.31896 , 0.32061 , 0.32227 , 0.32392 , +0.32557 , 0.32722 , 0.32887 , 0.33051 , 0.33216 , 0.33381 , 0.33545 , 0.33710 , 0.33874 , 0.34038 , +0.34202 , 0.34366 , 0.34530 , 0.34694 , 0.34857 , 0.35021 , 0.35184 , 0.35347 , 0.35511 , 0.35674 , +0.35837 , 0.36000 , 0.36162 , 0.36325 , 0.36488 , 0.36650 , 0.36812 , 0.36975 , 0.37137 , 0.37299 , +0.37461 , 0.37622 , 0.37784 , 0.37946 , 0.38107 , 0.38268 , 0.38430 , 0.38591 , 0.38752 , 0.38912 , +0.39073 , 0.39234 , 0.39394 , 0.39555 , 0.39715 , 0.39875 , 0.40035 , 0.40195 , 0.40355 , 0.40514 , +0.40674 , 0.40833 , 0.40992 , 0.41151 , 0.41310 , 0.41469 , 0.41628 , 0.41787 , 0.41945 , 0.42104 , +0.42262 , 0.42420 , 0.42578 , 0.42736 , 0.42894 , 0.43051 , 0.43209 , 0.43366 , 0.43523 , 0.43680 , +0.43837 , 0.43994 , 0.44151 , 0.44307 , 0.44464 , 0.44620 , 0.44776 , 0.44932 , 0.45088 , 0.45243 , +0.45399 , 0.45554 , 0.45710 , 0.45865 , 0.46020 , 0.46175 , 0.46330 , 0.46484 , 0.46639 , 0.46793 , +0.46947 , 0.47101 , 0.47255 , 0.47409 , 0.47562 , 0.47716 , 0.47869 , 0.48022 , 0.48175 , 0.48328 , +0.48481 , 0.48634 , 0.48786 , 0.48938 , 0.49090 , 0.49242 , 0.49394 , 0.49546 , 0.49697 , 0.49849 , +0.50000 , 0.50151 , 0.50302 , 0.50453 , 0.50603 , 0.50754 , 0.50904 , 0.51054 , 0.51204 , 0.51354 , +0.51504 , 0.51653 , 0.51803 , 0.51952 , 0.52101 , 0.52250 , 0.52399 , 0.52547 , 0.52696 , 0.52844 , +0.52992 , 0.53140 , 0.53288 , 0.53435 , 0.53583 , 0.53730 , 0.53877 , 0.54024 , 0.54171 , 0.54317 , +0.54464 , 0.54610 , 0.54756 , 0.54902 , 0.55048 , 0.55194 , 0.55339 , 0.55484 , 0.55630 , 0.55775 , +0.55919 , 0.56064 , 0.56208 , 0.56353 , 0.56497 , 0.56641 , 0.56784 , 0.56928 , 0.57071 , 0.57215 , +0.57358 , 0.57501 , 0.57643 , 0.57786 , 0.57928 , 0.58070 , 0.58212 , 0.58354 , 0.58496 , 0.58637 , +0.58779 , 0.58920 , 0.59061 , 0.59201 , 0.59342 , 0.59482 , 0.59622 , 0.59763 , 0.59902 , 0.60042 , +0.60182 , 0.60321 , 0.60460 , 0.60599 , 0.60738 , 0.60876 , 0.61015 , 0.61153 , 0.61291 , 0.61429 , +0.61566 , 0.61704 , 0.61841 , 0.61978 , 0.62115 , 0.62251 , 0.62388 , 0.62524 , 0.62660 , 0.62796 , +0.62932 , 0.63068 , 0.63203 , 0.63338 , 0.63473 , 0.63608 , 0.63742 , 0.63877 , 0.64011 , 0.64145 , +0.64279 , 0.64412 , 0.64546 , 0.64679 , 0.64812 , 0.64945 , 0.65077 , 0.65210 , 0.65342 , 0.65474 , +0.65606 , 0.65738 , 0.65869 , 0.66000 , 0.66131 , 0.66262 , 0.66393 , 0.66523 , 0.66653 , 0.66783 , +0.66913 , 0.67043 , 0.67172 , 0.67301 , 0.67430 , 0.67559 , 0.67688 , 0.67816 , 0.67944 , 0.68072 , +0.68200 , 0.68327 , 0.68455 , 0.68582 , 0.68709 , 0.68835 , 0.68962 , 0.69088 , 0.69214 , 0.69340 , +0.69466 , 0.69591 , 0.69717 , 0.69842 , 0.69966 , 0.70091 , 0.70215 , 0.70339 , 0.70463 , 0.70587 , +0.70711 , 0.70834 , 0.70957 , 0.71080 , 0.71203 , 0.71325 , 0.71447 , 0.71569 , 0.71691 , 0.71813 , +0.71934 , 0.72055 , 0.72176 , 0.72297 , 0.72417 , 0.72537 , 0.72657 , 0.72777 , 0.72897 , 0.73016 , +0.73135 , 0.73254 , 0.73373 , 0.73491 , 0.73610 , 0.73728 , 0.73846 , 0.73963 , 0.74080 , 0.74198 , +0.74314 , 0.74431 , 0.74548 , 0.74664 , 0.74780 , 0.74896 , 0.75011 , 0.75126 , 0.75241 , 0.75356 , +0.75471 , 0.75585 , 0.75700 , 0.75813 , 0.75927 , 0.76041 , 0.76154 , 0.76267 , 0.76380 , 0.76492 , +0.76604 , 0.76717 , 0.76828 , 0.76940 , 0.77051 , 0.77162 , 0.77273 , 0.77384 , 0.77494 , 0.77605 , +0.77715 , 0.77824 , 0.77934 , 0.78043 , 0.78152 , 0.78261 , 0.78369 , 0.78478 , 0.78586 , 0.78694 , +0.78801 , 0.78908 , 0.79016 , 0.79122 , 0.79229 , 0.79335 , 0.79441 , 0.79547 , 0.79653 , 0.79758 , +0.79864 , 0.79968 , 0.80073 , 0.80178 , 0.80282 , 0.80386 , 0.80489 , 0.80593 , 0.80696 , 0.80799 , +0.80902 , 0.81004 , 0.81106 , 0.81208 , 0.81310 , 0.81412 , 0.81513 , 0.81614 , 0.81714 , 0.81815 , +0.81915 , 0.82015 , 0.82115 , 0.82214 , 0.82314 , 0.82413 , 0.82511 , 0.82610 , 0.82708 , 0.82806 , +0.82904 , 0.83001 , 0.83098 , 0.83195 , 0.83292 , 0.83389 , 0.83485 , 0.83581 , 0.83676 , 0.83772 , +0.83867 , 0.83962 , 0.84057 , 0.84151 , 0.84245 , 0.84339 , 0.84433 , 0.84526 , 0.84619 , 0.84712 , +0.84805 , 0.84897 , 0.84989 , 0.85081 , 0.85173 , 0.85264 , 0.85355 , 0.85446 , 0.85536 , 0.85627 , +0.85717 , 0.85806 , 0.85896 , 0.85985 , 0.86074 , 0.86163 , 0.86251 , 0.86340 , 0.86427 , 0.86515 , +0.86603 , 0.86690 , 0.86777 , 0.86863 , 0.86949 , 0.87036 , 0.87121 , 0.87207 , 0.87292 , 0.87377 , +0.87462 , 0.87546 , 0.87631 , 0.87715 , 0.87798 , 0.87882 , 0.87965 , 0.88048 , 0.88130 , 0.88213 , +0.88295 , 0.88377 , 0.88458 , 0.88539 , 0.88620 , 0.88701 , 0.88782 , 0.88862 , 0.88942 , 0.89021 , +0.89101 , 0.89180 , 0.89259 , 0.89337 , 0.89415 , 0.89493 , 0.89571 , 0.89649 , 0.89726 , 0.89803 , +0.89879 , 0.89956 , 0.90032 , 0.90108 , 0.90183 , 0.90259 , 0.90334 , 0.90408 , 0.90483 , 0.90557 , +0.90631 , 0.90704 , 0.90778 , 0.90851 , 0.90924 , 0.90996 , 0.91068 , 0.91140 , 0.91212 , 0.91283 , +0.91355 , 0.91425 , 0.91496 , 0.91566 , 0.91636 , 0.91706 , 0.91775 , 0.91845 , 0.91914 , 0.91982 , +0.92050 , 0.92119 , 0.92186 , 0.92254 , 0.92321 , 0.92388 , 0.92455 , 0.92521 , 0.92587 , 0.92653 , +0.92718 , 0.92784 , 0.92849 , 0.92913 , 0.92978 , 0.93042 , 0.93106 , 0.93169 , 0.93232 , 0.93295 , +0.93358 , 0.93420 , 0.93483 , 0.93544 , 0.93606 , 0.93667 , 0.93728 , 0.93789 , 0.93849 , 0.93909 , +0.93969 , 0.94029 , 0.94088 , 0.94147 , 0.94206 , 0.94264 , 0.94322 , 0.94380 , 0.94438 , 0.94495 , +0.94552 , 0.94609 , 0.94665 , 0.94721 , 0.94777 , 0.94832 , 0.94888 , 0.94943 , 0.94997 , 0.95052 , +0.95106 , 0.95159 , 0.95213 , 0.95266 , 0.95319 , 0.95372 , 0.95424 , 0.95476 , 0.95528 , 0.95579 , +0.95630 , 0.95681 , 0.95732 , 0.95782 , 0.95832 , 0.95882 , 0.95931 , 0.95981 , 0.96029 , 0.96078 , +0.96126 , 0.96174 , 0.96222 , 0.96269 , 0.96316 , 0.96363 , 0.96410 , 0.96456 , 0.96502 , 0.96547 , +0.96593 , 0.96638 , 0.96682 , 0.96727 , 0.96771 , 0.96815 , 0.96858 , 0.96902 , 0.96945 , 0.96987 , +0.97030 , 0.97072 , 0.97113 , 0.97155 , 0.97196 , 0.97237 , 0.97278 , 0.97318 , 0.97358 , 0.97398 , +0.97437 , 0.97476 , 0.97515 , 0.97553 , 0.97592 , 0.97630 , 0.97667 , 0.97705 , 0.97742 , 0.97778 , +0.97815 , 0.97851 , 0.97887 , 0.97922 , 0.97958 , 0.97992 , 0.98027 , 0.98061 , 0.98096 , 0.98129 , +0.98163 , 0.98196 , 0.98229 , 0.98261 , 0.98294 , 0.98325 , 0.98357 , 0.98389 , 0.98420 , 0.98450 , +0.98481 , 0.98511 , 0.98541 , 0.98570 , 0.98600 , 0.98629 , 0.98657 , 0.98686 , 0.98714 , 0.98741 , +0.98769 , 0.98796 , 0.98823 , 0.98849 , 0.98876 , 0.98902 , 0.98927 , 0.98953 , 0.98978 , 0.99002 , +0.99027 , 0.99051 , 0.99075 , 0.99098 , 0.99122 , 0.99144 , 0.99167 , 0.99189 , 0.99211 , 0.99233 , +0.99255 , 0.99276 , 0.99297 , 0.99317 , 0.99337 , 0.99357 , 0.99377 , 0.99396 , 0.99415 , 0.99434 , +0.99452 , 0.99470 , 0.99488 , 0.99506 , 0.99523 , 0.99540 , 0.99556 , 0.99572 , 0.99588 , 0.99604 , +0.99619 , 0.99635 , 0.99649 , 0.99664 , 0.99678 , 0.99692 , 0.99705 , 0.99719 , 0.99731 , 0.99744 , +0.99756 , 0.99768 , 0.99780 , 0.99792 , 0.99803 , 0.99813 , 0.99824 , 0.99834 , 0.99844 , 0.99854 , +0.99863 , 0.99872 , 0.99881 , 0.99889 , 0.99897 , 0.99905 , 0.99912 , 0.99919 , 0.99926 , 0.99933 , +0.99939 , 0.99945 , 0.99951 , 0.99956 , 0.99961 , 0.99966 , 0.99970 , 0.99974 , 0.99978 , 0.99982 , +0.99985 , 0.99988 , 0.99990 , 0.99993 , 0.99995 , 0.99996 , 0.99998 , 0.99999 , 0.99999 , 1.00000 , +}; +*/ +#endif /*_MATH_TABLE_H_*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/minilib/switch.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,54 @@ +#include "mbed.h" +#include "extern.h" + + +uint8_t _samples[4]={0}; +uint8_t _output[4]={0}; +uint8_t _output_last[4]={0}; +uint8_t _rising_flag[4]={0}; + +void Sw_sample(void) { + int i; + for(i=0; i<4; i++){ + _output_last[i] = _output[i]; + _output[i] = Sw[i].read(); + if (!_output[i] && _output_last[i]) + { + _rising_flag[i]++; + } + } + //pc.printf("food%d\r\n",_output_last[0]); +} +// return number of rising edges +uint8_t Sw_count(uint8_t pin) { + //pin...from 0 to 3 + if(pin>=4) return 0; + uint8_t return_value = _rising_flag[pin]; + _rising_flag[pin] = 0; + return(return_value); + } +// return the debounced status +uint8_t ReadSw(void){ +/****** + *return : sw_state + *スイッチを押したときの動作はdef.hを参照 + *チャタリング防止ライブラリ採用式 + *同時押しは判別されない + *****/ + uint8_t i,result; + for(i=result=0; i<4; i++){ + if(Sw_count(i) > 0){ + result = i+1; + } + } + return result; +} +uint8_t CountSw(uint8_t pin){ +/****** + *return : sw_state + *スイッチを押したときの動作はdef.hを参照 + *チャタリング防止ライブラリ採用式 + *同時押しは判別されない + *****/ + return (Sw_count(pin) > 0); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/minilib/switch.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,11 @@ +#ifndef _SWITCH_H_ +#define _SWITCH_H_ + +void Sw_sample(void); +// return number of rising edges +uint8_t Sw_count(uint8_t pin); +// return the debounced status + +uint8_t ReadSw(void); +uint8_t CountSw(uint8_t pin); +#endif /*_SWITCH_H_*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/minilib/txrx.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,78 @@ +#include "mbed.h" +#include "txrx.h" +#include "def.h" + +#include "extern.h" + +void cls() { + for(int i=0;i<DATA_NUM;i++) INdata[i]=0; +} +void TX(void){//送信バッファ空き割り込み用関数 + + static uint8_t Tx=DATA_NUM, i; + static uint8_t TXdata[DATA_NUM]={TX_KEYCODE}; + static uint8_t TXcheckcode=0; + + if(Tx >= DATA_NUM){ + + TXdata[KEY] = TX_KEYCODE;//Hello. + + TXdata[1] = EXdata[1]; + TXdata[2] = EXdata[2]; + TXdata[3] = EXdata[3]; + TXdata[4] = EXdata[4]; + TXdata[5] = EXdata[5]; + TXdata[6] = EXdata[6]; + TXdata[7] = EXdata[7]; + TXdata[8] = EXdata[8]; + //送信するデータ = メインで処理されたデータ + + for(i=KEY+1, TXcheckcode=0; i<CHECK; i++){//CHECKCODEの生成 + TXcheckcode ^= TXdata[i]; + } + + TXdata[CHECK] = TXcheckcode;//Good bye. + Tx=0;//配列をリセット + + } + RN42.putc(TXdata[Tx]);//データを送信する + Tx++;//配列を入れ替える + +} +void RX(void){//受信割り込み用関数 + + static uint8_t Rx=0, i; + static uint8_t RXdata[DATA_NUM]={RX_KEYCODE}; + static uint8_t RXcheckcode=0; + + RXdata[Rx] = RN42.getc();//データを受け取る + + if(RXdata[KEY]==RX_KEYCODE){//KEYCODEが一致したら配列を入れ替える + Rx++; + } + + if(Rx==CHECK){//CHECKCODEの生成 + for(i=KEY+1, RXcheckcode=0; i<CHECK; i++){ + RXcheckcode ^= RXdata[i]; + } + } + + if(Rx >= DATA_NUM){ + if(RXdata[CHECK]==RXcheckcode){//CHECKCODEが合致したらデータを適用する + + Stp.attach(&cls, .5); + INdata[1] = RXdata[1]; + INdata[2] = RXdata[2]; + INdata[3] = RXdata[3]; + INdata[4] = RXdata[4]; + INdata[5] = RXdata[5]; + INdata[6] = RXdata[6]; + INdata[7] = RXdata[7]; + INdata[8] = RXdata[8]; + //メインで処理されるデータ = 受け取ったデータ + + } + Rx=0;//配列をリセット + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/minilib/txrx.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,8 @@ +#ifndef _TXRX_H_ +#define _TXRX_H_ + +void TX(void);//送信バッファ空き割り込み用関数 +void RX(void);//受信割り込み用関数 +void cls(void); + +#endif /*_TXRX_H_*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/minilib/wordString2.cpp Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,70 @@ +#include "mbed.h" +#include "def.h" + +#include "extern.h" + +using namespace std; +//string StringFIN; + +string Int2Char2String(int number) +{ + char str[5]; + sprintf(str, "%d", number); + string ss; + ss = str; + return ss; +} + +void array2(int power1,int power2,int power3,int power4) +{ + int input[4] = {power1,power2,power3,power4}; + int value; + string StringA[4] = {"0","0","0","0"}; + + + string StringX = "0"; + string StringY = "0"; + string StringZ = "0"; + string String0 = "0"; + + StringFIN = "0"; + + for(int i = 0 ; i < 4; i++){ + + value = input[i]; + + StringX = Int2Char2String(i+1); + + if( (value < 0) && (value >= -100) ){ + StringY = "R"; + value = abs(value); + StringZ = Int2Char2String(value); + }else if( (value >= 0) && (value <= 100) ){ + StringY = "F"; + StringZ = Int2Char2String(value); + }else{ + value = abs(value); + StringY = "F"; + StringZ = "000"; + } + + if(value < 10){ + String0 = "00"; + StringZ = String0 + StringZ; + }else if(value < 100) + { + String0 = "0"; + StringZ = String0 + StringZ; + }else{ + + } + + StringA[i] = (StringX + StringY + StringZ); + + if(i == 0)StringFIN = StringA[i]; + else StringFIN += StringA[i]; + + } + + StringFIN += "\r\n"; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/minilib/wordString2.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,7 @@ +#ifndef _WORD_STRING_2_H_ +#define _WORD_STRING_2_H_ + +string Int2Char2String(int number); +void array2(int power1,int power2,int power3,int power4); + +#endif /*_WORD_STRING_2_H_*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setting/ActiveConfig.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,75 @@ +#ifndef _ACTIVE_CONFIG_H_ +#define _ACTIVE_CONFIG_H_ + +#include "mbed.h" +#include "extern.h" + + + +#ifdef RED_CAT + +const ActiveItem static act[STRATEGY_NUM]={ + {"NormalAtk_______", modeAttack0, MODE_ATTACK0}, + {"Libero__________", modeAttack1, MODE_ATTACK1}, + {"NonDri_Libero___", modeAttack2, MODE_ATTACK2}, + {"NonDri_NormalAtk", modeAttack3, MODE_ATTACK3}, + {"ORIGIN__________", modeAttack4, MODE_ATTACK4}, + {"NormalAtk_______", modeAttack5, MODE_ATTACK5}, + + {"NormalAtk_______", modeDebug0, MODE_DEBUG0}, + {"NormalAtk_______", modeDebug1, MODE_DEBUG1}, + {"NonLn_Libero____", modeDebug2, MODE_DEBUG2}, + {"NonLn_NormalAtk_", modeDebug3, MODE_DEBUG3}, + {"NonIr_Libero____", modeDebug4, MODE_DEBUG4}, + {"NonIr_NormalAtk_", modeDebug5, MODE_DEBUG5}, +}; + +#endif /*RED_CAT*/ + +#ifdef GREEN_CAT + + +const ActiveItem static act[STRATEGY_NUM]={ + {"Libero__________", modeAttack1, MODE_ATTACK1}, + {"NormalAtk_______", modeAttack0, MODE_ATTACK0}, + {"NonDri_Libero___", modeAttack2, MODE_ATTACK2}, + {"NonDri_NormalAtk", modeAttack3, MODE_ATTACK3}, + {"ORIGIN__________", modeAttack4, MODE_ATTACK4}, + {"NormalAtk_______", modeAttack5, MODE_ATTACK5}, + + {"NormalAtk_______", modeDebug0, MODE_DEBUG0}, + {"NormalAtk_______", modeDebug1, MODE_DEBUG1}, + {"NonLn_Libero____", modeDebug2, MODE_DEBUG2}, + {"NonLn_NormalAtk_", modeDebug3, MODE_DEBUG3}, + {"NonIr_Libero____", modeDebug4, MODE_DEBUG4}, + {"NonIr_NormalAtk_", modeDebug5, MODE_DEBUG5}, +}; + +#endif /*GREEN_CAT*/ + +/* +//{"modeAttack5_____", modeAttack5, MODE_ATTACK5}, +//{"modeAttack2_____", modeAttack2, MODE_ATTACK2}, +{"modeAttack4_____", modeAttack4, MODE_ATTACK4}, +//{"modeAttack0_____", modeAttack0, MODE_ATTACK0}, +{"modeAttack1_____", modeAttack1, MODE_ATTACK1}, +{"modeAttack2_____", modeAttack2, MODE_ATTACK2}, +{"modeAttack3_____", modeAttack3, MODE_ATTACK3}, +{"modeAttack4_____", modeAttack4, MODE_ATTACK4}, +{"modeAttack5_____", modeAttack5, MODE_ATTACK5}, + +{"modeDebug0______", modeDebug0, MODE_DEBUG0}, +{"modeDebug1______", modeDebug1, MODE_DEBUG1}, +{"modeDebug2______", modeDebug2, MODE_DEBUG2}, +{"modeDebug3______", modeDebug3, MODE_DEBUG3}, +{"modeDebug4______", modeDebug4, MODE_DEBUG4}, +{"modeDebug5______", modeDebug5, MODE_DEBUG5}, +*/ + + +//char LcdStr[LCD_COLUMN_NUM]; +//void (*ActiveFunction)(void); +//uint16_t tag_num; + + +#endif /*_ACTIVE_CONFIG_H_*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setting/CommandConfig.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,31 @@ +#ifndef _COMMAND_CONFIG_H_ +#define _COMMAND_CONFIG_H_ + +#include "mbed.h" +#include "extern.h" + +const CommandItem static item[STATE_NUM_Y]={ + {{"Start_","Active","______","______"}, 2, Start, START}, + {{"TrnSrt","Active","______","______"}, 2, TurnAndStart, TURN_AND_START}, + {{"Ir____","IrSpot","IrNote","IrPstn"}, 4, GetIr, GET_IR}, + {{"Sens0_","LnABC_","PING__","BallAn"}, 4, GetSns0, GET_SNS0}, + {{"Cmps__","cmps__","CpsRst","______"}, 3, RwPid, RW_PID}, + {{"ClbTrn","Tuning","______","______"}, 2, CalibrationTurn, CALIBRATION_TURN}, + {{"ClbEoE","EntExi","______","______"}, 3, CalibrationEnterOrExit, CALIBRATION_ENTER_OR_EXIT}, + {{"PowUP_","NEXT__","CHANGE","______"}, 3, SetPowerDown, SET_POWER_DOWN}, + {{"PowDWN","NEXT__","CHANGE","______"}, 3, SetPowerUp, SET_POWER_UP}, + {{"Reset_","ByeBye","______","______"}, 2, SoftReset, SOFT_RESET}, + {{"StrUP_","NEXT__","CHANGE","______"}, 3, SetStrategyDown, SET_STRATEGY_DOWN}, + {{"StrDWN","NEXT__","CHANGE","______"}, 3, SetStrategyUp, SET_STRATEGY_UP}, + {{"Kicker","DRIVE_","______","______"}, 2, DriveKicker, DRIVE_KICKER}, + {{"Dribbl","DRIVE_","______","______"}, 2, DriveDribblerAndKicker,DRIVE_DRIBBLER_AND_KICKER}, + {{"Start2","Active","______","______"}, 2, Start2, START2}, + {{"None__","Strgy_","Power_","SftRst"}, 4, ZeroFunction, ZERO_FUNCTION}, + + //char LcdStr[STATE_NUM_X][BUFSIZE]; + //uint8_t str_num; + //uint8_t (*CommandFunction)(uint8_t x); + //uint16_t tag_num; +}; + +#endif /*_COMMAND_CONFIG_H_*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setting/IrConfig.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,789 @@ +#ifndef _IR_CONFIG_H_ +#define _IR_CONFIG_H_ + + +#define POW_TABLE_NUM 6 + +#define IR_STATE_NUM 4 + +#define IR_NONE 0 +#define IR_FAR 1 +#define IR_CLOSE 2 +#define IR_CLOSER 3 + +#define IR_FAR2CLOSE 0xAA +#define IR_CLOSE2FAR 0xBB + +#define IR_DEVICE_NUM 20 + +#define POW_COMBI_NUM 10 +#define POW_SHORT 0 +#define POW_MIDDLE 1 +#define POW_LONG 2 + +const uint8_t static ir_posi_s[12]={ + 8, 9, 10, 11, + 12, 13, 14, 15, + 16, 17, 18, 19 +}; + +const uint8_t static ir_pow_val[POW_COMBI_NUM][3]={//sml + {25,25,25}, + {30,30,50},//start + {35,35,35}, + {40,40,40}, + {20,30,40}, + {20,25,30}, + {25,30,35}, + {30,35,40}, + {30,30,40}, + {25,30,30}, +}; + +const double static ir_move_val[POW_TABLE_NUM][IR_STATE_NUM][IR_DEVICE_NUM][4]={ + + + + +{ + { + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { 0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { -0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.8660 , -0.5000 , 0.0000 , 0.0000 }, + { -0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , -1.0000 , 0.0000 , 0.0000 }, + { 0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.8660 , -0.5000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 0.8660 , 0.0000 , 0.0000 , -0.5000 }, + { 0.7500 , 0.4330 , 0.2500 , -0.4330 }, + { 0.4330 , 0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.4330 , 0.7500 , -0.4330 , -0.2500 }, + { -0.7500 , 0.4330 , -0.2500 , -0.4330 }, + { -0.8660 , 0.0000 , 0.0000 , -0.5000 }, + { -0.7500 , -0.4330 , 0.2500 , -0.4330 }, + { -0.4330 , -0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , -0.8660 , 0.5000 , 0.0000 }, + { 0.4330 , -0.7500 , -0.4330 , -0.2500 }, + { 0.7500 , -0.4330 , -0.2500 , -0.4330 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 0.7071 , 0.0000 , 0.0000 , -0.7071 }, + { 0.6124 , 0.3536 , 0.3536 , -0.6124 }, + { 0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { -0.6124 , 0.3536 , -0.3536 , -0.6124 }, + { -0.7071 , 0.0000 , 0.0000 , -0.7071 }, + { -0.4330 , -0.2500 , 0.4330 , -0.7500 }, + { -0.2500 , -0.4330 , 0.7500 , -0.4330 }, + { 0.0000 , -0.5000 , 0.8660 , 0.0000 }, + { 0.2500 , -0.4330 , -0.7500 , -0.4330 }, + { 0.4330 , -0.2500 , -0.4330 , -0.7500 }, + }, +}, + + + + + + +{ + { + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 0.8660 , 0.0000 , 0.0000 , -0.5000 }, + { 0.7500 , 0.4330 , 0.2500 , -0.4330 }, + { 0.4330 , 0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.4330 , 0.7500 , -0.4330 , -0.2500 }, + { -0.7500 , 0.4330 , -0.2500 , -0.4330 }, + { -0.8660 , 0.0000 , 0.0000 , -0.5000 }, + { -0.7500 , -0.4330 , 0.2500 , -0.4330 }, + { -0.4330 , -0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , -0.8660 , 0.5000 , 0.0000 }, + { 0.4330 , -0.7500 , -0.4330 , -0.2500 }, + { 0.7500 , -0.4330 , -0.2500 , -0.4330 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.7500 , 0.4330 , 0.2500 , -0.4330 }, + { 0.4330 , 0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.4330 , 0.7500 , -0.4330 , -0.2500 }, + { -0.7500 , 0.4330 , -0.2500 , -0.4330 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.7500 , -0.4330 , -0.2500 , 0.4330 }, + { -0.4330 , -0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , -0.7071 , 0.7071 , 0.0000 }, + { 0.4330 , -0.7500 , -0.4330 , -0.2500 }, + { 0.7500 , -0.4330 , 0.2500 , 0.4330 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.7500 , 0.4330 , 0.2500 , -0.4330 }, + { 0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { -0.7500 , 0.4330 , -0.2500 , -0.4330 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.7500 , -0.4330 , -0.2500 , 0.4330 }, + { -0.4330 , -0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , -0.7071 , 0.7071 , 0.0000 }, + { 0.4330 , -0.7500 , -0.4330 , -0.2500 }, + { 0.7500 , -0.4330 , 0.2500 , 0.4330 }, + }, +}, + + + + + + +{ + { + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { 0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { -0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.8660 , -0.5000 , 0.0000 , 0.0000 }, + { -0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , -1.0000 , 0.0000 , 0.0000 }, + { 0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.8660 , -0.5000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { 0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { -0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.8660 , -0.5000 , 0.0000 , 0.0000 }, + { -0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , -1.0000 , 0.0000 , 0.0000 }, + { 0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.8660 , -0.5000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { 0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { -0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.8660 , -0.5000 , 0.0000 , 0.0000 }, + { -0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , -1.0000 , 0.0000 , 0.0000 }, + { 0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.8660 , -0.5000 , 0.0000 , 0.0000 }, + }, +}, + + + + + + +{ + { + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { 0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { -0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.8660 , -0.5000 , 0.0000 , 0.0000 }, + { -0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , -1.0000 , 0.0000 , 0.0000 }, + { 0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.8660 , -0.5000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 0.8660 , 0.0000 , 0.0000 , -0.5000 }, + { 0.7500 , 0.4330 , 0.2500 , -0.4330 }, + { 0.4330 , 0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.4330 , 0.7500 , -0.4330 , -0.2500 }, + { -0.7500 , 0.4330 , -0.2500 , -0.4330 }, + { -0.8660 , 0.0000 , 0.0000 , -0.5000 }, + { -0.7500 , -0.4330 , 0.2500 , -0.4330 }, + { -0.4330 , -0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , -0.8660 , 0.5000 , 0.0000 }, + { 0.4330 , -0.7500 , -0.4330 , -0.2500 }, + { 0.7500 , -0.4330 , -0.2500 , -0.4330 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 0.5000 , 0.0000 , 0.0000 , -0.8660 }, + { 0.0000 , 0.0000 , 0.5000 , -0.8660 }, + { 0.4330 , 0.7500 , 0.4330 , -0.2500 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.4330 , 0.7500 , -0.4330 , -0.2500 }, + { 0.0000 , 0.0000 , -0.5000 , -0.8660 }, + { -0.5000 , 0.0000 , 0.0000 , -0.8660 }, + { -0.4330 , -0.2500 , 0.4330 , -0.7500 }, + { -0.2500 , -0.4330 , 0.7500 , -0.4330 }, + { 0.0000 , -0.5000 , 0.8660 , 0.0000 }, + { 0.2500 , -0.4330 , -0.7500 , -0.4330 }, + { 0.4330 , -0.2500 , -0.4330 , -0.7500 }, + }, +}, + +{ + { + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { 0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { -0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.8660 , -0.5000 , 0.0000 , 0.0000 }, + { -0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , -1.0000 , 0.0000 , 0.0000 }, + { 0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.8660 , -0.5000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , -1.0000 }, + { 0.0000 , 0.0000 , 0.5000 , -0.8660 }, + { 0.0000 , 0.0000 , 0.8660 , -0.5000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , -0.8660 , -0.5000 }, + { 0.0000 , 0.0000 , -0.5000 , -0.8660 }, + { 0.0000 , 0.0000 , 0.0000 , -1.0000 }, + { 0.0000 , 0.0000 , 0.5000 , -0.8660 }, + { 0.0000 , 0.0000 , 0.8660 , -0.5000 }, + { 0.0000 , -0.7071 , 0.7071 , 0.0000 }, + { 0.0000 , 0.0000 , -0.8660 , -0.5000 }, + { 0.0000 , 0.0000 , -0.5000 , -0.8660 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , -1.0000 }, + { 0.0000 , 0.0000 , 0.5000 , -0.8660 }, + { 0.0000 , 0.0000 , 0.8660 , -0.5000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , -0.8660 , -0.5000 }, + { 0.0000 , 0.0000 , -0.5000 , -0.8660 }, + { 0.0000 , 0.0000 , 0.0000 , -1.0000 }, + { 0.0000 , 0.0000 , 0.5000 , -0.8660 }, + { 0.0000 , 0.0000 , 0.8660 , -0.5000 }, + { 0.0000 , -0.7071 , 0.7071 , 0.0000 }, + { 0.0000 , 0.0000 , -0.8660 , -0.5000 }, + { 0.0000 , 0.0000 , -0.5000 , -0.8660 }, + }, +}, + + + + +{ + { + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.0000 , 0.0000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { 0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.5000 , 0.8660 , 0.0000 , 0.0000 }, + { -0.8660 , 0.5000 , 0.0000 , 0.0000 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.8660 , -0.5000 , 0.0000 , 0.0000 }, + { -0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.0000 , -1.0000 , 0.0000 , 0.0000 }, + { 0.5000 , -0.8660 , 0.0000 , 0.0000 }, + { 0.8660 , -0.5000 , 0.0000 , 0.0000 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.7500 , 0.4330 , 0.2500 , -0.4330 }, + { 0.2500 , 0.4330 , 0.7500 , -0.4330 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.2500 , 0.4330 , -0.7500 , -0.4330 }, + { -0.7500 , 0.4330 , -0.2500 , -0.4330 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.7500 , -0.4330 , -0.2500 , 0.4330 }, + { -0.2500 , -0.4330 , -0.7500 , 0.4330 }, + { 0.0000 , 0.0000 , 1.0000 , 0.0000 }, + { 0.2500 , -0.4330 , 0.7500 , 0.4330 }, + { 0.7500 , -0.4330 , 0.2500 , 0.4330 }, + }, + + + + + { + { 0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { 0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.2588 , 0.9659 , 0.0000 , 0.0000 }, + { -0.7071 , 0.7071 , 0.0000 , 0.0000 }, + { -0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { -0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.3827 , -0.9239 , 0.0000 , 0.0000 }, + { 0.9239 , -0.3827 , 0.0000 , 0.0000 }, + { 1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { 0.7500 , 0.4330 , 0.2500 , -0.4330 }, + { 0.2500 , 0.4330 , 0.7500 , -0.4330 }, + { 0.0000 , 1.0000 , 0.0000 , 0.0000 }, + { -0.2500 , 0.4330 , -0.7500 , -0.4330 }, + { -0.7500 , 0.4330 , -0.2500 , -0.4330 }, + { -1.0000 , 0.0000 , 0.0000 , 0.0000 }, + { -0.7500 , -0.4330 , -0.2500 , 0.4330 }, + { -0.2500 , -0.4330 , -0.7500 , 0.4330 }, + { 0.0000 , 0.0000 , 1.0000 , 0.0000 }, + { 0.2500 , -0.4330 , 0.7500 , 0.4330 }, + { 0.7500 , -0.4330 , 0.2500 , 0.4330 }, + }, +}, + + + +}; + + +/* +const double static ir_move_val_old[4][20][2]={ +{ +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +{ 0.0000 , 0.0000 }, +}, + + +{ +{ 0.7071 , 0.7071 }, +{ 0.2588 , 0.9659 }, +{ -0.2588 , 0.9659 }, +{ -0.7071 , 0.7071 }, +{ -0.0093 , -0.7615 }, +{ 0.0093 , -0.7615 }, +{ -0.0093 , -0.7615 }, +{ 0.0093 , -0.7615 }, +{ 0.2000 , -0.8000 }, +{ 0.5732 , -0.5928 }, +{ 0.5000 , 0.8660 }, +{ 0.0000 , 1.0000 }, +{ -0.5000 , 0.8660 }, +{ -0.5732 , -0.5928 }, +{ -0.2000 , -0.8000 }, +{ 0.0902 , -0.7562 }, +{ 0.4562 , -0.6098 }, +{ 1.0000 , 0.0000 }, +{ -0.4562 , -0.6098 }, +{ -0.0902 , -0.7562 }, +}, + + +{ +{ 0.7071 , 0.7071 }, +{ 0.2588 , 0.9659 }, +{ -0.2588 , 0.9659 }, +{ -0.7071 , 0.7071 }, +{ -0.0093 , -0.7615 }, +{ 0.0093 , -0.7615 }, +{ -0.0093 , -0.7615 }, +{ 0.0093 , -0.7615 }, +{ 0.2000 , -0.8000 }, +{ 0.5732 , -0.5928 }, +{ 0.5000 , 0.8660 }, +{ 0.0000 , 1.0000 }, +{ -0.5000 , 0.8660 }, +{ -0.5732 , -0.5928 }, +{ -0.2000 , -0.8000 }, +{ 0.0902 , -0.7562 }, +{ 0.4562 , -0.6098 }, +{ 1.0000 , 0.0000 }, +{ -0.4562 , -0.6098 }, +{ -0.0902 , -0.7562 }, +}, + + +{ +{ 0.7071 , 0.7071 }, +{ 0.2588 , 0.9659 }, +{ -0.2588 , 0.9659 }, +{ -0.7071 , 0.7071 }, +{ -0.0093 , -0.7615 }, +{ 0.0093 , -0.7615 }, +{ -0.0093 , -0.7615 }, +{ 0.0093 , -0.7615 }, +{ 0.2000 , -0.8000 }, +{ 0.5732 , -0.5928 }, +{ 0.5000 , 0.8660 }, +{ 0.0000 , 1.0000 }, +{ -0.5000 , 0.8660 }, +{ -0.5732 , -0.5928 }, +{ -0.2000 , -0.8000 }, +{ 0.0902 , -0.7562 }, +{ 0.4562 , -0.6098 }, +{ 1.0000 , 0.0000 }, +{ -0.4562 , -0.6098 }, +{ -0.0902 , -0.7562 }, +}, + + +}; +*/ +#endif /*_IR_CONFIG_H_*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setting/LineConfig.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,18 @@ +#ifndef _LINE_CONFIG_H_ +#define _LINE_CONFIG_H_ +//0...x, 1...y + +//const double static LineDecline[5] = {1, .75, .5, .375, 0}; +const double static LineDecline[5] = {1, .75, .50, 0, 0}; +const uint8_t static LineDecrease[5] = {30, 20, 20, 20, 0};//ping/1/2/3 + +//const uint8_t static WhiteToWall[2] = {30, 30}; +const uint8_t static WhiteToWall[2] = {33, 33}; +const uint8_t static WhiteToWallPlus[2] = {35, 40};//{33, 36}; +//const uint8_t static OutToWall[2] = {16, 20}; +const uint8_t static OutToWall[2] = {25, 30}; + +const uint8_t static GoalEdgeToWall[2] = {60, 60}; +const uint8_t static SelfToEmpty[2] = {100, 45}; + +#endif /*_LINE_CONFIG_H_*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setting/PinConfig.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,65 @@ +#ifndef _PIN_CONFIG_H_ +#define _PIN_CONFIG_H_ + +//pc(Computer) +static PinName const monitor_tx = SERIAL_TX; +static PinName const monitor_rx = SERIAL_RX; +//led(main) +static PinName const led1 = PC_12; +static PinName const led2 = PC_10; +static PinName const led3 = PC_11; +static PinName const led4 = PD_2; +//write(main) +static PinName const stlinkTMS = PA_13; +static PinName const stlinkTCK = PA_14; +static PinName const stlinkRX = D1; +static PinName const stlinkNRST = NC; +static PinName const stlink3V3 = NC; +//line(bottom) +static PinName const lineA1 = PB_7; +static PinName const lineB1 = PC_13; +static PinName const lineC1 = PC_3; +static PinName const lineA2 = A0; +static PinName const lineB2 = A1; +static PinName const lineC2 = A2; +static PinName const lineInA = A3; +static PinName const lineInB = A4; +static PinName const lineInC = A5; +//ballcheck(bottom) +static PinName const ballcheck = PC_2; +//debug_switch(debug_board) +static PinName const selectsw1 = PC_8; +static PinName const selectsw2 = PC_9; +static PinName const debugsw1 = D15; +static PinName const debugsw2 = D14; +//motor(main) +static PinName const motor_rx = PA_12; +static PinName const motor_tx = PA_11; +//spi(main) +static PinName const SPI_slck = D13; +static PinName const SPI_miso = D12; +static PinName const SPI_mosi = D11; +static PinName const SPI_ss_sd = PB_12; +static PinName const SPI_ss_sonic = D10; +static PinName const SPI_ss_color = D9; +static PinName const SPI_ss_ir = PB_1; +//bluetooth(debug_board) +static PinName const blue_txd = D2; +static PinName const blue_rxd = D8; +static PinName const blue_reset = PB_2; +//lcd(debug_board) +static PinName const lcd_sda = D5; +static PinName const lcd_scl = D7; +//gyro(debug_board) +static PinName const sens_sda = D3; +static PinName const sens_scl = D6; +static PinName const sens_interrupt = D0; +//mouse(bottom) +static PinName const mouse_mosi = PB_15; +static PinName const mouse_miso = PB_14; +static PinName const mouse_slck = PB_13; +static PinName const mouse_ss = D4; +//solenoid(bottom) +static PinName const solenoid = PC_4; + +#endif /*_PIN_CONFIG_H_*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setting/def.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,317 @@ +#ifndef _DEF_H_ +#define _DEF_H_ + +//red or green +#define RED_CAT//jj +//#define GREEN_CAT//lily + +//BT(BlueTooth) +#define DATA_NUM 8+2//2byte→KEYCODE(拝啓)とCHECKCODE(敬具) 8byte→やりとりするデータ +#define TX_KEYCODE 0xAA//あちらのKEYCODE +#define RX_KEYCODE 0xAA//こちらのKEYCODE +#define KEY 0//KEYCODEは配列の最初 +#define CHECK DATA_NUM-1//CHECKCODEは配列の最後 + + +//Switch 入力値 +#define NONE 0 +#define UP 1 +#define DOWN 2 +#define RIGHT 3 +#define LEFT 4 + +//Lcd 設定値 +#define LCD_COLUMN_NUM 0x11 +#define BUFSIZE 7 +#define STATE_NUM_X 0x08 +#define STATE_NUM_Y 0x10 + +#define JUMP_TAG_MAX 0xFFFF +//tag +#define ZERO_FUNCTION 0 +#define START 1 +#define GET_IR 2 +#define GET_SNS0 3 +#define GET_PID_VALUE 4 +#define CALIBRATION_ENTER 5 +#define CALIBRATION_EXIT 6 +#define FRONT_RESET 7 +#define SET_POWER1 8 +#define SET_POWER2 9 +#define SOFT_RESET 10 +#define SET_STRATEGY1 11 +#define SET_STRATEGY2 12 +#define SET_STRATEGY3 13 +#define SET_STRATEGY4 14 +#define START2 15 + +#define SET_POWER_DOWN 16 +#define SET_POWER_UP 17 +#define SET_STRATEGY_DOWN 18 +#define SET_STRATEGY_UP 19 + +#define DRIVE_KICKER 20 +#define DRIVE_DRIBBLER_AND_KICKER 21 + +#define CALIBRATION_TURN 22 +#define RW_PID 23 + +#define TURN_AND_START 24 +#define CALIBRATION_ENTER_OR_EXIT 25 + +typedef struct {//for command + char LcdStr[STATE_NUM_X][BUFSIZE]; + uint8_t str_num; + uint8_t (*CommandFunction)(uint8_t x); + uint16_t tag_num; +} CommandItem; + + +//tag +#define MODE_ATTACK0 0 +#define MODE_ATTACK1 1 +#define MODE_ATTACK2 2 +#define MODE_ATTACK3 3 +#define MODE_ATTACK4 4 +#define MODE_ATTACK5 5 + +#define MODE_DEBUG0 6 +#define MODE_DEBUG1 7 +#define MODE_DEBUG2 8 +#define MODE_DEBUG3 9 +#define MODE_DEBUG4 10 +#define MODE_DEBUG5 11 + +typedef struct {//for active + char LcdStr[LCD_COLUMN_NUM]; + void (*ActiveFunction)(void); + uint16_t tag_num; +} ActiveItem; + +//繰り返し割り込み +#define DUTY_NUM 1 + +#define DUTY_SW 0 +#define DUTY_GYRO 1 +#define DUTY_PING 2 +#define DUTY_COLOR 3 +#define DUTY_MOUSE 4 + +/*PID処理*/ +#define RATE 0.052//52 +#define PID_BIAS 0.0//1.0 +#define REFERENCE 180.0 +#define MINIMUM 0.0 +#define MAXIMUM 359.9 +#define P_GAIN 1.3//1.25//0.8 //0.78 +#define I_GAIN 0.0 //0.0 +#define D_GAIN 0.01//0.01 //0.009 +#define OUT_LIMIT 30.0 +#define MAX_POW 100 +#define MIN_POW -100 +#define PID_CYCLE 0.05 //s + +#define PID_OUT_MIN 5 + +//hmc +#define HMC_RUN 1 +#define HMC_RST 0 + +//ir +//ir_pow_old +#define IR_X 0 +#define IR_Y 1 +//ir_pow +#define IR_X_DIR 0 +#define IR_Y_DIR 1 +#define IR_X_TURN 2 +#define IR_Y_TURN 3 + +#define IR_SHORT 0 +#define IR_LONG 1 + +#define X_AXIS 0 +#define Y_AXIS 1 + + +#define DIS_0 0x0//low_value +#define DIS_1 0x1 +#define DIS_2 0x2 +#define DIS_3 0x3 +#define DIS_4 0x4 +#define DIS_5 0x5 +#define DIS_6 0x6 +#define DIS_7 0x7//high_value + +//ping +#define L_PING 1 +#define R_PING 0 +#define F_PING 2 +#define B_PING 3 + +#define X_PING 0 +#define Y_PING 1 + +//0,1...main +//2,3...debug board + +//line +#define LINE_EMPTY 0xFF + +#define A_SPOT 0 +#define B_SPOT 1 +#define C_SPOT 2 +#define AB_SPOT 3 + +#define LINE_RF 5 +#define LINE_DELAY_1 0.5//1.0 +#define LINE_DELAY_2 0.125//0.5//.25 +#define LINE_DELAY_3 0.125//.25 + +#define LINE_REPEAT 1 + +#define L_LINE 1 +#define R_LINE 0 +#define F_LINE 2 +#define B_LINE 3 + +#define X_LINE 0 +#define Y_LINE 1 + +#define LINE_INSIDE 0 +#define LINE_OUTSIDE 1 + +//hard error + +#ifdef RED_CAT +#define LINE_FIX 0x0 +#define LINE_FREE 0x7 + +//右後左ド +#define MD_1CH (1) +#define MD_2CH (1) +#define MD_3CH (1) +#define MD_4CH (-1) +#endif /*RED_CAT*/ + +#ifdef GREEN_CAT +#define LINE_FIX 0x7 +#define LINE_FREE 0x0 + +//右後左ド +#define MD_1CH (1) +#define MD_2CH (1) +#define MD_3CH (-1) +#define MD_4CH (-1) +#endif /*GREEN_CAT*/ + + +//思考パターン +#define STRATEGY_NUM 12 + +//計算 +#define ROUND(x) ((x > 0) ? (x + 0.5) : (x - 0.5))//x...整数 +#define PI 3.14159265358979323846 +#define DEG2RAD(deg) (PI*(deg)/180.0) +#define RAD2DEG(rad) (180.0(rad)/PI) + +//データ +typedef struct { + //cmps&pid + double cmps, CmpsInitialValue, CmpsInitialValue2, CmpsInitialValue0, CmpsDiff;//0<x<360 + int16_t FrontDeg, AtkDeg, HoldDeg, GoalDeg; + //正...右回転 + //負...左回転 + double InputPID;//<<gyrosensor + int16_t OutputPID;//>>motor +} CompassVal; +typedef struct { + //ping + uint8_t ping[4]; + //line + uint8_t lineSpot[3]; + uint8_t lnFlag[3]; + uint8_t NonWall[4]; + uint8_t NearWall[2]; + uint8_t ReturnDir[2]; + + uint8_t lnHold; + uint8_t lnRaw; + uint8_t lnRawMemory[3]; + uint8_t lnRawOrder[3];//first_second_third + uint8_t lnRawOrderLog1[3];//first_second_third + uint8_t lnRawOrderLog2[3];//first_second_third + uint8_t lnRawRise[3]; + uint8_t lnRawReturn; + uint8_t lnRawLastRise; + uint8_t lnStop[2]; + //uint8_t lnStay[2]; + uint8_t lnStay[2]; + uint8_t lnStayNow[2]; + uint8_t lnCorner[4]; + uint8_t lnRepeat; + uint8_t FieldSpot;//0...inside,1...outside + uint8_t lnOrder[3];//first_second_third + + uint8_t lnState; + /*uint8_t LineFlag[3]; + uint8_t LinePriority[3]; + uint8_t LineBind[3];*/ + //ir(spi) + uint8_t irKey;//2bit + uint8_t irValPhase[2];//3*2bit + uint8_t irDif[2];//3bit + uint8_t irPosition;//5bit + + uint8_t irSpot[2];//4*2bit//old + //ir(playing) + uint8_t irNotice; + uint8_t irLastNotice; + uint8_t irStayNotice; + uint8_t irLastPosition; + //ball + uint8_t ball; +} SensorVal; +typedef struct { + //system,flag + uint8_t strategy; + uint16_t jump_flag;//0<=x<=JUMP_TAG_NUM + uint8_t stopflag; + uint8_t KickOffFlag; + uint8_t DribbleFlag; + uint8_t KickStopFlag; + uint8_t TurnStopFlag; + + uint8_t BallHoldJudgeFlag; + uint8_t BallHoldFlag; + + uint8_t BackHomeFlag; + uint8_t HomeStayFlag[2]; + uint8_t TurnStartFlag; + uint8_t MotorFlag; + uint8_t InfoFlag; + //uint8_t PidFlag; + uint8_t DefenceFlag; + //blind//on...1/off...0 + uint8_t IrBlind; + uint8_t LineBlind; + uint8_t PingBlind; + + uint8_t DriBlind; + uint8_t DriMotorBlind; + uint8_t TurnAtkBlind; + uint8_t TurnDriBlind; + uint8_t TurnHoldBlind; + uint8_t KickBlind; + uint8_t HomeBlind; + + //motor + uint8_t pow_num; + uint8_t s_pow; + uint8_t m_pow; + uint8_t l_pow; + uint8_t dri_pow; + uint8_t ir_pow_table; +} SystemVal; + +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setting/extern.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,114 @@ +#ifndef _EXTERN_H_ +#define _EXTERN_H_ + +#include "def.h" + +/*追加ライブラリ*/ +#include <sstream> +#include "math.h" +#include "AQM1602.h" +#include "HMC6352.h" +#include "PID.h" + +#include "adns_9800.h" +#include "txrx.h" +#include "switch.h" +#include "wordString2.h" +#include "IrConfig.h" +#include "LineConfig.h" + +#include "setup.h" +#include "command.h" +#include "command_functions.h" +#include "active.h" +#include "input.h" +#include "output.h" +#include "LineProcess.h" +#include "strategy.h" +#include "strategy2.h" +#include "old_strategy.h" + +#include "PinConfig.h" +#include "CommandConfig.h" +#include "ActiveConfig.h" +#include "MathTable.h" +/*クラス*/ + +//pc(Computer) +extern RawSerial pc; +//led(main) +//extern DigitalOut LED[4]; +extern BusOut LED; +//line(bottom) +extern BusOut LineKeeper; +extern BusIn LineRaw; +extern BusIn LineHold; +extern InterruptIn Line[3]; +extern InterruptIn LineHolding[3]; +//ballcheck(bottom) +extern InterruptIn BallChecker; +extern AnalogIn BallCheckerA; +//debug_switch(debug_board) +extern DigitalIn Sw[4]; +//motor(main) +extern Serial motor; +//spi(main) +extern SPI spi; +extern DigitalOut spi_ss[4]; +//bluetooth(debug_board) +extern RawSerial RN42; +extern DigitalOut hmc_reset; +//lcd(debug_board) +extern AQM1602 Lcd; +//cmps +extern HMC6352 hmc; +//mouse(bottom) +extern adns_9800 mouse_sensor; +//solenoid(bottom) +extern DigitalOut kicker; + +//Serial for motors +extern int speed[4]; +extern string StringFIN; +//PID +extern PID pid; +extern Ticker pidupdate; +//for Serial +extern volatile uint8_t INdata[DATA_NUM], EXdata[DATA_NUM]; +//for DataSet +//extern Record data; +//NewStruct +extern CompassVal cmps_set; +extern SensorVal data; +extern SystemVal sys; +//for transition +extern Ticker Sw_ticker; +extern Timeout button; +extern bool state[4]; +extern uint8_t statesum, last_statesum; +// for Time +extern Ticker Motor_ticker; +//extern Ticker Line_ticker; +extern Ticker Info_ticker; +//extern Ticker Hmc_ticker; + +//extern Timeout Line_timeout[3]; +extern Timeout Line_reset; + +extern Timeout Solenoid_timeout; +extern Timeout Kick_stop; + +extern Timeout Turn_timeout; +extern Timeout Turn_stop; + +extern Timeout Ball_judge; + +//extern Timeout Kick_now; +//extern Timeout Front_now; +//extern Timeout Line_home; + +extern Ticker Duty[DUTY_NUM]; +extern Timeout Stp; +extern double dutycycle[DUTY_NUM]; + +#endif /*_EXTERN_H_*/ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setting/main.h Sun May 01 06:30:37 2016 +0000 @@ -0,0 +1,85 @@ +#ifndef _MAIN_H_ +#define _MAIN_H_ + +#include "def.h" + +//pc(Computer) +RawSerial pc(monitor_tx, monitor_rx); +//led(main) +//DigitalOut LED[4]={led1, led2, led3, led4}; +BusOut LED(led1, led2, led3, led4); +//line(bottom) +BusOut LineKeeper(lineInA, lineInB, lineInC); +BusIn LineRaw(lineA2, lineB2, lineC2); +BusIn LineHold(lineA1, lineB1, lineC1); +InterruptIn Line[3]={lineA2, lineB2, lineC2}; +InterruptIn LineHolding[3]={lineA1, lineB1, lineC1}; +//ballcheck(bottom) +InterruptIn BallChecker(ballcheck); +AnalogIn BallCheckerA(ballcheck); +//debug_switch(debug_board) +DigitalIn Sw[4] = {selectsw1, selectsw2, debugsw1, debugsw2}; +//motor(main) +Serial motor(motor_tx, motor_rx); +//spi(main) +SPI spi(SPI_mosi, SPI_miso, SPI_slck); +DigitalOut spi_ss[4]={SPI_ss_sd, SPI_ss_sonic, SPI_ss_color, SPI_ss_ir}; +//bluetooth(debug_board) +RawSerial RN42(blue_rxd, blue_txd); +DigitalOut hmc_reset(blue_reset); +//lcd(debug_board) +AQM1602 Lcd(lcd_sda, lcd_scl); +//cmps(debug_board) +HMC6352 hmc(sens_sda, sens_scl); +//mouse(bottom) +adns_9800 mouse_sensor(mouse_mosi, mouse_miso, mouse_slck, mouse_ss); +//solenoid(bottom) +DigitalOut kicker(solenoid); + +//Serial for motors +int speed[4]={0}; +string StringFIN; +//PID +PID pid(P_GAIN,I_GAIN,D_GAIN, RATE); +//Ticker pidupdate; +//for Serial +volatile uint8_t INdata[DATA_NUM]={0}, EXdata[DATA_NUM]={0}; +//for DataSet +//Record data; +//NewStruct +CompassVal cmps_set; +SensorVal data; +SystemVal sys; +//for transition +Ticker Sw_ticker; +Timeout button; +bool state[4]={0,0,0,0}; +uint8_t statesum=0, last_statesum=0; +// for Time +Ticker Motor_ticker; +//Ticker Line_ticker; +Ticker Info_ticker; +//Ticker Hmc_ticker; + +//Timeout Line_timeout[3]; +Timeout Line_reset; + +Timeout Solenoid_timeout; +Timeout Kick_stop; + +Timeout Turn_timeout; +Timeout Turn_stop; + +Timeout Ball_judge; + +//Timeout Kick_now; +//Timeout Front_now; +//Timeout Line_home; + +Ticker Duty[DUTY_NUM]; +Timeout Stp; +double dutycycle[DUTY_NUM] ={//[s] + 0.2 +}; + +#endif /*_MAIN_H_*/ \ No newline at end of file