Utöver StandardFirmata - lägger till stöd för nya (7 / 10 steg)
Steg 7: Genomföra FirmataPlus skiss kod
Igen, med hjälp av din texteditor, öppna FirmataPlus.ino och gör följande ändringar:
1. Lägg stepper.h i listan över "huvudet innehåller" nära toppen av filen:
#include < Stepper.h >
2. skapa en pekare till en instans av en stegmotor och ange det till NULL. Variabeln stepper är globala, så placera den i avsnittet globala variabler i filen.
/*==============================================================
GLOBALA VARIABLER
==============================================================*/
Stegmotor
Stepper * stepper = NULL;
3. lägga till ett case-uttryck i switch(mode) i void setPinModeCallback (byte pin, int läge) för stepper stift:
fall STEPPER:
pinConfig [pin] = STEPPER;
bryta;
standard:
Firmata.sendString ("okänd pin läge");
4. Lägg till ett nytt fall om du vill makulera sysexCallback() för att hantera kommandot STEPPER_DATA och dess underkommandon.
fall STEPPER_DATA:
avgöra om denna en STEPPER_CONFIGURE eller STEPPER_OPERATE
om (argv [0] == STEPPER_CONFIGURE)
{
int numSteps = argv [1] + (argv [2] << 7);
int pin1 = argv [3].
int pin2 = argv [4].
om (argc == 5)
{
två stift motor
stepper = nya Stepper (numSteps, pin1, PIN2-);
}
annars om (argc == 7) / vajerlängd 4 motor
{
int pin3 = argv [5].
int pin4 = argv [6].
stepper = nya Stepper (numSteps, pin1, pin2, pin3, pin4);
}
annat
{
Firmata.sendString ("STEPPER CONFIG fel: fel antal argument");
printData ("argc =", argc);
}
}
annars om (argv [0] == STEPPER_STEP)
{
långa snabba = (långa) argv [1] | ((långa) argv [2] << 7) | ((långa) argv [3] << 14);
int numSteps = argv [4] + (argv [5] << 7);
int riktning = argv [6].
om (stepper! = NULL)
{
stepper -> setSpeed(speed);
om (riktning == 0)
{
numSteps * = -1;
}
stepper -> step(numSteps);
}
annat
{
Firmata.sendString ("STEPPER fungerar fel: MOTOR inte KONFIGURERAD");
}
}
annars om (argv [0] == STEPPER_LIBRARY_VERSION)
{
om (stepper! = NULL)
{
int version = stepper -> Aktivera;
Firmata.write(START_SYSEX);
Firmata.write(STEPPER_DATA);
Firmata.write (version & 0x7F);
Firmata.write (version >> 7);
Firmata.write(END_SYSEX);
}
annat
{
hittade inte en konfigurerad stepper
Firmata.sendString ("STEPPER FIRMWARE VERSION fel: ingen MOTORS KONFIGURERAT");
}
bryta;
}
annat
{
Firmata.sendString ("STEPPER CONFIG fel: okänd STEPPER kommandot");
}
bryta;
5. i void SystemResetCallback() Lägg till följande kod för stepper:
tydlig stepper pekaren
stepper = NULL;
Stäng och spara filen.
Som avslutar alla kodförändringar.