test publish
Dependencies: BLE_API nRF51822 mbed
Fork of KS7 by
Diff: io.h
- Branch:
- KS3
- Revision:
- 30:f67850cc3cfe
- Child:
- 31:b5e19d153db4
diff -r 09406be35ef4 -r f67850cc3cfe io.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/io.h Mon May 23 05:15:58 2016 +0000 @@ -0,0 +1,112 @@ +#ifndef io_H_ +#define io_H_ + +#include "mbed.h" + +//#define UART_DEBUG + +//#define PCB_VER1 // define for ver1 board (P0_26/27 -> P0_24/25) & ADC +//#define PCB_VER2 +//#define PCB_VER3 // default +#define PCB_VER4 // with HX711 + +//#define USE_JOYSTICK // define for using joystick as power switch in PCB_VER1 + +// memo of load cell / gain +// 0.9mV/kg(raw) -> 0.54V/kg(x600) +// FS=+-1.65V -> 3.06kg(FS) + +// 0.9mV/kg(raw) -> 0.297V/kg(x330) +// FS=+-1.65V -> 3.06kg(FS) + +//#define WEIGHT_COEFFICIENT (8.64) +//#define WEIGHT_COEFFICIENT (3.15) +// weight calibration on 2016/3/28 by akita11 in weight_calib150328.txt +#define WEIGHT_COEFFICIENT (682.32) // for PCB_VER4 +// 2000g = 6300 + +//#define DISPLAY_ZERO_SUPPRESS // leading zero suppress on display + +class io { +public: +#ifdef PCB_VER4 + io(PinName CLK, PinName DAT); +#else + io(); +#endif + ~io(); + int display_value; // 4-digit integer to display + void display(float f); // set display brightness (0.0 - 1.0) + + float get_weight(); // get (calibrated) weight [g] +#ifdef PCB_VER4 + uint32_t get_weight_raw(); // ADC raw value of weight gauage +#else + uint16_t get_weight_raw(); // ADC raw value of weight gauage +#endif + uint8_t get_switch(); // get switch status (1=pressed, 0=released) + + void calibrate_weight(); // calibrate weight gauage + void analog_pow(uint8_t f); // turn on/off analog power + +#ifdef PCB_VER4 + uint32_t _get_adc_raw(uint8_t ch); // ADC raw value, 0x0000 - 0xffffff + uint32_t _adc0; // ADC value for calibrating zero point +#else + uint16_t _get_adc_raw(uint8_t ch); // ADC raw value, 0x0000 - 0xffff + uint16_t _adc0; // ADC value for calibrating zero point +#endif + +#ifdef PCB_VER4 + void power_save_mode(uint8_t f); // f=1 for power-save mode during sleep +#endif + + private: +#ifdef PCB_VER4 +#endif + uint8_t _seg[4]; + float _get_adc(uint8_t ch); // ADC value, 0.0 - 1.0 +#ifdef PCB_VER1 + float _get_x(); // raw value of joystick X + float _get_y(); // raw value of joystick Y +#endif + // belows are for internal use only + int _display_value; + uint8_t _col; + uint8_t _row_out[8]; + void _set_col(); + void _set_row(uint8_t d); + uint8_t _set_segment(uint8_t d); + void _timer_ticker(); + DigitalOut *_sg0, *_sg1, *_sg2, *_sg3, *_sg4, *_sg5, *_sg6, *_sg7; + DigitalOut *_sa0, *_sa1, *_sa2, *_pow; +#ifdef PCB_VER1 + AnalogIn *_jx, *_jy, *_weight; +#endif +#ifdef PCB_VER2 + char _adc_dat[4]; +#endif + PwmOut *_pwm; +#ifdef PCB_VER3 + DigitalIn *_sw; + DigitalOut *_adc_ck; + DigitalIn *_adc_di; + uint8_t _fDisplaying; +#endif +#ifdef PCB_VER4 + DigitalIn *_sw; +// DigitalOut *_adc_ck; // for software SPI +// DigitalIn *_adc_di; // for software SPI + DigitalOut *_reg_ps; + DigitalOut *_adc_rate; + uint32_t _PselSCK, _PselMISO; // for hardware SPI + void _set_adc_ck(uint8_t f); // for hardware SPI + void _enableSPI(uint8_t f); // for hardware SPI + uint8_t _spi_transfer(void); // for hardware SPI + uint8_t _fDisplaying; + SPI _hx711; // for hardware SPI +#endif + +}; + +#endif