MicroForce Sensors, Compensated/Amplified
Diff: MicroForce_FMA.cpp
- Revision:
- 0:e4146617a5fc
- Child:
- 1:4b8a700b3f5c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroForce_FMA.cpp Wed Jun 30 12:54:49 2021 +0000 @@ -0,0 +1,321 @@ +/** + * @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; +}