mám základní desku Arduino UNO, akcelerometr ADXL345 a SD Data logger shield. Vše mi funguje, jen maximální naměřená hodnota je 2 G. V manuálech je, že tento akcelerometr dokáže měřit až v rozsahu +- 16 G. Nevěděli byste někdo prosím, jak nastavit větší maximální rozsah? Zde přikládám svůj kod. Děkuji předem za odpověď.
Kód: Vybrat vše
////////////////////////////////////////////////////////knihovny
#include <Wire.h>
#include <SD.h>
#include <SPI.h>
#include "RTClib.h"
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();
/////////////////////////////////////////////////////piny
const int sd_CS = 10;
int ADXL345Pin = A4;
////////////////////////////////////////////////////nastavení času
RTC_DS1307 DS1307;
char seznamDni[7][8] = {"nedele", "pondeli", "utery", "streda", "ctvrtek", "patek", "sobota"};
void setup()
////////////////////////////////////////////////////nastavení času
{ Serial.begin(9600);
if (! DS1307.begin()) {
Serial.println("Hodiny nejsou pripojeny!");
while (1);}
if (! DS1307.isrunning()) {
Serial.println("Hodiny nejsou spusteny! Spoustim nyni..");}
////////////////////////////////////////////////////nastavení SD karty
SD.begin(sd_CS);
if (!SD.begin(sd_CS)) {
Serial.println("SD karta neni pripojena nebo je vadna!");
return;}
Serial.begin(9600);
if(!accel.begin())
{Serial.println("No ADXL345 sensor detected.");
while(1);}
/////////////////////////////////////////////////čas - nejlepší bude tam dát 00:00:00 pro lepší čtení
DS1307.adjust(DateTime(2020, 11, 21, 00, 00, 00));}
void loop(void)
///////////////////////////////////////////////////nastavení času do smyčky - asi jen na sériovou linku
{DateTime datumCas = DS1307.now();
Serial.print("Aktualni cas ");
Serial.print(datumCas.hour());
Serial.print(':');
Serial.print(datumCas.minute());
Serial.print(':');
Serial.print(datumCas.second());
Serial.print(", ");
Serial.print(seznamDni[datumCas.dayOfTheWeek()]);
Serial.print(" ");
Serial.print(datumCas.day());
Serial.print('.');
Serial.print(datumCas.month());
Serial.print('.');
Serial.print(datumCas.year());
Serial.println();
////////////////////////////////////////////////////////nastavení akcelerometru
sensors_event_t event;
accel.getEvent(&event);
accel.read16(ADXL345Pin);
String X = String(event.acceleration.x/9.81); X += "g ";
String Y = String(event.acceleration.y/9.81); Y += "g ";
String Z = String(event.acceleration.z/9.81); Z += "g ";
////////////////////////////////////////////////////////čtení času a akcelerometru
String dataString = X + Y + Z + (datumCas.hour()) + ":" + (datumCas.minute()) + ":" + (datumCas.second());
////////////////////////////////////////////////////////nastavení akcelerometru - jen na sériovou linku
Serial.print("X: "); Serial.print(event.acceleration.x/9.81); Serial.print(" ");
Serial.print("Y: "); Serial.print(event.acceleration.y/9.81); Serial.print(" ");
Serial.print("Z: "); Serial.print(event.acceleration.z/9.81); Serial.print(" ");
Serial.println("g ");
/////////////////////////////////////////////////////////vytvoření souboru na SD kartě
File zapisDat = SD.open("mereni.txt", FILE_WRITE);
if(zapisDat) {
zapisDat.println(dataString);
zapisDat.close();}
delay(500);}