Paso 6: Dibujo de Tinyduino
Nota: Antes de empezar Asegúrese de que no tienes otra biblioteca "MotorDriver.h" instalado en el IDE de Arduino, porque esto evitará que el IDE compila debido a la ambigüedad entre los dos archivos "MotorDriver.h". (Conocido conflictos de biblioteca: controlador de Motor de Seeed Studio)
#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 }
Este código es relativamente sencillo, el único concepto a entender es cómo funciona el controlador de "serialEvent()". El código "serialEvent()" se llama después "loop()" cada vez se dispone de serie de datos en el búfer. Es importante saber que una función de "delay()" dentro del bucle también retrasará el "serialEvent()". Con esto en mente es una buena idea para mantener su "loop()" tan rápido como sea posible, evitando demoras cuando sea posible.