Baserade Arduino seriell servo controller (3 / 6 steg)
Steg 3: Programmera arduino
Här är en enkel uppdelning i koden:
#include
Servo myservo; skapa objekt för att styra en servo servo
Servo myservo1;
int incomingByte = 0, datacount = 0, counter = 0, redo = 0; för inkommande seriella data
röding data [10].
CONST char kontrollera [8] = "ma11hew";
char kommandot [3].
void setup() {
myservo.attach(9);
myservo1.attach(10);
Serial.BEGIN(38400); öppnar serieport, anger datahastigheten
Serial.println ("Hej Arduino här!"); lagt till för att identifiera den seriella porten
Detta sätter bara upp den seriella porten och servon.
int i;
för (jag = 0; jag < 180; i ++)
{
myservo.write(i);
Delay(15);
}
myservo.write(5);
för (jag = 0; jag < 180; i ++)
{
myservo1.write(i);
Delay(15);
}
myservo1.write(5);
}
Enkel svepande rörelse att kontrollera servon fungerar korrekt.
void loop() {
redo = 0;
räknare = 0;
medan (1 == 1)
{
om (Serial.read()! = verify[counter])
{
bryta;
}
IF(Counter == 6)
{
Delay(20);
kommandot [0] = Serial.read();
kommandot [1] = Serial.read();
om (Serial.read() == ((kommandot [1] * 12) % 8))
// {
redo = 1;
//}
Serial.println ("sparade kommandot");
}
räknaren ++;
Delay(2);
}
Detta kontrollerar den seriella buffert för korrekt auktorisering strängen och sedan griper två byte för kommandot.
de kommenterade om uttrycket möjliggör en primitiv kontrollsumma som skulle göra manuell gränssnitt svårt.
Ready kan ställas in till 0 så kommandon inte kommer att parsa som när det gäller skadade data.
söka igenom kommandon
om (redo == 1)
{
om (kommandot [0] == 'T')
{
kommandot [0] = 0;
Serial.Print ("throttle control på stift 9 till:");
Serial.println (karta (kommandot [1], 32, 126, 2 180), DEC);
myservo.write (karta (kommandot [1], 32, 126, 2 180));
}
om (kommandot [0] == 'S ")
{
kommandot [0] = 0;
Serial.Print ("throttle control på stift 10 till:");
Serial.println (karta (kommandot [1], 32, 126, 2 180), DEC);
myservo1.write (karta (kommandot [1], 32, 126, 2 180));
}
}
}
resten av koden är att söka kommandot [] för giltiga kommandon (T eller S.)
om antingen matchar det tar den nästa byten och skickar det till servo.
mer på kartan (kommandot [1], 32, 126, 2 180) senare...
koden här är utbyggbart för allt annat du kan behöva (t.ex. ljus, motorer, IR, etc.)
denna kod ska fungera bra utan ändringar.