Ich habe mir mal deinen Code angeschaut und folgenden Code auf den Arduino geladen:
-------------------------------------------------------------------------------------------------------------------------------------
#include <Servo.h>
#define analogPin0 0 //RSSI Wert von Empfänger 1 an Eingang 0
#define analogPin1 1 //RSSI Wert von Empfänger 2 an Eingang 1
#define analogPin2 2 //RSSI Wert von Empfänger 3 an Eingang 2
#define analogPin3 3 //RSSI Wert von Empfänger 4 an Eingang 3
Servo Servohorizontal; //Servo für horizontales Schwenken wird deklariert
Servo Servovertikal; //Servo für vertikales Schwenken wird deklariert
int analogWert1; //RSSI Wert 1
int analogWert2; //RSSI Wert 2
int analogWert3; //RSSI Wert 3
int analogWert4; //RSSI Wert 4
int Oben_high=0;
int Oben_low=0;
int Unten_high=0;
int Unten_low=0;
int Rechts_high=0;
int Rechts_low=0;
int Links_high=0;
int Links_low=0;
int calibrated=0;
int mittelPosition = 93; //Servo horizontal (modifiziert sollte hier stehen bleiben)
int mittelPosition2 = 90; //Servo vertikal (unmodifiziert, steht hier in der Mitte)
void calibrate ()
{
for ( int x = 1 ; x<10; x++)
{
delay(1000);
}
Oben_low = analogRead(analogWert3);
Unten_low = analogRead(analogWert4);
delay (300);
Rechts_low = analogRead(analogWert1);
Links_low = analogRead(analogWert2);
for ( int x = 1 ; x<20; x++)
{
delay(1000);
}
//----------------------------------------------------------
Oben_high = analogRead(analogWert3);
Unten_high = analogRead(analogWert4);
Rechts_high = analogRead(analogWert1);
Links_high = analogRead(analogWert2);
calibrated = 1;
}
int Horizontal ()
{
int Antenne1= analogRead (analogWert1);
int Antenne2= analogRead (analogWert2);
int prozent1 = map(Antenne1,Rechts_low,Rechts_high,1,100);
int prozent2 = map(Antenne2,Links_low,Links_high,1,100);
int Berechnung1 = prozent1-prozent2;
return Berechnung1;
}
int Vertikal ()
{
int Antenne3= analogRead (analogWert3);
int Antenne4= analogRead (analogWert4);
int prozent3 = map(Antenne3,Oben_low,Oben_high,1,100);
int prozent4 = map(Antenne4,Unten_low,Unten_high,1,100);
int Berechnung2= prozent3-prozent4;
return Berechnung2;
}
void setup ()
{
Servohorizontal.attach(9); //Servo 1 wird an Pin 9 angeschlossen
Servovertikal.attach(10); //Servo 2 wird an Pin 10 angeschlossen
}
void loop ()
{
if ( calibrated != 1)
{
calibrate();
}
else
{
int dHori= Horizontal();
Servohorizontal.write(mittelPosition+dHori);
int dVert= Vertikal();
Servovertikal.write(mittelPosition2+dVert);
delay (100);
}
}
---------------------------------------------------------------------------------------------------------------------------------------
Der Tracker bildet nun min und max-Werte (10 Sekunden bzw. 30), doch dann macht er nichts mehr.
Er sucht nicht mehr. Ich glaube, ich habe etwas falsch übernommen im Programmcode. Ich habe das Gefühl, dass er die Map-Funktion nicht richtig ausführt.
Werde noch mal deinen Code als Referenz anschauen, falls das auch nichts hilft, werde ich mal mit Serial.print die Werte auf das Laptop übertragen.
Danke für deine Hilfe!
Gruß
Tim
-------------------------------------------------------------------------------------------------------------------------------------
#include <Servo.h>
#define analogPin0 0 //RSSI Wert von Empfänger 1 an Eingang 0
#define analogPin1 1 //RSSI Wert von Empfänger 2 an Eingang 1
#define analogPin2 2 //RSSI Wert von Empfänger 3 an Eingang 2
#define analogPin3 3 //RSSI Wert von Empfänger 4 an Eingang 3
Servo Servohorizontal; //Servo für horizontales Schwenken wird deklariert
Servo Servovertikal; //Servo für vertikales Schwenken wird deklariert
int analogWert1; //RSSI Wert 1
int analogWert2; //RSSI Wert 2
int analogWert3; //RSSI Wert 3
int analogWert4; //RSSI Wert 4
int Oben_high=0;
int Oben_low=0;
int Unten_high=0;
int Unten_low=0;
int Rechts_high=0;
int Rechts_low=0;
int Links_high=0;
int Links_low=0;
int calibrated=0;
int mittelPosition = 93; //Servo horizontal (modifiziert sollte hier stehen bleiben)
int mittelPosition2 = 90; //Servo vertikal (unmodifiziert, steht hier in der Mitte)
void calibrate ()
{
for ( int x = 1 ; x<10; x++)
{
delay(1000);
}
Oben_low = analogRead(analogWert3);
Unten_low = analogRead(analogWert4);
delay (300);
Rechts_low = analogRead(analogWert1);
Links_low = analogRead(analogWert2);
for ( int x = 1 ; x<20; x++)
{
delay(1000);
}
//----------------------------------------------------------
Oben_high = analogRead(analogWert3);
Unten_high = analogRead(analogWert4);
Rechts_high = analogRead(analogWert1);
Links_high = analogRead(analogWert2);
calibrated = 1;
}
int Horizontal ()
{
int Antenne1= analogRead (analogWert1);
int Antenne2= analogRead (analogWert2);
int prozent1 = map(Antenne1,Rechts_low,Rechts_high,1,100);
int prozent2 = map(Antenne2,Links_low,Links_high,1,100);
int Berechnung1 = prozent1-prozent2;
return Berechnung1;
}
int Vertikal ()
{
int Antenne3= analogRead (analogWert3);
int Antenne4= analogRead (analogWert4);
int prozent3 = map(Antenne3,Oben_low,Oben_high,1,100);
int prozent4 = map(Antenne4,Unten_low,Unten_high,1,100);
int Berechnung2= prozent3-prozent4;
return Berechnung2;
}
void setup ()
{
Servohorizontal.attach(9); //Servo 1 wird an Pin 9 angeschlossen
Servovertikal.attach(10); //Servo 2 wird an Pin 10 angeschlossen
}
void loop ()
{
if ( calibrated != 1)
{
calibrate();
}
else
{
int dHori= Horizontal();
Servohorizontal.write(mittelPosition+dHori);
int dVert= Vertikal();
Servovertikal.write(mittelPosition2+dVert);
delay (100);
}
}
---------------------------------------------------------------------------------------------------------------------------------------
Der Tracker bildet nun min und max-Werte (10 Sekunden bzw. 30), doch dann macht er nichts mehr.
Er sucht nicht mehr. Ich glaube, ich habe etwas falsch übernommen im Programmcode. Ich habe das Gefühl, dass er die Map-Funktion nicht richtig ausführt.
Werde noch mal deinen Code als Referenz anschauen, falls das auch nichts hilft, werde ich mal mit Serial.print die Werte auf das Laptop übertragen.
Danke für deine Hilfe!
Gruß
Tim
Zuletzt bearbeitet: