• 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
Problem z rx tx mini mp3 plater
#1
Witam,
robie duzy projekt na płytce arduino uno. Mam problem z biblioteką SOftwareSerial wysietla mi takie błedy podczas kompilacji. Porty z ktorych korzystam np.na expanderze jest spowodowane iż w innym kodzie wykorzystuje pozostało porty z arduino.  Proszę o pomoc w rozwiązaniu problemu. Wiem ze chodzi tu o jakieś przerwania.
Cytat:libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read()':

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

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

libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read()':

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

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

libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read()':

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

libraries\PCF8574\PCF8574.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 Uno.
Kod:
#include "Arduino.h"
#include <Servo.h>
#include <Wire.h>   

#include "DFRobot_LedDisplayModule.h"
//wspolna biblioteka z zakreckolem
#include "PCF8574.h"
#include "DFRobotDFPlayerMini.h"


PCF8574 expander; //dodatkowe 8 wejsc

Servo Predkosciomierz;
//Servo Opona;
int krok = 180;
int GAZ = 0;
int STOP = 1;
int przyspieszenie = 200;
int zwolnienie = 70;
unsigned long aktualnyCzas = 0;
unsigned long czasprzycisku = 0;
unsigned long czasprzycisku2 = 0;

#if (defined(ARDUINO_AVR_UNO) || defined(ESP8266))   // Using a soft serial port
#include <SoftwareSerial.h>
//#include <AltSoftSerial.h>
SoftwareSerial softSerial(/*rx =*/2, /*tx =*/3);
#define FPSerial softSerial
#else
#define FPSerial Serial1
#endif

DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup() {
   Serial.begin(9600);
     
  expander.begin(0x20);
  expander.pinMode(0, INPUT_PULLUP);
  expander.pinMode(1, INPUT_PULLUP);
  expander.pinMode(2, INPUT_PULLUP);
  expander.pinMode(3, INPUT_PULLUP);
  expander.pinMode(4, INPUT_PULLUP);
  expander.pinMode(5, INPUT_PULLUP);
  expander.pinMode(6, INPUT_PULLUP);
  expander.pinMode(7, INPUT_PULLUP); // inicializacja expandera 8 dodatkowych wejsc

  Predkosciomierz.attach(5);
  Predkosciomierz.write(krok);
// Opona.attach(3);
 
    #if (defined ESP32)
  FPSerial.begin(9600, SERIAL_8N1, /*rx =*/D3, /*tx =*/D2);
#else
  FPSerial.begin(9600);
#endif

  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(FPSerial, /*isACK = */true, /*doReset = */true)) {  //Use serial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));

  myDFPlayer.setTimeOut(500); //Set serial communictaion time out 500ms

  //----Set volume----
  myDFPlayer.volume(20);  //Set volume value (0~30).
  //myDFPlayer.volumeUp(); //Volume Up
  //myDFPlayer.volumeDown(); //Volume Down

  //----Set different EQ----
  myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);

  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);


 


}

void loop() {
  symulacjaauta();

}
void symulacjaauta()
{
  aktualnyCzas = millis();
   Serial.println("dzaialam");
   Serial.println(" ");
  if(expander.digitalRead(GAZ) == LOW && expander.digitalRead(STOP) == HIGH)// wlaczenie gazu
  {
    Serial.println("Gaz");
    myDFPlayer.playMp3Folder(9);
    if(krok <= 1) krok = 1;
    krok = krok - 1;
    Predkosciomierz.write(krok);
    delay(przyspieszenie);
    zwolnienie = 70;
    if(aktualnyCzas - czasprzycisku >= 300UL)
    {
      przyspieszenie = przyspieszenie - 10;
      if(przyspieszenie <= 0) przyspieszenie = 0;
      czasprzycisku = aktualnyCzas;
     
    }   
   
  }
  else
  {
    Serial.println("zwalniam");
    if(krok >= 180) krok = 179;
    if(expander.digitalRead(STOP) == HIGH)
    {     
    czasprzycisku = aktualnyCzas;
    czasprzycisku2 = aktualnyCzas;
    przyspieszenie = 100;
   
    krok = krok + 2;
    Predkosciomierz.write(krok);
   
    delay(400);
    }
  }
  if(expander.digitalRead(STOP) == LOW) //wlaczenie stop
  {
    Serial.println("stop");
    czasprzycisku = aktualnyCzas;
    if(krok >= 180) krok = 179;
    krok = krok + 1;
    Predkosciomierz.write(krok);   
    delay(zwolnienie);
    if(aktualnyCzas - czasprzycisku2 >= 100UL)
    {
      zwolnienie = zwolnienie - 10;
      czasprzycisku2 = aktualnyCzas;
    }
    if(zwolnienie <= 0) zwolnienie = 0;

  }
  //opona();

     

   
}
/*
void opona()
{
  int predkosc;
  predkosc = map(krok, 180, 40, 93, 20);
  Serial.print("predkosckola   ");
  Serial.println(predkosc);
  Opona.write(predkosc);
 
}*/
 
Odpowiedź
  


Wiadomości w tym wątku
Problem z rx tx mini mp3 plater - przez Matmax89 - 29-11-2023, 09:29
RE: Problem z rx tx mini mp3 plater - przez Matmax89 - 29-11-2023, 21:31
RE: Problem z rx tx mini mp3 plater - przez oscarX - 30-11-2023, 08:46
RE: Problem z rx tx mini mp3 plater - przez Matmax89 - 02-12-2023, 13:42
RE: Problem z rx tx mini mp3 plater - przez oscarX - 03-12-2023, 17:02

Skocz do:


Przeglądający: 1 gości