Stap 6: Tinyduino Sketch
Opmerking: Voordat we beginnen, zorg ervoor dat u niet beschikt over een andere "MotorDriver.h" bibliotheek geïnstalleerd op uw Arduino IDE, omdat hiermee wordt voorkomen dat de IDE compileren als gevolg van de dubbelzinnigheid tussen de twee bestanden "MotorDriver.h". (Bekend van bibliotheek conflicten: Studio van het Seeed Motor Driver)
#include <wire.h> #include <MotorDriver.h> MotorDriver motor(0);//value passed is the address- remove resistor R1 for 1, R2 for 2, R1 and R2 for 3 int maxPWM=255; // sets our max PWM to the largest byte value we could receive void setup() { Serial.begin(9600); Wire.begin(); //The value passed to begin() is the maximum PWM value, which is 16 bit(up to 65535) //This value also determines the output frequency- by default, 8MHz divided by the maxPWM value if(motor.begin(maxPWM)) { Serial.println("Motor driver not detected!"); while(1); } motor.setMotor(1, 0); motor.setMotor(2, 0); } void loop() { //Because we don't need to do anything until we receive data from our serial connection leave loop blank } void serialEvent() { delay(10); byte message[3]; if(Serial.available()) { Serial.readBytes(message, 3); } if (message[0] == 2) //if our message is signed as type two then run our motor update code { motor.setMotor(1, message[1]); motor.setMotor(2, message[2]); } Serial.flush(); // remove any redundant messages we may have received since we started updating our motors speeds }
Deze code is relatief eenvoudig, het enige concept te begrijpen is de werking van de "serialEvent()"-handler. De code "serialEvent()" wordt genoemd na de "loop" telkens als er seriële data beschikbaar zijn in de buffer. Het is belangrijk om te weten dat een "delay()"-functie binnen de lus zal ook het vertragen van de "serialEvent()". Met dat in gedachten is het een goed idee om uw "loop" zo snel mogelijk, het vermijden van vertragingen indien mogelijk.