Morse Library

Arduino specifieke Software
Berichten: 25
Geregistreerd: 24 Jan 2018, 17:03

Morse Library

Berichtdoor Est29 » 18 Mei 2021, 17:24

Al enige tijd probeer ik mijn kennis van C++ op te krikken m.b.v "Aan de slag met C++" van Gertjan Laan. Prima boek. Ben nu toe aan Class en Object.
Maar, Tot nu toe heb ik Arduino gebruikt als platvorm en dat gaat goed. Electronica is een probleem.
Nu wil ik Classes en Objecten ook op Arduino laten draaien maar dat gaat niet zo goed.
Onder www.arduino.cc/en/Hacking/LibraryTutorials heb ik een verhaal gevonden wat aardig in de buurt komt n.l. Writing a Library for Arduino.
Dit is een instructie waarbij een sketch van een Morse-generator wordt omgezet naar een Library. Goed te volgen, maar ik loop vast op het implementeren van de files in het Library-bestand. Zoals in de instructie staat heb ik twee files gemaakt Morse.h en Morse.cpp. Deze heb ik in een map Morse gezet in de lijst van alle andere Libraries. Nou weet ik niet hoe ik deze files in het Library-overzicht moet krijgen van de Sketches. Het is mij gelukt om het woord Morse in dat bestand te krijgen en als ik daarop klik krijg ik inderdaad #include <Morse.h> in de Sketch. Maar de compiler zegt daarna dat die deze instructie niet kent. Waarschijnlijk staan de .h en .cpp files niet goed in de Library, maar ik weet niet hoe of wat.
Wie kan mij helpen. In het verleden heb ik al vaker hier problemen mee gehad.

Advertisement

Berichten: 25
Geregistreerd: 24 Jan 2018, 17:03

Re: Morse Library

Berichtdoor Est29 » 19 Mei 2021, 12:16

Eerst een correctie: Electronica is geen probleem.
Als ik #include <Morse.h> in mijn sketch heb staan geeft de compiler aan dat er geen goede file in mijn Library heb staan. Hieronder de files van .h en .cpp.
Dit ter aanvulling. Est29.

/* 18-05-2021 EST29
Morse.h - Library for flashing Morse code.
Created by David A. Mellis, November 2, 2007.
Released into the public domain.
*/
#ifndef Morse_h
#define Morse_h

#include "Arduino.h"

class Morse
{
public:
Morse(int pin);
void dot();
void dash();
private:
int _pin;
};

#endif


/*
Morse.cpp - Library for flashing Morse code.
Created by David A. Mellis, November 2, 2007.
Released into the public domain.
*/

#include "Arduino.h"
#include "Morse.h"

Morse::Morse(int pin)
{
pinMode(pin, OUTPUT);
_pin = pin;
}

void Morse::dot()
{
digitalWrite(_pin, HIGH);
delay(250);
digitalWrite(_pin, LOW);
delay(250);
}

void Morse::dash()
{
digitalWrite(_pin, HIGH);
delay(1000);
digitalWrite(_pin, LOW);
delay(250);
}

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Morse Library

Berichtdoor Rudi » 19 Mei 2021, 14:41

Nog een correctie, de juiste url is https://www.arduino.cc/en/Hacking/LibraryTutorial

Je probleem komt hoogstwaarschijnlijk doordat je de .h en .cpp bestanden met de IDE hebt aangemaakt en opgeslagen.
Echter de IDE breit er de extensie .ino aan vast.

Open in Windows een command window (Windows toets en R tegelijk indrukken) en ga naar de Morse folder die je had aangemaakt.
Met het dir commando zie je de bestanden met hun extensie.
Waarschijnlijk zie je dan Morse.cpp.ino en Morse.h.ino staan (gebruik het dir commando).
Hernoem deze naar de juiste extensie door respektievelijk ren Morse.cpp.ino Morse.cpp (en enter) en daarna ren Morse.h.ino Morse.h (enter) in te typen.
Doe nogmaals een dir om te verifiëren dat de bestandsnamen juist zijn.

Open daarna de IDE en de sketch, zou nu moeten werken.

Het is muggenzifterij maar de sketch gebruikt geen spaties tussen de morsetekens. Voor een geoefend morse oor is dit bijna blasfemie :-)
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Berichten: 25
Geregistreerd: 24 Jan 2018, 17:03

Re: Morse Library

Berichtdoor Est29 » 19 Mei 2021, 16:47

Dag Rudi,
Ja Morse.h en Morse.cpp heb ik aangemaakt door deze te kopiëren van de website en te plakken in een twee sketches. Daarna deze sketches gesaved in de map Morse als Morse.h en Morse.cpp. Ik had ook gezien dat in die map de namen waren Morse.h.ino en Morse.cpp.ino. Ik dacht dat dat niet goed was. Heb .ino er af geknipt m.b.v. rename. Dat is waarschijnlijk niet de juiste methode.
Nu werk ik op een Mac en je window-instructie kan ik niet volgen. Hoe doe je dat op een Mac???
Alvast bedankt EST29.

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Morse Library

Berichtdoor Rudi » 19 Mei 2021, 18:06

Ik heb geen ervaring met een Mac maar je hebt daar wel een Terminal applicatie. Dat is zowat hetzelfde als het command window (ook wel onjuist het dos scherm genaamd) in Windows.
Via Terminal zou je moeten kunnen vaststellen of de rename die je hebt toegepast correct is uitgevoerd. En daar houdt mijn Mac kennis op :-)
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Berichten: 25
Geregistreerd: 24 Jan 2018, 17:03

Re: Morse Library

Berichtdoor Est29 » 20 Mei 2021, 11:21

Dag Rudi,
Het goede nieuws is dat het probleem is opgelost. Het werkt. Maar hoe?
Ik heb op de Mac een Terminal gevonden, maar hoe dan verder?
Ben even terug gegaan naar het wijzigen van Morse.h.ino. m.b.v "wijzig naam" heb ik .ino verwijderd. De computer vraagt dan of je dat wil wijzigen omdat de file dan door andere app's gebruikt kan worden. Dat was m.i. ook de bedoeling. (de vorige keer had ik gewoon Morse.h er over getypt).
De files op de goede plaats in de Morse Library geplaatst. Daarna de Morse Library in de Sketch Library geplaatst. In de sketch wordt op de rode balk aangegeven dat er iets niet goed is met de Library. Als je dan op Compileren drukt komt alles goed en staat er Compileren voltooid. Uplowden naar de Mega en het draait.
Dan staat er in de Voorbeeld site iets over keywords, waarmee je systeemwoorden een ander kleur kan geven. Dat lukt mij niet omdat ik niet weet hoe ik hiermee om moet gaan. Nog een ideetje?
Groeten en bedankt. Est29.

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Morse Library

Berichtdoor ctunes » 20 Mei 2021, 23:06

Niet:
#include <Morse.h> dan zoekt de compiler enkel naar de bekende paden (exclusief waar jij jouw code hebt staan).
maar:
#include "Morse.h" dan zoekt de compiler in het pad van jouw project (dus waar jouw code staat).

(Dat had overigens in 1 van de eerste hoofdstukken van je boek moeten staan.)

Berichten: 287
Geregistreerd: 15 Apr 2021, 20:05

Re: Morse Library

Berichtdoor ctunes » 20 Mei 2021, 23:10

Als jij jouw compiler niet vertelt dat jij een nieuwe bibliotheek hebt toegevoegd, in de standaard padnamen, dan kan die hem ook niet vinden.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 44 gasten