MicroForce Sensors, Compensated/Amplified
MicroForce_FMA.cpp
- Committer:
- mcm
- Date:
- 2021-06-30
- Revision:
- 0:e4146617a5fc
- Child:
- 1:4b8a700b3f5c
File content as of revision 0:e4146617a5fc:
/** * @brief MAX7219.h * @details Serially Interfaced, 8-Digit LED Display Drivers. * Header file. * * * @return NA * * @author Manuel Caballero * @date 9/October/2017 * @version 9/October/2017 The ORIGIN * @pre NaN. * @warning NaN * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). */ #include "MAX7219.h" MAX7219::MAX7219 ( PinName mosi, PinName miso, PinName sclk, PinName cs, uint32_t freq ) : _spi ( mosi, miso, sclk ) , _cs ( cs ) { _spi.frequency( freq ); } MAX7219::~MAX7219() { } /** * @brief MAX7219_Mode ( MAX7219_shutdown_reg_t ) * * @details It puts the device in shutdown mode. * * @param[in] myMAX7219mode: Shutdown or Normal operation mode. * * @param[out] NaN. * * * @return Status of MAX7219_Mode. * * * @author Manuel Caballero * @date 9/October/2017 * @version 9/October/2017 The ORIGIN * @pre NaN * @warning NaN. */ MAX7219::MAX7219_status_t MAX7219::MAX7219_Mode ( MAX7219_shutdown_reg_t myMAX7219mode ) { char cmd[] = { SHUTDOWN, 0 }; int mySPI_status = 0; cmd[ 1 ] = myMAX7219mode; _cs = 0; mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 0 ); _cs = 1; if ( ( mySPI_status / ( sizeof( cmd )/sizeof( cmd[0] ) ) ) == SPI_SUCCESS ) return MAX7219_SUCCESS; else return MAX7219_FAILURE; } /** * @brief MAX7219_DisplayTest ( MAX7219_display_test_reg_t ) * * @details It turns all the LEDs on ( Test mode enabled ) or normal operation. * * @param[in] myMAX7219DisplayTestMode: Mode: Test or Normal operation. * * @param[out] NaN. * * * @return Status of MAX7219_DisplayTest. * * * @author Manuel Caballero * @date 9/October/2017 * @version 9/October/2017 The ORIGIN * @pre NaN * @warning NaN. */ MAX7219::MAX7219_status_t MAX7219::MAX7219_DisplayTest ( MAX7219_display_test_reg_t myMAX7219DisplayTestMode ) { char cmd[] = { DISPLAY_TEST, 0 }; int mySPI_status = 0; cmd[ 1 ] = myMAX7219DisplayTestMode; _cs = 0; mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 0 ); _cs = 1; if ( ( mySPI_status / ( sizeof( cmd )/sizeof( cmd[0] ) ) ) == SPI_SUCCESS ) return MAX7219_SUCCESS; else return MAX7219_FAILURE; } /** * @brief MAX7219_DecodeMode ( MAX7219_decode_mode_reg_t ) * * @details It enables and configures the decode-mode or turns it off. * * @param[in] myMAX7219DecodeMode: Decode-mode option. * * @param[out] NaN. * * * @return Status of MAX7219_DecodeMode. * * * @author Manuel Caballero * @date 9/October/2017 * @version 9/October/2017 The ORIGIN * @pre NaN * @warning NaN. */ MAX7219::MAX7219_status_t MAX7219::MAX7219_DecodeMode ( MAX7219_decode_mode_reg_t myMAX7219DecodeMode ) { char cmd[] = { DECODE_MODE, 0 }; int mySPI_status = 0; cmd[ 1 ] = myMAX7219DecodeMode; _cs = 0; mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 0 ); _cs = 1; if ( ( mySPI_status / ( sizeof( cmd )/sizeof( cmd[0] ) ) ) == SPI_SUCCESS ) return MAX7219_SUCCESS; else return MAX7219_FAILURE; } /** * @brief MAX7219_SetIntensity ( MAX7219_intensity_reg_t ) * * @details It configures the intensity of the device. * * @param[in] myMAX7219Intensity: Intensity option. * * @param[out] NaN. * * * @return Status of MAX7219_SetIntensity. * * * @author Manuel Caballero * @date 9/October/2017 * @version 9/October/2017 The ORIGIN * @pre NaN * @warning NaN. */ MAX7219::MAX7219_status_t MAX7219::MAX7219_SetIntensity ( MAX7219_intensity_reg_t myMAX7219Intensity ) { char cmd[] = { INTENSITY, 0 }; int mySPI_status = 0; cmd[ 1 ] = myMAX7219Intensity; _cs = 0; mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 0 ); _cs = 1; if ( ( mySPI_status / ( sizeof( cmd )/sizeof( cmd[0] ) ) ) == SPI_SUCCESS ) return MAX7219_SUCCESS; else return MAX7219_FAILURE; } /** * @brief MAX7219_SetScanLimit ( MAX7219_scan_limit_reg_t ) * * @details It configures duty cycle of the device. * * @param[in] MAX7219_scan_limit_reg_t: Duty cycle option. * * @param[out] NaN. * * * @return Status of MAX7219_SetScanLimit. * * * @author Manuel Caballero * @date 9/October/2017 * @version 9/October/2017 The ORIGIN * @pre NaN * @warning NaN. */ MAX7219::MAX7219_status_t MAX7219::MAX7219_SetScanLimit ( MAX7219_scan_limit_reg_t myMAX7219ScanLimit ) { char cmd[] = { SCAN_LIMIT, 0 }; int mySPI_status = 0; cmd[ 1 ] = myMAX7219ScanLimit; _cs = 0; mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 0 ); _cs = 1; if ( ( mySPI_status / ( sizeof( cmd )/sizeof( cmd[0] ) ) ) == SPI_SUCCESS ) return MAX7219_SUCCESS; else return MAX7219_FAILURE; } /** * @brief MAX7219_SetDigit ( MAX7219_digit_t , MAX7219_code_b_font_reg_t , MAX7219_code_b_dp_t ) * * @details It sets the digit to be written and its value. * * @param[in] myMAX7219Digit: Digit to be written. * @param[in] myCharacter: The current value. * @param[in] myDP_status: DP enabled/disabled. * * @param[out] NaN. * * * @return Status of MAX7219_SetDigit. * * * @author Manuel Caballero * @date 9/October/2017 * @version 9/October/2017 The ORIGIN * @pre NaN * @warning NaN. */ MAX7219::MAX7219_status_t MAX7219::MAX7219_SetDigit ( MAX7219_digit_t myMAX7219Digit, MAX7219_code_b_font_reg_t myCharacter, MAX7219_code_b_dp_t myDP_status ) { char cmd[] = { 0, 0 }; int mySPI_status = 0; switch ( myMAX7219Digit ) { default: case SET_DIGIT_0: cmd[ 0 ] = DIGIT_0; break; case SET_DIGIT_1: cmd[ 0 ] = DIGIT_1; break; case SET_DIGIT_2: cmd[ 0 ] = DIGIT_2; break; case SET_DIGIT_3: cmd[ 0 ] = DIGIT_3; break; case SET_DIGIT_4: cmd[ 0 ] = DIGIT_4; break; case SET_DIGIT_5: cmd[ 0 ] = DIGIT_5; break; case SET_DIGIT_6: cmd[ 0 ] = DIGIT_6; break; case SET_DIGIT_7: cmd[ 0 ] = DIGIT_7; break; } if ( myDP_status == DP_ENABLED ) cmd[ 1 ] = ( myCharacter | 0x80 ); else cmd[ 1 ] = myCharacter; _cs = 0; mySPI_status = _spi.write ( &cmd[0], sizeof( cmd )/sizeof( cmd[0] ), &cmd[0], 0 ); _cs = 1; if ( ( mySPI_status / ( sizeof( cmd )/sizeof( cmd[0] ) ) ) == SPI_SUCCESS ) return MAX7219_SUCCESS; else return MAX7219_FAILURE; }