Я возиться с платой Gy61 и Arduino ... после некоторых попыток я получил код для запуска, чтобы я мог получить g значений из Arduino.
Arduino подключен кADXL с 5 В на плате (которая преобразует его в 3,3 В) и осями к эквивалентным выводам от gnd до gnd
3.3 В Arduino подключен к выводу Aref, чтобы заставить мега Arduino использовать 3.3v для получения пропорционального выходного сигнала, который позволяет линейно вычислять g
Теперь я попытался настроить gy61 с сенсорным экраном, который также использует аналоговые контакты, но на основе 5 В в сочетании сбиблиотека ... в результате этого значения координации на сенсорном экране были перемещены из-за аналога в настройке ... поэтому я попытался перенести arduinoreference на часть аналогового чтения и после этого установить его обратно в значение по умолчанию, но на самом деле это не такпомочь, потому что Arduino теперь возвращает значения правильно, но только отрицательные ... почему-то он не может рассчитать значение выше+0,05 г
может кто-нибудь подскажет, куда делись мои положительные значения или я сейчас неправильно вычисляю?
Я также пытался перемещаться по аналогу (DEFAULT) к различным точкам в программе, но единственное, что он работает правильно, - это когда аналоговый реф (ВНЕШНИЙ) находится в установочной части программы
const int xInput = A8;
const int yInput = A9;
const int zInput = A10;
float xAccel;
float yAccel;
float zAccel;
// initialize minimum and maximum Raw Ranges for each axis
int RawMin = 0;
int RawMax = 1023;
// Take multiple samples to reduce noise
const int sampleSize = 10;
void setup()
{
//analogReference(EXTERNAL); // I needed to comment this out in order to get the touchscreen to run
Serial.begin(9600);
}
void loop()
{
//Read raw values
int xRaw = ReadAxis(xInput);
int yRaw = ReadAxis(yInput);
int zRaw = ReadAxis(zInput);
// Convert raw values to 'milli-Gs"
long xScaled = map(xRaw, RawMin, RawMax, -3000, 3000);
long yScaled = map(yRaw, RawMin, RawMax, -3000, 3000);
long zScaled = map(zRaw, RawMin, RawMax, -3000, 3000);
// re-scale to fractional Gs
xAccel = (float)xScaled/1000.0,2;
yAccel = (float)yScaled/1000.0,2;
zAccel = (float)zScaled/1000.0,2;
Serial.print("X, Y, Z :: ");
Serial.print(xRaw);
Serial.print(", ");
Serial.print(yRaw);
Serial.print(", ");
Serial.print(zRaw);
Serial.print(" :: ");
Serial.print(xAccel,2);
Serial.print("G, ");
Serial.print(yAccel,2);
Serial.print("G, ");
Serial.print(zAccel,2);
Serial.println("G");
delay(200);
}
// Take samples and return the average
int ReadAxis(int axisPin)
{
long reading = 0;
analogRead(axisPin);
analogReference(EXTERNAL);
for (int i = 0; i < sampleSize; i++)
{
reading += analogRead(axisPin);
}
return reading/sampleSize;
delay(10);
analogReference(DEFAULT);
}