본문 바로가기

개발자/Arduino

SmartEverything LSM6DS3 라이브러리 사용법 - 3축 가속도계와 3축 각속도 센서

반응형

 

 

Nano 33 IoT 보드의 3축 가속도계와 3축 각속도 센서인 LSM6DS3 연구 중 라이브러리가 있어 잠시 소개합니다. 아래는 설명입니다. 

 

SmartEverything ST LSM6DS3 3D accelerometer, 3D gyroscope 

 

LSM6DS3 iNEMO 관성 모듈 용 라이브러리 코드 : 3D 가속도계, 3D 자이로 스코프 LSM6DS3는 3D 디지털 선형 가속 센서, 3D 디지털 각도 속도 센서를 갖춘 시스템 인 패키지입니다. LSM6DS3는 ± 2g / ± 4g / ± 8 / ± 16g의 선형 가속 풀 스케일, ± 4 / ± 8 / ± 12 / ± 16 가우스의 자기장 풀 스케일 및 ± 245 / ± 500의 각도 속도를 갖습니다. / ± 2000dps. LSM6DS3에는 표준 및 고속 모드 (100kHz 및 400kHz)를 지원하는 I2C 직렬 버스 인터페이스와 SPI 직렬 표준 인터페이스가 포함되어 있습니다. 가속도계 및 자이로 스코프 감지는 스마트 전원 관리를 위해 별도로 전원 차단 모드에서 활성화하거나 설정할 수 있습니다. * ST LSM6DS3 Home Page *

 

이 라이브러리는 모든 아키텍처 와 호환 되므로 모든 Arduino 보드에서 사용할 수 있어야 합니다. 

 

이 라이브러리를 사용하려면 Arduino IDE에서 Library Manager를 열고 거기에서 설치하십시오. 라이브러리 관리자를 열고 아래 화면처럼 검색창에서 검색하여 설치한다. 주의할 점은 나중에 테스트할 때 비슷한 라이브러리인 Arduino_LSM6DS3 라이브러리와 충돌이 나는 데 어느 한 라이브러리만 삭제하면 됩니다. 라이브러리 설치 위치는 아마도

C:\Users\girin\Documents\Arduino\libraries\Arduino_LSM6DS3 이런 곳이니 참고하세요.

 

 

일단 라이브러리 코드 페이지를 참고하고 특히 Acccelerometer 와 Gyroscope 사용에 유용한 함수들이 많습니다. 아직 검토하지 않음. 아래 가속도 함수 코드를 첨부합니다.

 

 /*
 * AccelerometerFunctions
 *
 *  Created on: 29/09/2016 23:02:00
 * by Zero-2 (Zero2sat@gmail.com)
 * 
 * License Information
 * -------------------
 *
 * Copyright (c) Axel Elettronica Srl. All right reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 */
#include <Arduino.h>
#include "LSM6DS3.h"
#include "Wire.h"

void setup() {
	pinMode(PIN_LED_13,OUTPUT);
	Wire.begin();
	Serial.begin(115200);
	while(!Serial){};
	//Begin should be called after Wire.begin()
	accelerometer.begin();
}

void printMenu(){
	Serial.println("Test Menu'");
	Serial.println("Actions");
	Serial.println("1 - PowerOn Sensor");
	Serial.println("2 - PowerOff Sensor");
	Serial.println("3 - Reset to Default Values");
	Serial.println("4 - Print Sensor Status");
	Serial.println("5 - Print Sensor Registry Values");
	Serial.println("6 - Print values");
	Serial.println("Output Data Rate");
	Serial.println("7 - Pass to 12,5Hz");
	Serial.println("8 - Pass to 26Hz");
	Serial.println("9 - Pass to 52Hz");
	Serial.println("10 - Pass to 104Hz (Default)");
	Serial.println("11 - Pass to 208Hz");
	Serial.println("12 - Pass to 416Hz");
	Serial.println("13 - Pass to 833Hz");
	Serial.println("14 - Pass to 1,66KHz");
	Serial.println("15 - Pass to 3,33Khz");
	Serial.println("16 - Pass to 6,66Khz");
	Serial.println("Full Scale");
	Serial.println("17 - Pass to +/- 2G (Default)");
	Serial.println("18 - Pass to +/- 4G");
	Serial.println("19 - Pass to +/- 8G");
	Serial.println("20 - Pass to +/- 16G");
	Serial.println("Bandwidth");
	Serial.println("21 - Pass to 50Hz");
	Serial.println("22 - Pass to 100Hz");
	Serial.println("23 - Pass to 200Hz");
	Serial.println("24 - Pass to 400Hz (Default)");
	Serial.println("Operating Mode");
	Serial.println("25 - Pass Normal");
	Serial.println("26 - High Performance (Default)");
	Serial.println("Choose a command");
	while(Serial.available() == 0){}
	digitalWrite(PIN_LED_13,HIGH);
	String read=Serial.readString();
	int value=read.toInt();
	Serial.println("+++++++++++++++++++++++++++++++++++++");
	switch(value){
		case 1:
			Serial.println("Power On");
			accelerometer.powerOn();
			break;
		case 2:
			Serial.println("Power Off");
			accelerometer.powerOff();
			break;
		case 3:
			Serial.println("Reset To Default Values");
			accelerometer.resetToDefault();
			break;
		case 4:
			if(accelerometer.isActive()){
				Serial.println("Accelerometer is Active");
			}else{
				Serial.println("Accelerometer is not Active");
			}
			break;
		case 5:
			Serial.println(accelerometer.getStatus());
		break;
		case 6:
			for(int i=1;i<=10;i++){
				Serial.println("*********************************************");
				Serial.print("Raw  X = ");
				Serial.print(accelerometer.getRawXAxis());
				Serial.print("     Y = ");
				Serial.print(accelerometer.getRawYAxis());
				Serial.print("     Z = ");
				Serial.println(accelerometer.getRawZAxis());
				Serial.print(" X = ");
				Serial.print(accelerometer.getConvertedXAxis(), 2);
				Serial.print("g Y = ");
				Serial.print(accelerometer.getConvertedYAxis(), 2);
				Serial.print("g Z = ");
				Serial.print(accelerometer.getConvertedZAxis(), 2);
				Serial.println("g");
				Serial.println("*********************************************");
				delay(1000);
			}
			break;
		case 7:
			Serial.println("Change OutputDataRate to 12.5Hz");
			accelerometer.changeOutputDataRate(POWER_12_5_HZ);
			break;
		case 8:
			Serial.println("Change OutputDataRate to 26Hz");
			accelerometer.changeOutputDataRate(POWER_26_HZ);
			break;
		case 9:
			Serial.println("Change OutputDataRate to 52Hz");
			accelerometer.changeOutputDataRate(POWER_52_HZ);
			break;		
		case 10:
			Serial.println("Change OutputDataRate to 104Hz");
			accelerometer.changeOutputDataRate(POWER_104_HZ);
			break;
		case 11:
			Serial.println("Change OutputDataRate to 208Hz");
			accelerometer.changeOutputDataRate(POWER_208_HZ);
			break;
		case 12:
			Serial.println("Change OutputDataRate to 416Hz");
			accelerometer.changeOutputDataRate(POWER_416_HZ);
			break;
		case 13:
			Serial.println("Change OutputDataRate to 833Hz");
			accelerometer.changeOutputDataRate(POWER_833_HZ);
			break;
		case 14:
			Serial.println("Change OutputDataRate to 1.66KHz");
			accelerometer.changeOutputDataRate(POWER_1_66_KHZ);
			break;
		case 15:
			Serial.println("Change OutputDataRate to 3.33KHz");
			accelerometer.changeOutputDataRate(POWER_3_33_KHZ);
			break;
		case 16:
			Serial.println("Change OutputDataRate to 6.66KHz");
			accelerometer.changeOutputDataRate(POWER_6_66_KHZ);
			break;
		case 17:
			Serial.println("Change Full Scale to ±2G");
			accelerometer.changeFullScale(XL_FS_2G);
			break;
		case 18:
			Serial.println("Change Full Scale to ±4G");
			accelerometer.changeFullScale(XL_FS_4G);
			break;
		case 19:
			Serial.println("Change Full Scale to ±8G");
			accelerometer.changeFullScale(XL_FS_8G);
			break;
		case 20:
			Serial.println("Change Full Scale to ±16G");
			accelerometer.changeFullScale(XL_FS_16G);
			break;
		case 21:
			Serial.println("Change Bandwidth to 50Hz");
			accelerometer.changeBandwidth(XL_Band_50Hz);
			break;
		case 22:
			Serial.println("Change Bandwidth to 100Hz");
			accelerometer.changeBandwidth(XL_Band_100Hz);
			break;
		case 23:
			Serial.println("Change Bandwidth to 200Hz");
			accelerometer.changeBandwidth(XL_Band_200Hz);
			break;
		case 24:
			Serial.println("Change Bandwidth to 400Hz");
			accelerometer.changeBandwidth(XL_Band_400Hz);
			break;
		case 25:
			Serial.println("Change Operating Mode to Normal");
			accelerometer.changeOperatingMode(XL_HM_Normal);
			break;
		case 26:
			Serial.println("Change Operating Mode to High Performance");
			accelerometer.changeOperatingMode(XL_HM_High_Performance);
			break;
		default:
			Serial.println("Unknown Command");
	}
	Serial.println("+++++++++++++++++++++++++++++++++++++");
	digitalWrite(PIN_LED_13,LOW);
}

void loop() {
	printMenu();
}

 

참고사이트 www.arduino.cc/reference/en/libraries/smarteverything-lsm6ds3/

 

 

월요일이 다가온다.

 

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩