• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Konfikt Bibliotek
#1
Lightbulb 
Czesc, posiadam plytke UNO R3.

Mam problem z dodaniem dwóch bibliotek na raz, mimo że oddzielnie te biblioteki działają poprawnie. Chodzi o SoftwareSerial.h oraz PCF8574.h, powoduje to taki bład:

libraries\PCF8574\PCF8574.cpp.o (symbol from plugin): In function `port_to_pcmask':

(.text+0x0): multiple definition of `__vector_3'

libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin)Sad.text+0x0): first defined here

libraries\PCF8574\PCF8574.cpp.o (symbol from plugin): In function `port_to_pcmask':

(.text+0x0): multiple definition of `__vector_4'

libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin)Sad.text+0x0): first defined here

libraries\PCF8574\PCF8574.cpp.o (symbol from plugin): In function `port_to_pcmask':

(.text+0x0): multiple definition of `__vector_5'

libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin)Sad.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Błąd kompilacji dla płytki Arduino/Genuino Uno.

Dziekuję za pomoc.

PS: przepraszam za ewentualne bledy to moj pierwszy post

l
 
Odpowiedź
#2
Wklej kod.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#3
Kod:
#include <Servo.h>
#include<SoftwareSerial.h>

#include<math.h>
#include <PCF8574.h>
#include <Wire.h>
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2);
PCF8574 expander;
Servo myservo;
int odleglosc;
int pozycja = 130;
int b;


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

 expander.begin(0x20);
 
 lcd.begin(16, 2); //Deklaracja typu
 lcd.setCursor(0, 0); //Ustawienie kursora
 lcd.print("Start"); //Wyświetlenie tekstu
 lcd.setCursor(0, 1); //Ustawienie kursora
 lcd.print("Start"); //Wyświetlenie tekstu
 // put your setup code here, to run once:
 pinMode(2,OUTPUT);
 pinMode(3,OUTPUT);
 pinMode(4,OUTPUT);
 pinMode(5,OUTPUT);
 pinMode(13,OUTPUT);

 digitalWrite(2,LOW);
 digitalWrite(3,LOW);
 digitalWrite(4,LOW);
 digitalWrite(13,LOW);

 pinMode(A0,OUTPUT);
 pinMode(12,OUTPUT);
 pinMode(7,INPUT);
 pinMode(10,INPUT);


 analogWrite(6,150);
 analogWrite(5,150);
 myservo.attach(11);
 Serial.begin(9600);
 myservo.write(130);
 
}

void loop() {
 // put your main code here, to run repeatedly:
odleglosc = pomiar2();
if(odleglosc<30){
 zatrzymaj();
 delay(100);
 b=kierunek();
 delay(100);
 tyl();
 delay(400);
 zatrzymaj();
 delay(100);
 if(b==1) {
   lewo();
   delay(1500);
   analogWrite(6,150);
 analogWrite(5,150);
 }
 if(b==2){
   prawo();
   delay(1500);
   analogWrite(6,150);
 analogWrite(5,150);
 }
 b=0;
}
else przod();

delay(100);

}

int pomiar1() {
  long czas,dystans;

 digitalWrite(A0, LOW);
 delayMicroseconds(2);
 digitalWrite(A0, HIGH);
 delayMicroseconds(10);
 digitalWrite(A0, LOW);

 czas = pulseIn(7, HIGH);
 dystans = czas / 58;

 return dystans;
}

int pomiar2() {
  long czas,dystans;

 digitalWrite(12, LOW);
 delayMicroseconds(2);
 digitalWrite(12, HIGH);
 delayMicroseconds(10);
 digitalWrite(12, LOW);

 czas = pulseIn(10, HIGH);
 dystans = czas / 58;

 return dystans;
}

void przod(){
 digitalWrite(2,HIGH);
 digitalWrite(3,LOW);
 digitalWrite(4,HIGH);
 digitalWrite(13,LOW);
}

void tyl(){
 digitalWrite(2,LOW);
 digitalWrite(3,HIGH);
 digitalWrite(4,LOW);
 digitalWrite(13,HIGH);
}
void prawo(){
 analogWrite(6,220);
 analogWrite(5,220);
 digitalWrite(2,HIGH);
 digitalWrite(3,LOW);
 digitalWrite(4,LOW);
 digitalWrite(13,HIGH);
}
void lewo(){
 analogWrite(6,220);
 analogWrite(5,220);
 digitalWrite(2,LOW);
 digitalWrite(3,HIGH);
 digitalWrite(4,HIGH);
 digitalWrite(13,LOW);
}
void zatrzymaj(){
 digitalWrite(2,LOW);
 digitalWrite(3,LOW);
 digitalWrite(4,LOW);
 digitalWrite(13,LOW);
}

int kierunek (){
 double szerokosc;
 double dystans;
 double alfa=0;
 double beta=0;
 double alfaPI;
 double betaPI;
 double gammaPI;
 
 double x=0;
 double y=0;
 int a;
 int lewy,prawy;
 int odleglosc2, odleglosc3;
 odleglosc2 = pomiar1();
 while(odleglosc2<40 && pozycja<180){
   myservo.write(pozycja);
   pozycja++;
   delay(50);
   odleglosc2 = pomiar1();
   alfa++;
   Serial.print("alfa : ");
   Serial.print(alfa);
   Serial.println();
 
   delay(100);
   
 }
 delay(300);
lewy = pomiar1();
delay(200);
Serial.print("lewy : ");
   Serial.print(lewy);
   Serial.println();
pozycja = 130;
myservo.write(pozycja);
delay(1500);

odleglosc3 = pomiar1();
Serial.print("odleglosc3 : ");
   Serial.print(odleglosc3);
   Serial.println();

while(odleglosc3<40 && pozycja>80){
   myservo.write(pozycja);
   pozycja--;
   delay(50);
   odleglosc3 = pomiar1();
   beta++;
   Serial.print("beta : ");
   Serial.print(beta);
   Serial.println();
   
   delay(100);
 }
 delay(300);
prawy = pomiar1();
delay(200);
Serial.print("prawy : ");
   Serial.print(prawy);
   Serial.println();
pozycja =130;
myservo.write(pozycja);
delay(1500);

dystans = pomiar2();
Serial.print("dystans : ");
   Serial.print(dystans);
   Serial.println();
delay(200);
Serial.print("alfa : ");
   Serial.print(alfa);
   Serial.println();
    Serial.print("beta : ");
   Serial.print(beta);
   Serial.println();
alfaPI = alfa/180;
 Serial.print("alfaPI : ");
   Serial.print(alfaPI);
   Serial.println();
betaPI = beta/180;
 Serial.print("betaPI : ");
   Serial.print(betaPI);
   Serial.println();
gammaPI=alfaPI+betaPI;
 Serial.print("gammaPI : ");
   Serial.print(gammaPI);
   Serial.println();
x=dystans/cos(alfaPI);
 Serial.print("x : ");
   Serial.print(x);
   Serial.println();
y=dystans/cos(alfaPI);
 Serial.print("y : ");
   Serial.print(y);
   Serial.println();

szerokosc = x*x+y*y - 2*x*y*cos(gammaPI);
 Serial.print("szerokosc : ");
   Serial.print(szerokosc);
   Serial.println();
lcd.clear();
lcd.setCursor(0, 0); //Ustawienie kursora
lcd.print("Szerokosc: "); //Wyświetlenie tekstu
lcd.print(szerokosc);

if(lewy>prawy) a=1;
else a=2;
delay(100);
Serial.print("a : ");
   Serial.print(a);
   Serial.println();
delay(100);

return a;







 
}

Aż po oczach daje taki post jeszcze raz bez "code" i będzie nagroda
 
Odpowiedź
#4
Bóg zapłać adminie za code bo nie dałem rady tego ogarnąćSmile

daj lik do biblotek
Kod:
#include<math.h>
#include <PCF8574.h>
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#5
https://github.com/skywodd/pcf8574_arduino_library to jest PCF8574.
math.h to juz jest wbudowana ale co ma math.h do konfliktu miedzy pcf8574 a SoftwareSerial? Gdzie wyczytalem ze te vectory to sa numery pinow arduino i ze SoftwareSerial uzywa pinu 8 i 9 jako RX i TX ale dalej jest taki sam blad, moze chodzi o piny 3 4 5 ale wgywajac te dwie biblioteki do pustego skecza i tak jest ten sam blad
 
Odpowiedź
#6
Kod:
#include <Servo.h>
#include<SoftwareSerial.h>

#include<math.h>
#include <LiquidCrystal_PCF8574.h>
#include <Wire.h>
#include<LiquidCrystal_I2C.h>
LiquidCrystal_PCF8574 lcd(0x27);  // set the LCD address to 0x27 for a 16 chars and 2 line display

Servo myservo;
int odleglosc;
int pozycja = 130;
int b;


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



lcd.begin(16, 2); //Deklaracja typu
lcd.setCursor(0, 0); //Ustawienie kursora
lcd.print("Start"); //Wyświetlenie tekstu
lcd.setCursor(0, 1); //Ustawienie kursora
lcd.print("Start"); //Wyświetlenie tekstu
// put your setup code here, to run once:
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(13,OUTPUT);

digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(13,LOW);

pinMode(A0,OUTPUT);
pinMode(12,OUTPUT);
pinMode(7,INPUT);
pinMode(10,INPUT);


analogWrite(6,150);
analogWrite(5,150);
myservo.attach(11);
Serial.begin(9600);
myservo.write(130);

}

void loop() {
// put your main code here, to run repeatedly:
odleglosc = pomiar2();
if(odleglosc<30){
zatrzymaj();
delay(100);
b=kierunek();
delay(100);
tyl();
delay(400);
zatrzymaj();
delay(100);
if(b==1) {
   lewo();
   delay(1500);
   analogWrite(6,150);
analogWrite(5,150);
}
if(b==2){
   prawo();
   delay(1500);
   analogWrite(6,150);
analogWrite(5,150);
}
b=0;
}
else przod();

delay(100);

}

int pomiar1() {
  long czas,dystans;

digitalWrite(A0, LOW);
delayMicroseconds(2);
digitalWrite(A0, HIGH);
delayMicroseconds(10);
digitalWrite(A0, LOW);

czas = pulseIn(7, HIGH);
dystans = czas / 58;

return dystans;
}

int pomiar2() {
  long czas,dystans;

digitalWrite(12, LOW);
delayMicroseconds(2);
digitalWrite(12, HIGH);
delayMicroseconds(10);
digitalWrite(12, LOW);

czas = pulseIn(10, HIGH);
dystans = czas / 58;

return dystans;
}

void przod(){
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(13,LOW);
}

void tyl(){
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(13,HIGH);
}
void prawo(){
analogWrite(6,220);
analogWrite(5,220);
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(13,HIGH);
}
void lewo(){
analogWrite(6,220);
analogWrite(5,220);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(13,LOW);
}
void zatrzymaj(){
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(13,LOW);
}

int kierunek (){
double szerokosc;
double dystans;
double alfa=0;
double beta=0;
double alfaPI;
double betaPI;
double gammaPI;

double x=0;
double y=0;
int a;
int lewy,prawy;
int odleglosc2, odleglosc3;
odleglosc2 = pomiar1();
while(odleglosc2<40 && pozycja<180){
   myservo.write(pozycja);
   pozycja++;
   delay(50);
   odleglosc2 = pomiar1();
   alfa++;
   Serial.print("alfa : ");
   Serial.print(alfa);
   Serial.println();

   delay(100);
  
}
delay(300);
lewy = pomiar1();
delay(200);
Serial.print("lewy : ");
   Serial.print(lewy);
   Serial.println();
pozycja = 130;
myservo.write(pozycja);
delay(1500);

odleglosc3 = pomiar1();
Serial.print("odleglosc3 : ");
   Serial.print(odleglosc3);
   Serial.println();

while(odleglosc3<40 && pozycja>80){
   myservo.write(pozycja);
   pozycja--;
   delay(50);
   odleglosc3 = pomiar1();
   beta++;
   Serial.print("beta : ");
   Serial.print(beta);
   Serial.println();
  
   delay(100);
}
delay(300);
prawy = pomiar1();
delay(200);
Serial.print("prawy : ");
   Serial.print(prawy);
   Serial.println();
pozycja =130;
myservo.write(pozycja);
delay(1500);

dystans = pomiar2();
Serial.print("dystans : ");
   Serial.print(dystans);
   Serial.println();
delay(200);
Serial.print("alfa : ");
   Serial.print(alfa);
   Serial.println();
    Serial.print("beta : ");
   Serial.print(beta);
   Serial.println();
alfaPI = alfa/180;
Serial.print("alfaPI : ");
   Serial.print(alfaPI);
   Serial.println();
betaPI = beta/180;
Serial.print("betaPI : ");
   Serial.print(betaPI);
   Serial.println();
gammaPI=alfaPI+betaPI;
Serial.print("gammaPI : ");
   Serial.print(gammaPI);
   Serial.println();
x=dystans/cos(alfaPI);
Serial.print("x : ");
   Serial.print(x);
   Serial.println();
y=dystans/cos(alfaPI);
Serial.print("y : ");
   Serial.print(y);
   Serial.println();

szerokosc = x*x+y*y - 2*x*y*cos(gammaPI);
Serial.print("szerokosc : ");
   Serial.print(szerokosc);
   Serial.println();
lcd.clear();
lcd.setCursor(0, 0); //Ustawienie kursora
lcd.print("Szerokosc: "); //Wyświetlenie tekstu
lcd.print(szerokosc);

if(lewy>prawy) a=1;
else a=2;
delay(100);
Serial.print("a : ");
   Serial.print(a);
   Serial.println();
delay(100);

return a;








}
dokładnie analizuj biblioteki jakie dokładasz tu masz poprawione
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#7
Wyswietlacz nie dziala aczkolwiek bledow w kompilacji nie ma
 
Odpowiedź
#8
Jaki masz lcd możne być zły adres.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#9
https://botland.com.pl/wyswietlacze-alfa...nakow.html
 
Odpowiedź
#10
(26-08-2017, 19:26)Janek_gl napisał(a): https://botland.com.pl/wyswietlacze-alfa...nakow.html

Spróbuj wgrać przykładowe hello .
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości