fout bij blibliotheek schrijven arduino

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
ik ben nog redelijk nieuw met arduino en ik wilde eens een bibliotheek leren schrijven en dat heb ik gedaan aan de hand van deze website: https://playground.arduino.cc/code/library, hier leren ze je hoe je led 13 laat knipperen met behulp van een bibliotheek maar nu wilde ik eens wat verder proberen gaan zodat je ook kan instellen welke led je wilt laten knipperen.
mijn bibliotheek ziet er nu zo uit: Afbeeldingslocatie: https://tweakers.net/ext/f/CbdcLaeI1voGi5CkBitBdGYU/thumb.png


ik krijg de foutmelding: collect2.exe: error: ld returned 1 exit status. wat kan ik er aan doen om dit op te lossen?

alvast bedankt

Alle reacties


Acties:
  • 0 Henk 'm!

  • CCJJVV
  • Registratie: Maart 2016
  • Laatst online: 14-07 21:51
Als het goed is staat er boven die fout code nog meer als je het rode balkje even naar boven sleept.

Wat er sowieso fout gaat is het volgende:
Bij het aanmaken van een led object wordt in de constructor de pinmode van een pin gezet door het gebruik van de variabele led. De variabele Led heeft echter nog geen waarde gekregen omdat deze pas gezet wordt met SetPin.

Dit kan je oplossen op de volgende manieren:

Een oplossing hiervoor is om het Pin nummer van de led mee te gegeven aan de constructor.
Een tweede oplossing is om de pinmode van de Led pas te zetten na het aanroepen van SetPin. Dit zou ik echter niet doen omdat je dan alsnog de functie knipper aan kan roepen voordat setPin is aangeroepen.

Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
ik heb eens wat geprobeerd maar ik snap niet wat je bedoelt met 'pin nummer van de led mee geven aan de constructor"

en hij zegt inderdaad ook nog "(.text+0x0): multiple definition of `led'"

[ Voor 24% gewijzigd door jonas-ventje op 26-07-2018 14:06 ]


Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
als ik in het programma zelf het woordje "led" aanpas kan hij het wel compileren maar werkt hij niet

[ Voor 40% gewijzigd door jonas-ventje op 26-07-2018 14:11 ]


Acties:
  • 0 Henk 'm!

  • MsG
  • Registratie: November 2007
  • Laatst online: 01:31

MsG

Forumzwerver

Als een library goed geïnclude is zul je hem normaliter trouwens ook moeten zien in 1 van de tabjes binnen het Arduino programma (IDE), dan hoef je niet los in de weer met Kladblok zoals je nu doet.

Zie bijvoorbeeld hier:

Afbeeldingslocatie: https://docs.microsoft.com/nl-nl/azure/iot-hub/media/iot-hub-adafruit-feather-m0-wifi-get-started/6_arduino-ide-open-sample-app.png

[ Voor 31% gewijzigd door MsG op 26-07-2018 14:14 ]

Denk om uw spatiegebruik. Dit scheelt Tweakers.net kostbare databaseruimte! | Groninger en geïnteresseerd in Domotica? Kom naar DomoticaGrunn


Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
dus als je je bibliotheek gewoon in een nieuw tabblad zet gaat die ook werken...


aah ja zo doet die het ook... maar dan is het oorspronkelijke probleem nog steeds ni opgelost.

[ Voor 86% gewijzigd door jonas-ventje op 26-07-2018 14:26 ]


Acties:
  • 0 Henk 'm!

  • danslo
  • Registratie: Januari 2003
  • Laatst online: 00:36
Je moet even naar boven scrollen, je laat niet de volledige fout zien.

Maar ik gok dat je dit moet hebben:

code:
1
#include "LED13.h"


In plaats van:

code:
1
#include <LED13.h>


edit:
En nu heb je je screenshot weggehaald. Plaats de volledige foutmelding ;)

[ Voor 17% gewijzigd door danslo op 26-07-2018 14:28 ]


Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 14-07 20:34
De fout is dat int led; geen class member is, maar een global variable. Je moet deze van regel 2 in het .cpp bestand verplaatsen naar regel 5 in het .h bestand. De manier die je nu hebt is onjuist, en gaat fout als je bijvoobeeld 2 LEDs wilt hebben.

Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
nu ik het aangepast wat @danslo en @ThomasG zeggen kan ik het bestand wel uploaden maar het werkt nog steeds niet
intussen ziet alles er zo uit:
Afbeeldingslocatie: https://tweakers.net/ext/f/abUTwQmmxGyZa4KTiu7VHsJP/thumb.png
maar ik denk wel nog steeds dat het toch zo is:
code:
1
#include <LED13>

[ Voor 11% gewijzigd door jonas-ventje op 26-07-2018 14:47 ]


Acties:
  • 0 Henk 'm!

  • danslo
  • Registratie: Januari 2003
  • Laatst online: 00:36
De screenshot die je hiervoor plaatste (en weer hebt weggehaald) suggereerde iets anders. Nogmaals, plaats de volledige foutmelding.

Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
die foutmelding is veranderd: als ik zoals @danslo zegt dit doe
code:
1
 #include "LED13.h"
dan kan ik het programma gewoon uploaden maar gebeurt er niets. als ik dit doe:
code:
1
 #include <LED13.h>
dan krijg ik deze foutmelding
Afbeeldingslocatie: https://tweakers.net/ext/f/xqhCerMagClhtvX0IiXEVmrS/full.png
hij zegt bij elke functie dat hij meerdere keren gedefinieerd is

Acties:
  • 0 Henk 'm!

  • MsG
  • Registratie: November 2007
  • Laatst online: 01:31

MsG

Forumzwerver

Als er niks gebeurt maar hij compileert goed zit er mogelijk een denkfout in je applicatie, maar geen compilerfout.

Het is handiger als je de stukken code even in code-blokken zet: Zoals hier beschreven: Overzicht van UBB-codes #tag_code

Even per bestand een code blok. Nu moeten we allemaal door je wat onduidelijke screenshots heen gaan.

Daarnaast kan je ook het beste die compileroutput plaatsen als tekst, eveneens in code-blokken.

Denk om uw spatiegebruik. Dit scheelt Tweakers.net kostbare databaseruimte! | Groninger en geïnteresseerd in Domotica? Kom naar DomoticaGrunn


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 14-07 23:22
Hij doet niets omdat de pin pas wordt toegekend bij setPin(...) terwijl de pin direction ( pinMode(...) ) al in de constructor wordt gedaan; op dat moment heeft hij nog niet de goede pin....

Het configureren van de pin moet in de setPin() gebeuren: tijdens het uitvoeren van de constructor (bij een static object) *kan* het zijn dat het systeem nog niet juist is geinitialiseerd. De constructoren van static objecten worden i.h.a . zeer vroeg tijdens het opstarten uitgevoerd. (Alhoewel ik niet met zekerheid kan zeggen wanneer Arduino dat doet, het *zou* kunnen werken.)

[ Voor 50% gewijzigd door farlane op 26-07-2018 16:47 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
oh hij werkt, behalve dat van pinMode had ik de cpp en h bestanden op 2 locaties staan waardoor hij niet kon compileren
Pagina: 1