Hallo Community,
ich habe folgenden Code geschrieben.
Wenn ich kompilieren will dann kommt eine Fehlermeldung, die ich nicht ganz verstehe:
c:/program files/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr6/crtm2560.o: In function __vector_default': (.vectors+0x64): relocation truncated to fit: R_AVR_13_PCREL against symbol
__vector_25' defined in .text.__vector_25 section in core.a(HardwareSerial.cpp.o)
Mein Code lautet wie folgt:
#include <Servo.h>
Servo Servo1;
Servo Servo2;
float Toleranzwert = 0.01;
float Differenz;
const int TRIG_PIN1 = 12;
const int ECHO_PIN1 = 13;
const int ECHO_PIN2 = 8;
const int TRIG_PIN2 = 9;
void setup() {
// initialize serial communication:
Serial.begin(9600);
pinMode(TRIG_PIN1,OUTPUT);
pinMode(ECHO_PIN1,INPUT);
pinMode(TRIG_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
Servo1.attach(50);
Servo2.attach(51);
}
void loop()
{
long duration1, distanceCm1;
long duration2, distanceCm2;
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
digitalWrite(TRIG_PIN1, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN1, HIGH);
delayMicroseconds(2);
digitalWrite(TRIG_PIN1, LOW);
duration1 = pulseIn(ECHO_PIN1,HIGH);
// convert the time into a distance
distanceCm1 = duration1 / 29.1 / 2 ;
if (distanceCm1 <= 0){
Serial.println("Out of range");
}
else {
Serial.print(distanceCm1);
Serial.print("cm");
Serial.println();
}
digitalWrite(TRIG_PIN2, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN2, HIGH);
delayMicroseconds(2);
digitalWrite(TRIG_PIN2, LOW);
duration2 = pulseIn(ECHO_PIN2,HIGH);
// convert the time into a distance
distanceCm2 = duration2 / 29.1 / 2 ;
if (distanceCm2 <= 0){
Serial.println("Out of range");
}
else {
Serial.print(distanceCm2);
Serial.print("cm");
Serial.println();
}
delay(100);
Differenz = abs(distanceCm2 - distanceCm1);
if(((distanceCm1 + distanceCm2)/2) > 53) {
while (((distanceCm1 + distanceCm2)/2) > 53)
{
Servo1.write(93);
Servo2.write(100);
while ( Differenz > Toleranzwert)
{
if ( distanceCm2 > distanceCm1)
{
Servo2.write(120);
Servo1.write(90);
}
else
{
Servo1.write(120);
Servo2.write(90);
}
Differenz = abs(distanceCm2 - distanceCm1);
}
}
}
else if(((distanceCm1 + distanceCm2)/2) < 48) {
while (((distanceCm1 + distanceCm2)/2) < 48)
{
Servo2.write(93);
Servo1.write(100);
while ( Differenz > Toleranzwert)
{
if ( distanceCm2 > distanceCm1)
{
Servo2.write(120);
Servo1.write(90);
}
else
{
Servo1.write(120);
Servo2.write(90);
}
Differenz = abs(distanceCm2 - distanceCm1);
}
}
}
else {
if(Differenz <= Toleranzwert)
{
Servo1.write(100);
Servo2.write(100);
}
}
}