Warten bis analogRead vorgegebene Werte erreicht

Hallo zusammen.

Ich möchte gerne eine Art Spiel mit dem Arduino bauen.
Es ist dabei ein Würfel der nacheinander in verschiedene Richtungen bewegt werden soll.

Ich verwende einen Arduino nano sowie einen ADXL335.
(X; Y; und Z werden jeweils als Analogspannung ausgegeben)

Mein Problem besteht jetzt darin, dass gewartet werden soll, bis die X; Y; und Z Achse innerhalb der vorgegebenen Werte liegt. Allerdings macht die serielle Ausgabe einfach weiter, egal in welcher Position der ADXL335 ist.

Gibt es einen besseren Weg, oder was mache ich falsch?

Vielen Dank schonmal und Grüße.

#include<math.h>


const int x_out = A0;
const int y_out = A1; 
const int z_out = A2; 

void setup() 
{
Serial.begin(9600);

}


void loop()
{
  int x_adc_value,y_adc_value,z_adc_value;
  double x_g_value, y_g_value,z_g_value; double roll, pitch, yaw;
  double i;
  x_adc_value = analogRead(x_out);
  /* Digital value of voltage on x_out pin */
  y_adc_value = analogRead(y_out);
  /* Digital value of voltage on y_out pin */
  z_adc_value = analogRead(z_out);
  /* Digital value of voltage on z_out pin */


if(((x_adc_value > 330) && (x_adc_value < 360 )) && ((y_adc_value > 330) && (y_adc_value < 360 )) && ((z_adc_value > 410) && (z_adc_value < 430 ))){
   Serial.print("Das Objekt ist gerade \n");
   delay(1500);
}

RaffaySH:
Mein Problem besteht jetzt darin, dass gewartet werden soll, bis die X; Y; und Z Achse innerhalb der vorgegebenen Werte liegt. Allerdings macht die serielle Ausgabe einfach weiter, egal in welcher Position der ADXL335 ist.
Gibt es einen besseren Weg, oder was mache ich falsch?

if(((x_adc_value > 330) && (x_adc_value < 360 )) && ((y_adc_value > 330) && (y_adc_value < 360 )) && ((z_adc_value > 410) && (z_adc_value < 430 ))){

Serial.print("Das Objekt ist gerade \n");
  delay(1500);
}

würde ich ändern.
aus dem if ein while machen und die Achesenabfrage als Funktion auslagern und auf das delay komplett verzichten.

Solange die Werte jetzt passen, wird auf dem SerMon ausgegeben. Oder eben in eine andere Funktion verzweigt.
Mit Deinem delay() verzerrst Du die Behandlung der Sensoren.

Notfalls lass Dir die Werte der Sensoren auf dem SerMon ausgeben.

[Edit]
Ich hab das mal zusammengebastelt, wie ich es machen würde:

#include<math.h>

const int x_out = A0;
const int y_out = A1;
const int z_out = A2;

void setup()
  {
  Serial.begin(115200);
  }

bool gerade()
  {
  bool zustand = false;
  int x_adc_value, y_adc_value, z_adc_value = 0;
  x_adc_value = analogRead(x_out);
  y_adc_value = analogRead(y_out);
  z_adc_value = analogRead(z_out);
  Serial.print(x_adc_value);
  Serial.print("\t");
  Serial.print(y_adc_value);
  Serial.print("\t");
  Serial.println(z_adc_value);
  if (((x_adc_value > 330) && (x_adc_value < 360)) && ((y_adc_value > 330) && (y_adc_value < 360)) && ((z_adc_value > 410) && (z_adc_value < 430)))
    {
    zustand = true;
    }
  return zustand;
  }

void loop()
  {
  while (gerade())
    {
    // Dieser Teil wird solange wiederholt, wie das Objekt gerade ist.
    Serial.print("Das Objekt ist gerade \n");
    }
  // Hier geht es nur weiter, wenn das Objekt in Schieflage steht
  Serial.print("Das Objekt ist schief \n");
  }