Stap 2: Stap 2: Code van de Arduino
Ik opgenomen de StepperAK.h, wire.h, LiquidCrystal_I2C.h, IRremote.h, IRremoteInt.h bibliotheken in mijn schets:
int RECV_PIN = 12; de IR ontvanger toewijzen aan pin 12
int gearratio = 100; instellen van initiële overbrengingsverhouding
IRrecv irrecv(RECV_PIN);
decode_results resultaten;
LiquidCrystal_I2C lcd(0x27,16,2);
Const int stepsPerRevolution = 100; een volledige revolutie zou 2048, maar het nummer ligt zeer laag zodat de lus snel herhaalt zodat de ir ontvanger is voortdurend in afwachting van een nieuwe input
Stepper myStepper(stepsPerRevolution,2,3,4,5);
VOID Setup
{Serial.begin(9600);
LCD.init();
LCD.backlight();
irrecv.enableIRIn (); //start ontvanger}
void loop
{myStepper.setSpeed(0.15*gearratio); / / gebruik van een variabele bij het instellen van de snelheid van de motor myStepper.step(stepsPerRevolution); / / dit zal aangeven hoeveel de motor draait elke lus
Als (irrecv.decode (& resultaten))
{Serial.println(results.value,HEX); / / shows van de invoerwaarde die vanuit de IR-afstandsbediening. Dit zal laten zien welke knop is ingedrukt
elke "if"-instructie komt overeen met de drie knoppen op de externe IR die de motor snelheid en LCD-display veranderen zal:
Als (results.value == 0xFF30CF) / / 1 op de afstandsbediening knop
{lcd.clear();
LCD.Print ("Windmill Golf");
lcd.setCursor(1,8); het volgende bericht verplaatsen naar de tweede regel van het scherm
LCD.Print ("instelling: gemakkelijk");
gearratio = 300; }
Als (results.value == 0xFF18E7) / / 2 op de afstandsbediening knop
{lcd.clear();
LCD.Print ("Windmill Golf");
lcd.setCursor(1,7);
LCD.Print ("instelling: normale");
gearratio = 800; }
Als (results.value == 0xFF7A85) / / 3 op de afstandsbediening knop
{lcd.clear();
LCD.Print ("Windmill Golf");
lcd.setCursor(1,8);
LCD.Print ("instelling: harde");
gearratio = 1200; }
irrecv.resume (); de volgende waarde //receive}}