Forum: Mikrocontroller und Digitale Elektronik arduino no such file


von Marco G. (grmg2010)


Lesenswert?

Moin,

ich bin gerade dabei mich an der Programmierung eines Arduinos zu 
versuchen. Ich wollte ein Beispielprogramm fürs Nextion LCD aufspielen, 
bekomme beim Komilieren allerdings immer die Fehlermeldung, dass das 
dazugehörige headerfile nicht gefunden wurde. Das Headerfile und alle 
anderen Bibliotheken, auf die in dem Header-File eingebunden sind, 
liegen im selben Ordner, wie das ino-file. Trotzdem bekomme ich die 
Fehlermeldung. WAs mache ich an diesem Punkt falsch?
hier der Code:
1
/**
2
 * @example CompButton.ino
3
 * 
4
 * @par How to Use
5
 * Show how to use API of class NexButton.  
6
 *
7
 * @author  Wu Pengfei (email:<pengfei.wu@itead.cc>)
8
 * @date    2015/7/10
9
 * @copyright 
10
 * Copyright (C) 2014-2015 ITEAD Intelligent Systems Co., Ltd. \n
11
 * This program is free software; you can redistribute it and/or
12
 * modify it under the terms of the GNU General Public License as
13
 * published by the Free Software Foundation; either version 2 of
14
 * the License, or (at your option) any later version.
15
 */
16
17
#include "Nextion.h"
18
19
NexButton b0 = NexButton(0, 1, "b0");
20
21
char buffer[100] = {0};
22
23
NexTouch *nex_listen_list[] = 
24
{
25
    &b0,
26
    NULL
27
};
28
29
void b0PopCallback(void *ptr)
30
{
31
    uint16_t len;
32
    uint16_t number;
33
    NexButton *btn = (NexButton *)ptr;
34
    dbSerialPrintln("b0PopCallback");
35
    dbSerialPrint("ptr=");
36
    dbSerialPrintln((uint32_t)ptr); 
37
    memset(buffer, 0, sizeof(buffer));
38
    btn->getText(buffer, sizeof(buffer));
39
    
40
    number = atoi(buffer);
41
    number += 1;
42
43
    memset(buffer, 0, sizeof(buffer));
44
    itoa(number, buffer, 10);
45
    
46
    btn->setText(buffer);
47
}
48
49
void setup(void)
50
{    
51
    nexInit();
52
    b0.attachPop(b0PopCallback, &b0);
53
    dbSerialPrintln("setup done"); 
54
}
55
56
void loop(void)
57
{   
58
    nexLoop(nex_listen_list);
59
}

: Bearbeitet durch User
von Baendiger (Gast)


Lesenswert?

Zeig mal deinen Code.
Ansonsten tippe ich auf <> statt "" verwendet beim include.

von Jodel (Gast)


Lesenswert?

Zeig die ganze Ausgabe vom Buildversuch, nicht nur eine Beschreibung, 
sonst wird das nix.

von Marco G. (grmg2010)


Lesenswert?

ich habe jetzt mal alle zusätzlichen cpp und h-files in den unterordner 
libraries im ordner des ino files abgelegt. Ich erhalte nun folgende 
Fehlermeldung:

CompButton.cpp.o: In function `b0PopCallback(void*)':
C:\Program Files (x86)\Arduino/CompButton.ino:38: undefined reference to 
`NexButton::getText(char*, unsigned int)'
C:\Program Files (x86)\Arduino/CompButton.ino:46: undefined reference to 
`NexButton::setText(char const*)'
CompButton.cpp.o: In function `setup':
C:\Program Files (x86)\Arduino/CompButton.ino:51: undefined reference to 
`nexInit()'
C:\Program Files (x86)\Arduino/CompButton.ino:52: undefined reference to 
`NexTouch::attachPop(void (*)(void*), void*)'
CompButton.cpp.o: In function `loop':
C:\Program Files (x86)\Arduino/CompButton.ino:58: undefined reference to 
`nexLoop(NexTouch**)'
CompButton.cpp.o: In function 
`__static_initialization_and_destruction_0':
C:\Program Files (x86)\Arduino/CompButton.ino:19: undefined reference to 
`NexButton::NexButton(unsigned char, unsigned char, char const*)'
collect2.exe: error: ld returned 1 exit status
Fehler beim Kompilieren.

von Mark B. (markbrandis)


Lesenswert?

Anscheinend wird die entsprechende Bibliothek vom Linker nicht gefunden. 
Könnte an den Projekteinstellungen liegen.

von Michael U. (amiga)


Lesenswert?

Hallo,

im Sketchordner im Ordner libraries liegen die Ordner von hinzugefügten 
Libraries.
Wenn man da von Hand reinkopiert: Ordner anlegen, der genauso heißt wie 
die Lib, also das .h bzw. .cpp-File.
Da gehören dann dies Files rein, meist ist noch ein keywords.txt dabei. 
Ein Example-Ordner gehört so wie er ist in den Ordner.

Besser ist es, eine neue Lib direkt aus dem .zip zu installieren,
Sketch->Bibliothek einbinden->.ZIP-Bibliothek hinzufügen.

Wenn das angemeckert wird dann das Archiv entpacken und den Ordner mit 
dem Biliotheksnamen in den Sketchordner nach libraries kopieren.
Ordnernamen prüfen! Manchmal heißt der ORder hinten -master, daß muß 
dann entfernt werden.

Nicht wahllos was in irgendwelche ORdner packen, ds ist fast das 
Einzige, womit man sich die IDE ziemlich zerlegen kann...

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Marco G. schrieb:
> Das Headerfile und alle anderen Bibliotheken, auf die in dem Header-File
> eingebunden sind, liegen im selben Ordner, wie das ino-file.

Was haben die Bibiotheken da zu suchen?

Sortiere erstmal deinen File-Salat und sorge dafür, dass die 
erforderlichen Bibliothen sauber eingebunden sind. Lass das die IDE 
machen und pfusche ihr nicht ins Handwerk.

von Marco G. (grmg2010)


Lesenswert?

Michael U. schrieb:
> Wenn das angemeckert wird dann das Archiv entpacken und den Ordner mit
> dem Biliotheksnamen in den Sketchordner nach libraries kopieren.
> Ordnernamen prüfen! Manchmal heißt der ORder hinten -master, daß muß
> dann entfernt werden.

Genau so habe ich das gemacht. In den Sketch-Ordner, in der die 
Ino-Datei liegt einen ordner mit den Namen libraries eingefügt und in 
den alle Header und cpp-Dateien kopiert. Da erscheint die vorher 
angegebene Fehlermeldung.
Wenn ich die Dateien aus dem originalenZIP-Archiv per Dialog nstalliere 
passiert nichts. Keine erfolgs noch Fehlermeldung.

von Wolfgang (Gast)


Lesenswert?

Marco G. schrieb:
> Genau so habe ich das gemacht. In den Sketch-Ordner, in der die
> Ino-Datei liegt einen ordner mit den Namen libraries eingefügt und in
> den alle Header und cpp-Dateien kopiert.

Da gehören die Dateien aber nicht hin. Es muss als Unterordner von 
libraries einen Ordner mit dem Bibliotheksnamen geben und genau in 
diesen Unterordner gehören die Dateien. Außerdem gibt es darunter meist 
noch einen Unterordner examples. Lass die Ordnerstruktur so, wie sie 
im Zip-File verpackt ist. Und libraries ist kein Unterordner von einem 
bestimmten Sketch-Ordner.

von Michael U. (amiga)


Lesenswert?

Hallo,

habe mal die Lib von GitHUB runtergeladen. Wird aus dem ZIP problemlos 
installiert, die Rückmeldung an die IDE haben die Jungs wohl vergessen.
Liegt dann ordentlich als ITEADLIB_Arduino_Nextion-master in 
"Sketchbook"/libraries.
In den Beispielen in der IDE taucht sie auch mit allen Bespielen auf.

Das Ding scheint mindestens einen Arduino mit 2 seriellen zu erfordern, 
zumindest compiliert das CompPicture-Beispiel erst für einen Mega2560, 
sonst vermisst es Serial2.

Welchen Arduino benutzt Du?

Gruß aus Berlin
Michael

von Marco G. (grmg2010)


Lesenswert?

Ok, ich habe das jetzt mal per Zip-File als Bibliothek eingefügt. Sie 
taucht auch auf. Ich habe jetzt mal ein neues Projekt angelegt und über 
die Bibliotheks-einfügefunktion eingefügt. Die Header werden auch alle 
aufgeführt. Beim Kompilieren kommen die geleichen Fehlermeldungen wie 
bisher.
Arduino hat unter Dokumente/arduino den Ordner libraries erstellt und da 
dann einfach den Inhalt des Zipfiles hineinkopiert.
Ok, daran könnte es liegen, ich habe nur einen Uno. Was müsste ich 
ändern, um es darauf zum Laufen zu bekommen?

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

CompButton compiliert hier für den Mega2560 auch ohne Fehler.
Ich habe weder das Display noch einen Mega2560 zur Hand um da mehr sagen 
zu können.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Marco G. schrieb:
> Ok, daran könnte es liegen, ich habe nur einen Uno.

Dann stell erstmal fest, ob dein Zeugs jetzt alles richtig liegt. Wähle 
den richtigen Arduino und guck, ob es sauber durch den Compiler geht.

Dann kann man weiter sehen.

von Marco G. (grmg2010)


Lesenswert?

Ich habe jetzt auf github gefunden, wie man das auf es auf nur eine 
serielle Schnittstelle umstellen kann. Das werde ich jetzt erstmal 
versuchen.
Update: Ich habe wie beschrieben den Debug-Port deaktiviert und den 
eigentlichen Communikationsport auf Serial gelegt. Trotzdem liefert der 
Kompiler immer noch dieselebn fehlermeldungen

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.