Stap 7: Uitvoering van de Code FirmataPlus Sketch
Nogmaals, gebruik uw teksteditor, open FirmataPlus.ino en de volgende wijzigingen aanbrengen:
1. Voeg stepper.h toe aan de lijst met "kop bevat" in de buurt van de bovenkant van het bestand:
#include <Stepper.h>
2. Maak een aanwijzer naar een exemplaar van een stappenmotor en stel deze in op NULL. De stepper variabele mondiaal is, zo plaats het in de globale variabelen sectie van het bestand.
/*============================================================== GLOBAL VARIABLES ==============================================================*/ // Stepper Motor Stepper *stepper = NULL;
3. Voeg een case statement aan switch(mode) in void setPinModeCallback (byte pin, int modus) voor de stepper pin:
case STEPPER: pinConfig[pin] = STEPPER ; break ; default: Firmata.sendString("Unknown pin mode");
4. Voeg een nieuwe aanvraag om te vernietigen sysexCallback() voor het afhandelen van de STEPPER_DATA-opdracht en bijbehorende subopdrachten.
case STEPPER_DATA: // determine if this a STEPPER_CONFIGURE command or STEPPER_OPERATE command if (argv[0] == STEPPER_CONFIGURE) { int numSteps = argv[1] + (argv[2] << 7); int pin1 = argv[3] ; int pin2 = argv[4] ; if ( argc == 5 ) { // two pin motor stepper = new Stepper(numSteps, pin1, pin2) ; } else if (argc == 7 ) // 4 wire motor { int pin3 = argv[5] ; int pin4 = argv[6] ; stepper = new Stepper(numSteps, pin1, pin2, pin3, pin4) ; } else { Firmata.sendString("STEPPER CONFIG Error: Wrong Number of arguments"); printData("argc = ", argc) ; } } else if ( argv[0] == STEPPER_STEP ) { long speed = (long)argv[1] | ((long)argv[2] << 7) | ((long)argv[3] << 14); int numSteps = argv[4] + (argv[5] << 7); int direction = argv[6] ; if (stepper != NULL ) { stepper->setSpeed(speed) ; if (direction == 0 ) { numSteps *= -1 ; } stepper->step(numSteps) ; } else { Firmata.sendString("STEPPER OPERATE Error: MOTOR NOT CONFIGURED"); } } else if ( argv[0] == STEPPER_LIBRARY_VERSION ) { if ( stepper != NULL ) { int version = stepper->version() ; Firmata.write(START_SYSEX); Firmata.write(STEPPER_DATA); Firmata.write(version & 0x7F); Firmata.write(version >> 7); Firmata.write(END_SYSEX); } else { // did not find a configured stepper Firmata.sendString("STEPPER FIRMWARE VERSION Error: NO MOTORS CONFIGURED"); } break ; } else { Firmata.sendString("STEPPER CONFIG Error: UNKNOWN STEPPER COMMAND"); } break ;
5. Voeg de volgende code voor stepper in nietig SystemResetCallback():
// clear stepper pointer stepper = NULL ;
Sluit en sla het bestand.
Dat concludeert dat alle van de wijzigingen in de code.