ChatGPT geautomatiseerde Arduino codeschrijver : Proof of Concept – succesvolle inzet bij maken van sinusgolf generator – bijna perfect en razendsnel

11 februari 2023

De wereld om ons heen verandert, zo ook de tools welke ondersteuning bieden bij het genereren en documenteren van programmacode. Met de recente opkomst van ChatGPT komt het automatisch schrijven van eenvoudige programmacode binnen handbereik. Vandaag neem ik de proef op de som. Een eenvoudige specificatie van de vraag: “Schrijf een Arduino programma met een pwm sinus output en refresh rate van 1000hz” resulteert in werkelijke bruikbare C++ code die gekopieerd en geplakt kan worden in de Arduino IDE.

Zichtbaar wordt er door ChatGPT specifiek rekening gehouden met mijn vraagstelling. Een PWM signaal kan alleen gegenereerd worden in pwm ondersteunende poorten. ChatGPT kiest hiervoor poort 9, welke ook mijn voorkeuze poort zou zijn. Impliciet wordt er waarschijnlijk door ChatGPT aangenomen dat we hier te maken hebben met een Arduino UNO en niet met een ESP32 of RP2040. In de code wordt de LED_PIN geinitialiseerd en vervolgens wordt er een analogWriteFequency() aangeroepen, welke niet bestaat. Een kleine aanpassing met kennis van zaken is hier nodig om het ChatGPT programma code werkend te krijgen.

In de loop() wordt een perfecte berekening gemaakt om een sinusgolf te genereren met een delay van 1.000 microseconde en deze op poort 9 aan te bieden als pwm signaal. Wanneer dit signaal op pin 9 met een condensator gestabiliseerd wordt, blijkt uit de meting met de scoop dat er zowaar een echte sinus afgegeven wordt. De frequentie echter is 3,36 Hz, aangezien er bij het opzetten van de code geen rekening gehouden is dat de volledige sinus in de loop() 256 stapjes van 1.000 milliseconde in beslag neemt. En dat komt aardig (1.000/256) = 3,9 Hz. Het verschil tussen 3.9 Hz en 3,36 Hz kan verklaard worden door de clock-cycles welke de programmacode nodig heeft om de sinusgolf compleet te doorlopen.

Conclusie: ChatGPT blijkt in staat de vraag vraag van de gebruiker automatisch te kunnen vertalen in programmacode. De mate van detail van de gestelde vraag heeft ongetwijfeld invloed op de precieze opbouw van Arduino code. Als Proof of Concept is deze opzet vandaag geslaagd, maar een paar kleine aanpassingen zijn wel nodig. Deze aanpassingen vereisen kennis en begrip van de C++ programmeeromgeving, waaruit ik concludeer dat ChatGPT op dit moment zeker nog geen directe vervanger voor de programmeur is, maar wel een goede ondersteuning kan zijn bij het genereren van benodigde code.