Hoe modulaire code voor Arduino te schrijven?

Ik zou graag een programma met gescheiden modules willen maken, is dit mogelijk met behulp van Arduino IDE?

2

5 antwoord

Terwijl u uw eigen bibliotheken voor de Arduino kunt maken, is een eenvoudige manier om herbruikbare code te maken, het aanmaken van een headerbestand (.h) dat de code bevat die u herbruikbaar wilt maken.

In het bijzonder, in de Arduino IDE maak een nieuw tabblad met een naam foo .h , en voeg in je hoofdtabblad # include "foo.h" toe bovenaan je code. Wat dit doet is in feite kopieer de code van foo.h in je code tijdens de bouwproces . Hoewel het eenvoudig in uitvoering is, helpt het echt om complexere code te organiseren, en in uw geval helpt het bij het hergebruik van code.

U kunt ook "Normale Arduino-codebestanden (geen zichtbare extensie), C-bestanden (.c-extensie), C ++-bestanden (.cpp) of headerbestanden (.h) gebruiken."

En een extra opmerking om u te helpen - de header-bestanden hebben geen toegang tot enkele van de typische Arduino-opdrachten en -functionaliteit, zoals delay() of Serial tenzij u < code> # include "Arduino.h" . Gebruik echter voor IDE-versies van minder dan 1,0 # include "WProgram.h" . Dit geeft je toegang tot die functies.

2
toegevoegd

Arduino-schetsen kunnen bibliotheken bevatten (zie https://www.arduino.cc/en/Guide/ Libraries ).

Om met de Arduino IDE te kunnen werken, moet een dergelijke bibliotheek voldoen aan een bepaalde mapstructuur en naamgevingsconventie (zoals beschreven in de gids hierboven).

Anders dan dat, het is vergelijkbaar met gemoduleerde code in een andere taal. De canonieke taal in Arduino-bibliotheken is C ++.

Omdat een standaard Arduino IDE-installatie al voorgeïnstalleerd is met een groot aantal bibliotheken, kunt u een kijkje nemen en van daaruit gaan.

Ik raad aan dat u de voorbeeldschetsen bekijkt (uit de menuoptie "Voorbeelden"). Wanneer je een # include-verklaring bovenaan de schets ziet, heb je een hint waar je vervolgens naar moet kijken om een ​​beter begrip te krijgen van de innerlijke werken.

2
toegevoegd

De schetscode kan eenvoudig worden opgesplitst in verschillende bestanden door een nieuw tabblad (bestand) zonder extensie of .ino ( source ). Geen behoefte aan # include en de Arduino IDE combineert deze bestanden voor het bouwproces.

Maak voor een goede modularisatie een bibliotheek of bekijk de link hierboven voor meer informatie over het gebruik van .h/.c/.cpp als modules.

0
toegevoegd

Ik wil graag een programma met afzonderlijke modules maken, is dit mogelijk met Arduino IDE?

het antwoord hangt af van uw code.

het schrijven van modulaire code is meestal een denkproces:

1) u moet uw code ontwerpen naar een logisch model: in plaats van een led op pin 2 in te stellen, ontwerpt u uw code om een ​​pin in te stellen, gebruikt u die code om een ​​pin in te stellen die is gespecificeerd als LED_PIN, en definieert u vervolgens LED_PIN als pin 2 Met deze aanpak kunt u eenvoudig LED_PIN opnieuw definiëren in uw nieuwe project om dezelfde code te gebruiken.

2) u moet uw code van bovenaf ontwerpen: in plaats van uw code meteen te schrijven, splitst u deze op in logische blokken, ontwerpt u de invoer en uitvoer van elk blok zodat ze samen werken. dit is het moeilijkste deel van het schrijven van modulaire code.

daarna is het breken van de code tot .c/.h-bestanden een fluitje van een cent.

0
toegevoegd

Nou ... De antwoorden zijn interessant, maar zijn afhankelijk van waar JuanV over denkt als hij "gescheiden modules" zegt ... Voor mij betekent "gescheiden modules" als een "old timer software dev" dat ik een centraal blok van code (een notendop) en de gebruikersdownloadmodule bouw die automatisch worden "aangesloten" op de notendop, waardoor de functie wordt uitgebreid. Een beetje als een printerstuurprogramma dat u toevoegt aan uw systeem en welke toevoegfunctie voor alle software. Als ik naar mijn vroegere ontwikkelaar kijk die dit gebruikt, moet ik toegeven dat ik problemen heb met het denken aan Arduino. Als je daar naar op zoek bent, moet je aan verschillende problemen denken:

1) hoe te updaten? Misschien met een Android-app die de code van het web haalt en deze via Bluetooth naar de Arduino stuurt. U kunt ook denken aan het toevoegen van een wifi-interface op de Arduino

2) waar het nieuwe stuk code op te slaan ... Het lijkt erop dat je "on the fly" op flash kunt schrijven, maar het lijkt ingewikkeld te zijn

Vanwege dit tweede punt, zou de eenvoudigste manier kunnen zijn om een ​​notendop te maken die gegevens "interpreteert" (dus die een soort klein script lezen) en dan moet je gewoon de gegevens verzenden. Ik stel voor om de CNC met Arduino te bekijken. In de meeste gevallen gebruiken ze een GCode-interpreter. GCode is een beschrijving voor een CNC-machine. Dus de interpreter leest de code en stuurt volgens de code "orders" naar de machine. Misschien zou zoiets een goed startpunt zijn.

Aan de andere kant, als wat jij "modulaire benadering" noemt, gewoon de manier is om lib te bouwen en ze opnieuw te gebruiken, is het antwoord van Lord Gonk de manier :)

0
toegevoegd