Hallo,
das Ziel von meinem Projekt ist es ein Objekt in einem Raum zu erkennen mit hilfe von einem "Radar". Also Ultraschallsensor an einem Schrittmotor befestigt.
Was ich bisher programmiert habe ist: Es werden 4 Scanns des Raumes durchgeführt und jeweils in ein Array geschrieben. Dann nehme ich mir diese 4 Arrays und vergleiche an der Stelle i die Werte, filter den größten und kleinsten raus und aus den anderen 2 bilde ich den Mittelwert. Diesen schreibe ich in das Array "a_ref[ii]". Diese Werte sollen später als Referenz dienen.
Im Moment möchte ich mir alle Werte ausgeben, um diese kontrollieren zu können. Jetzt kommt mein Problem: Sobald ich in der letzten for-Schleife das kommentierte entkommentiere kommt es zu einer endlos-Schleife bei der for-Schleife, wo das a[ii] Array gesetzt wird.. Es wird nur noch von 0 bis 6 gezählt und dann wieder von vorne und es werden keine Werte in das Array geschrieben.
Woran kann das liegen?? Wie kann ein Serial.print so auswirkungen haben?
Danke für eure Antworten.
#include <CheapStepper.h>
CheapStepper myStepper(2,3,4,5);
const int grad=120;
int a_ref[grad]; //120 bedeutet 120 Elemente, Indizes von 0 bis 119
int a_ver[grad];
int a_v[grad];
int end_one=6, tasterstatus_one;
int trigger=8;
int echo=9;
long dauer=0;
long entfernung=0;
void setup() {
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
myStepper.setRpm(5);
Serial.begin(9600);
int a[grad], b[grad], c[grad], d[grad], f=0;
for (int n=0; n<grad+1; n++)
{
a_ref[n]=f;
a_ver[n]=f;
a[n]=f;
b[n]=f;
c[n]=f;
d[n]=f;
}
for (int i=0; i<grad; i++)
{
myStepper.moveDegreesCW (1);
digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
dauer = pulseIn(echo, HIGH,24000);
a[i]= (dauer/2) * 0.03432;
Serial.print("A: ");
Serial.print(i);
Serial.print("-");
Serial.print(a[i]);
Serial.print(" #### ");
}
Serial.println("");
for (int i=grad-1; i> -1; i--)
{
digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
dauer = pulseIn(echo, HIGH,24000);
b[i]= (dauer/2) * 0.03432;
Serial.print("B: ");
Serial.print(i);
Serial.print("-");
Serial.print(b[i]);
Serial.print(" #### ");
myStepper.moveDegreesCCW (1);
}
Serial.println("");
for (int i=0; i<grad; i++)
{
myStepper.moveDegreesCW (1);
digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
dauer = pulseIn(echo, HIGH,24000);
c[i]= (dauer/2) * 0.03432;
Serial.print("C: ");
Serial.print(i);
Serial.print("-");
Serial.print(c[i]);
Serial.print(" #### ");
}
Serial.println("");
for (int i=grad-1; i> -1; i--)
{
digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
dauer = pulseIn(echo, HIGH,24000);
d[i]= (dauer/2) * 0.03432;
Serial.print("D: ");
Serial.print(i);
Serial.print("-");
Serial.print(d[i]);
Serial.print(" #### ");
myStepper.moveDegreesCCW (1);
}
Serial.println("");
Serial.println("");
for (int i=0; i<grad; i++)
{
int maximal=0, minimal=9999;
if (a[i]>maximal) {maximal=a[i];}
if (b[i]>maximal) {maximal=b[i];}
if (c[i]>maximal) {maximal=c[i];}
if (d[i]>maximal) {maximal=d[i];}
if (a[i]<minimal) {minimal=a[i];}
if (b[i]<minimal) {minimal=b[i];}
if (c[i]<minimal) {minimal=c[i];}
if (d[i]<minimal) {minimal=d[i];}
a_ref[i]=(a[i]+b[i]+c[i]+d[i]-maximal-minimal)/2;
}
for (int i=0; i<grad; i++)
{
Serial.print(i);
Serial.print("-");
Serial.print(a[i]);
Serial.print(" | ");
Serial.print(b[i]);
Serial.print(" | ");
Serial.print(c[i]);
Serial.print(" | ");
Serial.print(d[i]);
Serial.print(" ### ");
}
Serial.println("");
Serial.println("");
for (int i=0; i<grad; i++)
{
Serial.print(i);
Serial.print("-");
// Serial.print(a_ref[i]);
Serial.print(" ### ");
}
}
void loop() {
}