mirror of
				https://github.com/eclipse/upm.git
				synced 2025-10-31 15:15:07 +03:00 
			
		
		
		
	Added getVolts() to iEMG interface and its sensors.
Signed-off-by: Serban Waltter <serban.waltter@rinftech.com>
This commit is contained in:
		| @@ -45,5 +45,12 @@ namespace upm | |||||||
|      * @return Muscle output as analog voltage |      * @return Muscle output as analog voltage | ||||||
|      */ |      */ | ||||||
|     virtual int value() = 0; |     virtual int value() = 0; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Read scaled/offset voltage from the sensor | ||||||
|  |      *  | ||||||
|  |      * @return Measured volts | ||||||
|  |      */ | ||||||
|  |     virtual float getVolts() = 0; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -67,3 +67,21 @@ int EMG::value() | |||||||
| 	int val = mraa_aio_read(m_aio); | 	int val = mraa_aio_read(m_aio); | ||||||
| 	return val; | 	return val; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | float EMG::getVolts() | ||||||
|  | { | ||||||
|  | 	float val = mraa_aio_read_float(m_aio); | ||||||
|  | 	if (val < 0) | ||||||
|  | 		return val; | ||||||
|  |  | ||||||
|  | 	 /* Apply raw scale */ | ||||||
|  |     val *= this->m_scale; | ||||||
|  |  | ||||||
|  |      /* Scale to aRef */ | ||||||
|  |     val *= this->m_aRef; | ||||||
|  |  | ||||||
|  |     /* Apply the offset in volts */ | ||||||
|  |     val += this->m_offset; | ||||||
|  |  | ||||||
|  | 	return val; | ||||||
|  | } | ||||||
|   | |||||||
| @@ -76,7 +76,15 @@ namespace upm { | |||||||
|      */ |      */ | ||||||
|     virtual int value(); |     virtual int value(); | ||||||
|  |  | ||||||
|  |     virtual float getVolts(); | ||||||
|  |  | ||||||
|   private: |   private: | ||||||
|     mraa_aio_context m_aio; |     mraa_aio_context m_aio; | ||||||
|  |     /* Analog voltage reference */ | ||||||
|  |     float m_aRef = 5.0; | ||||||
|  |     /* Scale */ | ||||||
|  |     float m_scale = 1.0; | ||||||
|  |     /* Offset in sensor units */ | ||||||
|  |     float m_offset = 0.0; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -67,3 +67,21 @@ int GroveEMG::value() | |||||||
| 	int val = mraa_aio_read(m_aio); | 	int val = mraa_aio_read(m_aio); | ||||||
| 	return val; | 	return val; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | float GroveEMG::getVolts() | ||||||
|  | { | ||||||
|  | 	float val = mraa_aio_read_float(m_aio); | ||||||
|  | 	if (val < 0) | ||||||
|  | 		return val; | ||||||
|  |  | ||||||
|  | 	 /* Apply raw scale */ | ||||||
|  |     val *= this->m_scale; | ||||||
|  |  | ||||||
|  |      /* Scale to aRef */ | ||||||
|  |     val *= this->m_aRef; | ||||||
|  |  | ||||||
|  |     /* Apply the offset in volts */ | ||||||
|  |     val += this->m_offset; | ||||||
|  |  | ||||||
|  | 	return val; | ||||||
|  | } | ||||||
| @@ -77,7 +77,15 @@ namespace upm { | |||||||
|      */ |      */ | ||||||
|     virtual int value(); |     virtual int value(); | ||||||
|  |  | ||||||
|  |     virtual float getVolts(); | ||||||
|  |  | ||||||
|   private: |   private: | ||||||
|     mraa_aio_context m_aio; |     mraa_aio_context m_aio; | ||||||
|  |     /* Analog voltage reference */ | ||||||
|  |     float m_aRef = 5.0; | ||||||
|  |     /* Scale */ | ||||||
|  |     float m_scale = 1.0; | ||||||
|  |     /* Offset in sensor units */ | ||||||
|  |     float m_offset = 0.0; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Serban Waltter
					Serban Waltter