Stap 2: De software
Allereerst nemen in rekening die ik ter vereenvoudiging van de seriële afdrukfuncties van de schets (gebruikt voor foutopsporing en het toezicht op) de Streaming bibliotheekheb gebruikt. De meest recente versie (V.5) kan worden gedownload en de schets van deze pagina.
De werking van de schets
In enkele woorden uiteengezet, repliceert het schild schets de trigger input waarden genereren van een proportionele waarde naar de overeenkomstige digitale uitgang.
Het programma is goed gedocumenteerd, dus het is niet moeilijk te begrijpen hoe elk deel werkt. Sommige woorden zal ik doorbrengen alleen op de kop van de software waarin de globale parameters zijn gedefinieerd.
#define MAXPOT 6 // Max number of potentiometers #define SERIALMON // Undef SERIALMON to avoid serial output. For testing purposes only // Units to show the potentiometer resistance value. #define KOHM 0 // Set to 0 if the resistance should be in Ohm instead of K // Units to show the digital potentiometer resisance value. #define DKOHM 1 // Set to 0 if the resistance should be in Ohm instead of K // Test analog potentiometers values in Ohm #define ANALOGPOT 1000.00 // Digital potentiometer value in Ohm #define DIGITALPOT 100000.00 // Steps divider from analog converter #define ANALOGDIVIDER 1024.00 // Steps divider of the digital potentiometer #define DIGITALDIVIDER 256 // SPI Clock frequency. //Higher is the clock frequency, higher is the digital potentiometer // response. Value is expressed in reading-per-second // The frequency calculation is an integer rounded. #define DIGIPOT_FREQ 8
Om te debuggen van het programma activeert zien wat gebeuren terwijl de interactie met de analoge de coderegel
#define SERIALMON
Laat de seriële monitor te dumpen continu de status van de potentiometers (analoog en digitaal)
Vervang deze lijn van code met
#undef SERIALMON
deze functie uitschakelen. Afhankelijk van de snelheid die u instelt kan de seriële communicatie tussen de Arduino en de computer, het continu vermogen beperken de snelheid van het programma.
Met de seriële monitor ingeschakeld (ik heb het programma met een snelheid van 9600 getest maar het werkt beter bij hogere snelheden), de screenshot afbeelding toont een voorbeeld van wat je ziet.
Notities
- Met een redelijke seriële snelheid de frequentie die de monitor wordt bijgewerkt is afhankelijk van de constante DIGIPOT_FREQ. Het wijzigen van de klokfrequentie van de SPI ook de klok LED op het circuit verandert haar knipperende snelheid.
- De berekening van de geschatte weerstand, gebaseerd op de analoge gedetecteerde waarde en de output berekend instellen voor elk paar van de potentiometer (analoog vs digitaal) is alleen voor testen en demonstratie-doeleinden. U kunt deze berekening deel verwijderen omdat deze waarden heeft geen invloed op het gedrag van het programma.