MicroForce Sensors, Compensated/Amplified

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;
+}