Проблемы с сенсорным экраном и интерфейсом adxl335 (gy61) - PullRequest
0 голосов
/ 27 апреля 2019

Я возиться с платой 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);
}
...