Błąd podczas kompilacji.

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
elTerius
Młodszy majsterkowicz
Posty: 4
Rejestracja: 30 lis 2018, 21:17

Błąd podczas kompilacji.

Post autor: elTerius » 30 lis 2018, 21:45

Na początek witam wszystkich.
Zaczynam zabawę w Arduino, mam ProMini , AT328,5V,16MHz.
Do tego wpadł mi wyswietlacz P10(1r) V706, taki Chińczyk.
Po napisaniu programu w zasadzie wszystko działało, ale zachciało mi się
wyswietlanie umieścić w przerwaniu, no i zaczęły się problemy.


Komunikat podczas kompilacji

libraries\DMD2\DMD2_Timer.cpp.o (symbol from plugin): In function `__vector_13':
(.text+0x0): multiple definition of `__vector_13'
libraries\Timer1\TimerOne.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Błąd kompilacji dla płytki Arduino Pro or Pro Mini.

Czy to wina płytki ProMini czy tez biblioteka TimetOne.h ?

Kod: Zaznacz cały

#include <TimerOne.h>
#include <Time.h>
#include <TinyGPS++.h>
#include <Arial_Black_16.h>
#include <DMD2.h>
//#include <SPI.h>

#define Serial_GPS Serial

static const uint32_t GPSBaud = 9600; 

byte hh=12;
byte mm=47;
int ss=1968;
String MESSAGE=" "+String(hh)+":"+String(mm);//+"/"+String(ss);

TinyGPSPlus gps;

const int WIDTH = 1;// Ile masz paneli polaczonych szeregowo ?
SoftDMD dmd(WIDTH,1);  // DMD kontroluje caly panel
DMD_TextBox box(dmd);  // "box" provides a text box to automatically write to/scroll the display

void pokaz(void);

//*************** SETUP ******************

void setup()
{

Timer1.initialize(5000);// w mikrosekundach od 1 do 8388480 ( 8,4s) 5000us to 5 ms
Timer1.attachInterrupt(pokaz);
  
  dmd.setBrightness(255);
  dmd.selectFont(Arial_Black_16); // Font used
  dmd.begin();
  
  box.print("..Init"); // Display TEXT
  delay (500);

 dmd.clearScreen();
 
  Serial.begin(9600);
  Serial_GPS.begin(GPSBaud); // Start GPS Serial Connection

}

//*************** PETLA ******************

void loop()
{
  GPS_Timez();  // wywolanie  GPS_Timez
}

void GPS_Timez(){
 
 // while (Serial_GPS.available()) {
  //  if (gps.encode(Serial_GPS.read())) { 
      
    //  int Year = gps.date.year();
    //  byte Month = gps.date.month();
     // byte Day = gps.date.day();
      
   //   byte Hour = gps.time.hour();
    //  byte Minute = gps.time.minute();
   //   byte Second = gps.time.second();
} 

void pokaz()

{

// a tu trzeba wkleic procedure wyswietlania
    
 box.print(MESSAGE);

}

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
Marhef
Złota rączka
Posty: 1056
Rejestracja: 18 lis 2011, 02:18

Re: Błąd podczas kompilacji.

Post autor: Marhef » 30 lis 2018, 22:27

Wygląda na to, że "gryzą się" biblioteki DMD2 i TimerOne. Masz w obu zdefiniowane to samo przerwanie?
elTerius
Młodszy majsterkowicz
Posty: 4
Rejestracja: 30 lis 2018, 21:17

Re: Błąd podczas kompilacji.

Post autor: elTerius » 30 lis 2018, 23:28

Właśnie do tego doszedłem , że się gryzą.
Ale "Masz w obu zdefiniowane to samo przerwanie?" to już dla mnie czarna magia.
Bawię się Arduino dopiero tydzień, jak możesz to podpowiedz.
Myślę, że w DMD2.h trzeba pogrzebać , ale to tylko moje gdybanie .
Awatar użytkownika
Marhef
Złota rączka
Posty: 1056
Rejestracja: 18 lis 2011, 02:18

Re: Błąd podczas kompilacji.

Post autor: Marhef » 1 gru 2018, 11:20

Wrzuć w załączniku biblioteki, których używasz. Te dwie, DMD2 i TimerOne.
Wtedy mogę do nich zaglądnąć i spróbować znaleźć rozwiązanie.
elTerius
Młodszy majsterkowicz
Posty: 4
Rejestracja: 30 lis 2018, 21:17

Re: Błąd podczas kompilacji.

Post autor: elTerius » 1 gru 2018, 13:26

Zamieniłem bibliotekę DMD2 na starszą DMD i już nie ma konfliktu.
To mówi kompilator:

In file included from C:\Program Files\Arduino\libraries\DMD-master\DMD.cpp:26:0:
C:\Program Files\Arduino\libraries\DMD-master\DMD.h:52:2: warning: #warning CHANGE THESE TO SEMI-ADJUSTABLE PIN DEFS! [-Wcpp]
#warning CHANGE THESE TO SEMI-ADJUSTABLE PIN DEFS!
^
Szkic używa 6266 bajtów (20%) pamięci programu. Maksimum to 30720 bajtów.
Zmienne globalne używają 655 bajtów (31%) pamięci dynamicznej, pozostawiając 1393 bajtów dla zmiennych lokalnych. Maksimum to 2048 bajtów.

Ale, żeby nie było tak wesoło , jak wyświetlić zawartość zmiennej typu String
na tym wyświetlaczu ?
Wszystkie przykłady pokazują jak wyświetlać czysty tekst.

Kod: Zaznacz cały

#include <TimerOne.h>
#include <Time.h>
#include <TinyGPS++.h>
#include <Arial_Black_16.h>
#include <DMD.h>
#include <SPI.h>

DMD dmd(1, 1); //Fire up the DMD library as dmd

#define Serial_GPS Serial

void ScanDMD()
{
  dmd.scanDisplayBySPI();
}


static const uint32_t GPSBaud = 9600;

TinyGPSPlus gps;

void pokaz(void);

//*************** SETUP ******************

void setup()
{

  byte hh = 12;// tymczasowo, potem dane z GPS
  byte mm = 47;// tymczasowo, potem dane z GPS
  int ss = 32;// tymczasowo, potem dane z GPS
  String messag = " " + String(hh) + ":" + String(mm); +"/" + String(ss);


  Timer1.initialize(5000);//  5000us to 5 ms
  Timer1.attachInterrupt(pokaz);

  //clear/init the DMD pixels held in RAM
  dmd.clearScreen( true );
  dmd.selectFont(Arial_Black_16);

  Serial.begin(9600);
  Serial_GPS.begin(GPSBaud); // Start GPS Serial Connection

}

//*************** PETLA ******************

void loop()
{

  // while (Serial_GPS.available()) {
  //  if (gps.encode(Serial_GPS.read())) {

  //  int Year = gps.date.year();
  //  byte Month = gps.date.month();
  // byte Day = gps.date.day();

  //   byte Hour = gps.time.hour();
  //  byte Minute = gps.time.minute();
  //   byte Second = gps.time.second();
}

void pokaz()

{
  //  tu trzeba wkleic procedure wyswietlania zawartosci zmiennej String o nazwie  mesag.

}


elTerius
Młodszy majsterkowicz
Posty: 4
Rejestracja: 30 lis 2018, 21:17

Re: Błąd podczas kompilacji.

Post autor: elTerius » 2 gru 2018, 12:01

Już sobie poradziłem, a w zasadzie pomógł mi forumowicz z Hiszpanii.

Temat do zamknięcia.


Próba wywarcia działania moderacyjnego. NA TYM FORUM NIE ZAMYKAMY TEMATÓW!!!
ODPOWIEDZ

Strony partnerskie: