Étape 6: Croquis de Tinyduino
NOTE : Avant que nous commencions Assurez-vous que vous n’avez pas une autre bibliothèque de « MotorDriver.h » installée sur votre IDE Arduino, car cela empêchera l’IDE de compilation en raison de l’ambiguïté entre les deux fichiers "MotorDriver.h". (Connu des conflits de bibliothèque : Seeed Studio moteur)
#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 }
Ce code est relativement simple, le seul concept de comprendre comment fonctionne le gestionnaire « serialEvent() ». Le code « serialEvent() » est appelé après la « loop() » chaque fois qu’il y a des données série disponibles dans la mémoire tampon. Il est important de savoir qu’une fonction « delay() » à l’intérieur de la boucle retardera aussi le « serialEvent() ». Dans cet esprit, c’est une bonne idée de garder votre « loop() » aussi vite que possible, en évitant les retards lorsque c’est possible.