Stap 6: Programing
Nu tijd voor de programmering, moet u vertrouwd zijn met arduino code dit steentje (of gewoon kopiëren en plakken van mijn code.)
1. eerst moet u een paar bibliotheken omvatten...
a. "Wire" gebruikt voor het starten van de I2C-bus voor het LCD-scherm
b. "LiquidCrystal_I2C" gebruikt voor de I2C/LCD
c. "Mats" moest doen later de RPM-berekeningen
2. nu definiëren uw input/output pinnen
a. instelt digitale pin 9 "solinoid1pin"
b. "potpin" als analoge pin 1 instellen
c. Se "ignitioninputpin" zoals pin 2 (dit gaat naar de hall effect sensor.)
d. het instellen van uw "interruptnumber" als interrupt nummer 0 (op digitale pin nummer 2)
3. nu alle van de volgende variabelen definiëren. (Volatile wordt gebruikt omdat deze variabele worden gebruikt in de ISR)
a. "previousstate"
b. "buttonstate"
c. "counter1"
d. "start"
e. "finish"
f. verstreken""
g. "RPM"
4. nu in de sectie Algemene instellingen die alleen worden uitgevoerd zodra wanneer u met arduino opstart
a. alle uw pinnen als ingangen/uitgangen instellen
b. de beginstatus van uw pinnen/variabelen
c. hechten de interrupt service routine met haar instellingen
d. initialiseren en inschakelen achtergrondverlichting voor LCD
e. uitgang een verklaring aan het LCD-scherm
f. beginnen seriële communicatie
5. nu komt hier de hoofdlus. Het zal voor altijd draaien totdat de arduino is afgesloten
a. uitgang buttonstate previousstate en counter1 op de seriële poort voor de diagnose van problemen later.
b. doen berekeningen voor de RPM
c. instellen als/dan verklaringen naar de solenoïde activeren als de eerste magneet is gedetecteerd, en bewaar deze op totdat de tweede magneet wordt gedetecteerd voor zwenking op vandoor.
d. instellen als/dan verklaring te tellen van de tijd tussen hall effect sensor detecties
e. maken een andere als/dan verklaring dat uitgangen de RPM naar de weergave telkens de teller is een veelvoud van 6. Dit wordt gedaan om het verminderen van de achterstand in de motoren als de RPM wordt verzonden naar de LCD
f. invoegen uw Interrupt service routine. Dit wordt de buttonstate, prevousstate, en wordt toegevoegd aan het meteritem elke keer.