mirror of
				https://github.com/eclipse/upm.git
				synced 2025-10-31 07:04:14 +03:00 
			
		
		
		
	hyld9767: Initial implementation
This driver was developed using the DFRobot Loudness sensor http://www.dfrobot.com/index.php?route=product/product&product_id=83 Signed-off-by: Jon Trulson <jtrulson@ics.com> Signed-off-by: Sisinty Sasmita Patra<sisinty.s.patra@intel.com>
This commit is contained in:
		 Jon Trulson
					Jon Trulson
				
			
				
					committed by
					
						 sisinty sasmita patra
						sisinty sasmita patra
					
				
			
			
				
	
			
			
			 sisinty sasmita patra
						sisinty sasmita patra
					
				
			
						parent
						
							4a6492af0a
						
					
				
				
					commit
					ad1cc81c0d
				
			| @@ -133,6 +133,7 @@ add_executable (mpu60x0-example mpu60x0.cxx) | ||||
| add_executable (ak8975-example ak8975.cxx) | ||||
| add_executable (lsm9ds0-example lsm9ds0.cxx) | ||||
| add_executable (eboled-example eboled.cxx) | ||||
| add_executable (hyld9767-example hyld9767.cxx) | ||||
|  | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/hmc5883l) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/grove) | ||||
| @@ -239,6 +240,7 @@ include_directories (${PROJECT_SOURCE_DIR}/src/rgbringcoder) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/hp20x) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/pn532) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/lsm9ds0) | ||||
| include_directories (${PROJECT_SOURCE_DIR}/src/hyld9767) | ||||
|  | ||||
| target_link_libraries (hmc5883l-example hmc5883l ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (groveled-example grove ${CMAKE_THREAD_LIBS_INIT}) | ||||
| @@ -373,3 +375,4 @@ target_link_libraries (mpu60x0-example mpu9150 ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (ak8975-example mpu9150 ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (lsm9ds0-example lsm9ds0 ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (eboled-example i2clcd ${CMAKE_THREAD_LIBS_INIT}) | ||||
| target_link_libraries (hyld9767-example hyld9767 ${CMAKE_THREAD_LIBS_INIT}) | ||||
|   | ||||
							
								
								
									
										68
									
								
								examples/c++/hyld9767.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								examples/c++/hyld9767.cxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| /* | ||||
|  * Author: Jon Trulson <jtrulson@ics.com> | ||||
|  * Copyright (c) 2015 Intel Corporation. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sublicense, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be | ||||
|  * included in all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
|  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
|  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include <unistd.h> | ||||
| #include <iostream> | ||||
| #include <signal.h> | ||||
| #include "hyld9767.h" | ||||
|  | ||||
| using namespace std; | ||||
|  | ||||
| bool shouldRun = true; | ||||
|  | ||||
| #define HYLD9767_AREF   5.0 | ||||
|  | ||||
| void sig_handler(int signo) | ||||
| { | ||||
|   if (signo == SIGINT) | ||||
|     shouldRun = false; | ||||
| } | ||||
|  | ||||
| int main() | ||||
| { | ||||
|   signal(SIGINT, sig_handler); | ||||
|  | ||||
| //! [Interesting] | ||||
|  | ||||
|   // Instantiate a HYLD9767 on analog pin A0, with an analog | ||||
|   // reference voltage of HYLD9767_AREF | ||||
|   upm::HYLD9767 *loud = new upm::HYLD9767(0, HYLD9767_AREF); | ||||
|    | ||||
|   // Every tenth of a second, sample the loudness and output it's | ||||
|   // corresponding analog voltage.  | ||||
|  | ||||
|   while (shouldRun) | ||||
|     { | ||||
|       cout << "Detected loudness (volts): " << loud->loudness() << endl; | ||||
|        | ||||
|       usleep(100000); | ||||
|     } | ||||
|  | ||||
| //! [Interesting] | ||||
|  | ||||
|   cout << "Exiting" << endl; | ||||
|  | ||||
|   delete loud; | ||||
|   return 0; | ||||
| } | ||||
							
								
								
									
										52
									
								
								examples/javascript/hyld9767.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								examples/javascript/hyld9767.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| /*jslint node:true, vars:true, bitwise:true, unparam:true */ | ||||
| /*jshint unused:true */ | ||||
|  | ||||
| /* | ||||
|  * Author: Jon Trulson <jtrulson@ics.com> | ||||
|  * Copyright (c) 2015 Intel Corporation. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sublicense, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be | ||||
|  * included in all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
|  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
|  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
|  | ||||
|  | ||||
| var sensorObj = require('jsupm_hyld9767'); | ||||
|  | ||||
| // Instantiate a HYLD9767 on analog pin A0, with an analog | ||||
| // reference voltage of 5.0 | ||||
| var sensor = new sensorObj.HYLD9767(0, 5.0); | ||||
|  | ||||
| // Every tenth of a second, sample the loudness and output it's | ||||
| // corresponding analog voltage.  | ||||
|  | ||||
| setInterval(function() | ||||
| { | ||||
|     console.log("Detected loudness (volts): " + sensor.loudness()); | ||||
| }, 100); | ||||
|  | ||||
| // exit on ^C | ||||
| process.on('SIGINT', function() | ||||
| { | ||||
|     sensor = null; | ||||
|     sensorObj.cleanUp(); | ||||
|     sensorObj = null; | ||||
|     console.log("Exiting."); | ||||
|     process.exit(0); | ||||
| }); | ||||
|  | ||||
							
								
								
									
										50
									
								
								examples/python/hyld9767.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								examples/python/hyld9767.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| #!/usr/bin/python | ||||
| # Author: Jon Trulson <jtrulson@ics.com> | ||||
| # Copyright (c) 2015 Intel Corporation. | ||||
| # | ||||
| # Permission is hereby granted, free of charge, to any person obtaining | ||||
| # a copy of this software and associated documentation files (the | ||||
| # "Software"), to deal in the Software without restriction, including | ||||
| # without limitation the rights to use, copy, modify, merge, publish, | ||||
| # distribute, sublicense, and/or sell copies of the Software, and to | ||||
| # permit persons to whom the Software is furnished to do so, subject to | ||||
| # the following conditions: | ||||
| # | ||||
| # The above copyright notice and this permission notice shall be | ||||
| # included in all copies or substantial portions of the Software. | ||||
| # | ||||
| # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
| # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
| # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
| # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
| # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
| # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
| # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  | ||||
| import time, sys, signal, atexit | ||||
| import pyupm_hyld9767 as sensorObj | ||||
|  | ||||
| # Instantiate a HYLD9767 on analog pin A0, with an analog | ||||
| # reference voltage of 5.0 | ||||
| sensor = sensorObj.HYLD9767(0, 5.0) | ||||
|  | ||||
| ## Exit handlers ## | ||||
| # This function stops python from printing a stacktrace when you hit control-C | ||||
| def SIGINTHandler(signum, frame): | ||||
| 	raise SystemExit | ||||
|  | ||||
| # This function lets you run code on exit | ||||
| def exitHandler(): | ||||
| 	print "Exiting" | ||||
| 	sys.exit(0) | ||||
|  | ||||
| # Register exit handlers | ||||
| atexit.register(exitHandler) | ||||
| signal.signal(signal.SIGINT, SIGINTHandler) | ||||
|  | ||||
| # Every tenth of a second, sample the loudness and output it's | ||||
| # corresponding analog voltage.  | ||||
|  | ||||
| while (1): | ||||
|         print "Detected loudness (volts): ", sensor.loudness() | ||||
| 	time.sleep(.1) | ||||
							
								
								
									
										5
									
								
								src/hyld9767/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/hyld9767/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| set (libname "hyld9767") | ||||
| set (libdescription "upm DFRobot loudness sensor") | ||||
| set (module_src ${libname}.cxx) | ||||
| set (module_h ${libname}.h) | ||||
| upm_module_init() | ||||
							
								
								
									
										48
									
								
								src/hyld9767/hyld9767.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/hyld9767/hyld9767.cxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| /* | ||||
|  * Author: Jon Trulson <jtrulson@ics.com> | ||||
|  * Copyright (c) 2015 Intel Corporation. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sublicense, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be | ||||
|  * included in all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
|  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
|  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include <iostream> | ||||
|  | ||||
| #include "hyld9767.h" | ||||
|  | ||||
| using namespace std; | ||||
| using namespace upm; | ||||
|  | ||||
| HYLD9767::HYLD9767(int pin, float aref) : | ||||
|   m_aio(pin) | ||||
| { | ||||
|   m_aRes = m_aio.getBit(); | ||||
|   m_aref = aref; | ||||
| } | ||||
|  | ||||
| HYLD9767::~HYLD9767() | ||||
| { | ||||
| } | ||||
|  | ||||
| float HYLD9767::loudness() | ||||
| { | ||||
|   int val = m_aio.read(); | ||||
|  | ||||
|   return(val * (m_aref / float(1 << m_aRes))); | ||||
| } | ||||
							
								
								
									
										96
									
								
								src/hyld9767/hyld9767.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								src/hyld9767/hyld9767.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | ||||
| /* | ||||
|  * Author: Jon Trulson <jtrulson@ics.com> | ||||
|  * Copyright (c) 2015 Intel Corporation. | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining | ||||
|  * a copy of this software and associated documentation files (the | ||||
|  * "Software"), to deal in the Software without restriction, including | ||||
|  * without limitation the rights to use, copy, modify, merge, publish, | ||||
|  * distribute, sublicense, and/or sell copies of the Software, and to | ||||
|  * permit persons to whom the Software is furnished to do so, subject to | ||||
|  * the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be | ||||
|  * included in all copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
|  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
|  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
|  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
| #pragma once | ||||
|  | ||||
| #include <iostream> | ||||
| #include <string> | ||||
| #include <mraa/aio.hpp> | ||||
|  | ||||
| // EZ series is volts/512 | ||||
| #define HYLD9767_RES  512 | ||||
|  | ||||
| namespace upm { | ||||
|   /** | ||||
|    * @brief DFRobot Loudness Sensor V2 | ||||
|    * @defgroup hyld9767 libupm-hyld9767 | ||||
|    * @ingroup dfrobot analog sound | ||||
|    */ | ||||
|  | ||||
|   /** | ||||
|    * @library hyld9767 | ||||
|    * @sensor hyld9767 | ||||
|    * @comname DFRobot Loudness Sensor V2 | ||||
|    * @altname HYLD9767 | ||||
|    * @type sound | ||||
|    * @man dfrobot | ||||
|    * @web http://www.dfrobot.com/index.php?route=product/product&product_id=83 | ||||
|    * @con analog | ||||
|    * | ||||
|    * @brief API for the DFRobot Loudness Sensor V2 | ||||
|    * | ||||
|    * This sensor returns an analog voltage proportional to the | ||||
|    * loudness of the ambient environment.  It's output does not | ||||
|    * correspond to a particular sound level in decibels. | ||||
|    * | ||||
|    * This device uses an HYLD9767 electret microphone for sound input. | ||||
|    * | ||||
|    * This driver was developed using the DFRobot Loudness Sensor V2 | ||||
|    * | ||||
|    * @snippet hyld9767.cxx Interesting | ||||
|    */ | ||||
|  | ||||
|   class HYLD9767 { | ||||
|   public: | ||||
|  | ||||
|     /** | ||||
|      * HYLD9767 constructor | ||||
|      * | ||||
|      * @param pin Analog pin to use | ||||
|      * @param aref Analog reference voltage; default is 5.0 V | ||||
|      */ | ||||
|     HYLD9767(int pin, float aref=5.0); | ||||
|  | ||||
|     /** | ||||
|      * HYLD9767 destructor | ||||
|      */ | ||||
|     ~HYLD9767(); | ||||
|  | ||||
|     /** | ||||
|      * Returns the voltage detected on the analog pin | ||||
|      * | ||||
|      * @return The detected voltage | ||||
|      */ | ||||
|     float loudness(); | ||||
|  | ||||
|   protected: | ||||
|     mraa::Aio m_aio; | ||||
|  | ||||
|   private: | ||||
|     float m_aref; | ||||
|     // ADC resolution | ||||
|     int m_aRes; | ||||
|   }; | ||||
| } | ||||
|  | ||||
|  | ||||
							
								
								
									
										8
									
								
								src/hyld9767/javaupm_hyld9767.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/hyld9767/javaupm_hyld9767.i
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| %module javaupm_hyld9767 | ||||
| %include "../upm.i" | ||||
|  | ||||
| %{ | ||||
|     #include "hyld9767.h" | ||||
| %} | ||||
|  | ||||
| %include "hyld9767.h" | ||||
							
								
								
									
										8
									
								
								src/hyld9767/jsupm_hyld9767.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/hyld9767/jsupm_hyld9767.i
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| %module jsupm_hyld9767 | ||||
| %include "../upm.i" | ||||
|  | ||||
| %{ | ||||
|     #include "hyld9767.h" | ||||
| %} | ||||
|  | ||||
| %include "hyld9767.h" | ||||
							
								
								
									
										9
									
								
								src/hyld9767/pyupm_hyld9767.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/hyld9767/pyupm_hyld9767.i
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| %module pyupm_hyld9767 | ||||
| %include "../upm.i" | ||||
|  | ||||
| %feature("autodoc", "3"); | ||||
|  | ||||
| %include "hyld9767.h" | ||||
| %{ | ||||
|     #include "hyld9767.h" | ||||
| %} | ||||
| @@ -278,6 +278,12 @@ | ||||
|  * @ingroup byman | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * @brief DFRobot | ||||
|  * @defgroup dfrobot DFRobot | ||||
|  * @ingroup byman | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * @brief EpicTinker | ||||
|  * @defgroup epict EpicTinker | ||||
| @@ -358,4 +364,4 @@ | ||||
|  * @brief Robotics Kit - Sensors for your robot | ||||
|  * @defgroup robok Robotics Kit | ||||
|  * @ingroup bykit | ||||
|  */ | ||||
|  */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user