Meddelande från en WinForms till en TinyDuino (6 / 14 steg)
Steg 6: Tinyduino skiss
Obs: Innan vi börjar se till att du inte har ett annat "MotorDriver.h" bibliotek installerad på din Arduino IDE eftersom detta förhindrar IDE från sammanställa på grund av tvetydigheten mellan filerna "MotorDriver.h". (Känd bibliotek konflikter: Seeed Studio Motor Driver)
#include < wire.h >
#include < MotorDriver.h >
MotorDriver motor (0), //value passerade är adress-ta bort motståndet R1 för 1, R2 för 2, R1 och R2 för 3
int maxPWM = 255; sätter våra max PWM till största bytevärdet vi kunde ta emot
void setup()
{
Serial.BEGIN(9600);
Wire.BEGIN();
Värdet skickas till begin() är den maximala PWM-värde, som är 16-bitars (upp till 65535)
Detta värde avgör också produktionen frekvens - standard 8MHz dividerat med värdet maxPWM
IF(motor.BEGIN(maxPWM))
{
Serial.println ("Motor driver inte upptäckt!");
While(1);
}
motor.setMotor (1, 0);
motor.setMotor (2, 0);
}
void loop()
{
Eftersom vi inte behöver göra något förrän vi får uppgifter från våra seriell anslutning lämna loop tomt
}
void serialEvent()
{
Delay(10);
byte meddelande [3].
IF(Serial.available())
{
Serial.readBytes (meddelande, 3);
}
om (meddelande [0] == 2) //if vårt budskap är signerad som skriver två kör sedan vår motor uppdatera koden
{
motor.setMotor (1, message[1]);
motor.setMotor (2, message[2]);
}
Serial.flush(); ta bort alla överflödiga meddelanden vi fått sedan vi började uppdatera våra motorer hastigheter
}
Denna kod är relativt enkel, enda konceptet att förstå är hur "serialEvent()" hanteraren fungerar. "SerialEvent()" koden kallas efter den "loop()" varje gång det är seriella data finns i bufferten. Det är viktigt att veta att en "delay()" funktion inuti loop fördröjer också "serialEvent()". Med detta i åtanke är det en bra idé att hålla ditt "loop()" så fort som möjligt, att undvika förseningar när det är möjligt.