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/
'개발자 > Arduino' 카테고리의 다른 글
Arduino와 Processing 상호 제어 (0) | 2020.12.04 |
---|---|
SSD 1306 OLED 디스플레이 원리 (3) | 2020.12.03 |
LSM6DS3 3D 가속도계와 3D 자이로스코프 미세 진동 감지 (0) | 2020.11.30 |
Arduino Nano 33 BLE Sense Sensor 라이브러리 소개 (0) | 2020.11.24 |
Arduino Nano 33 IoT 최강 가이드 (0) | 2020.11.20 |
아두이노 라이브러리 설치하는 방법 3가지 (0) | 2020.11.18 |
Arduino Nano 33 BLE Sense 에서 Bluetooth LE 시작하기 (0) | 2020.11.18 |
Nano 33 BLE Sense 가속도계 LSM9DS1 3D 시각화 (0) | 2020.11.15 |
더욱 좋은 정보를 제공하겠습니다.~ ^^