Stap 3: Programma de arduino
Hier is een eenvoudige verdeling aan de code:
#include
Servo myservo; maken van servo-object om te bepalen van een servo
Servo myservo1;
int incomingByte = 0, datacount = 0, counter = 0, klaar = 0; voor binnenkomende seriële gegevens
char gegevens [10];
const char controleren [8] = "ma11hew";
char opdracht [3];
VOID Setup {}
myservo.attach(9);
myservo1.attach(10);
Serial.begin(38400); Hiermee opent u de seriële poort, gegevenssnelheid ingesteld
Serial.println ("Hallo Arduino hier!"); toegevoegd om te helpen bij het identificeren van de seriële poort
Dit zet alleen de seriële poort en de servo's.
int i;
voor (ik = 0; ik < 180; i ++)
{
myservo.write(i);
delay(15);
}
myservo.write(5);
voor (ik = 0; ik < 180; i ++)
{
myservo1.write(i);
delay(15);
}
myservo1.write(5);
}
Eenvoudige vegen beweging om te controleren of dat de servo's correct werken.
void loop {}
klaar = 0;
Counter = 0;
terwijl (1 == 1)
{
Als (Serial.read()! = verify[counter])
{
breken;
}
if(Counter == 6)
{
vertraging(20);
opdracht [0] = Serial.read();
opdracht [1] = Serial.read();
Als (Serial.read() == ((opdracht [1] * 12) % 8))
// {
klaar = 1;
//}
Serial.println ("opgeslagen opdracht");
}
teller ++;
delay(2);
}
Dit controleert het seriële buffer voor de tekenreeks van de juiste vergunning dan pakt twee bytes voor de opdracht.
de commentaar als verklaring voorziet in een geïmproviseerde controlesom maar handmatige interfacing hard zou maken.
klaar kan worden ingesteld op 0, zodat opdrachten zullen niet worden geparseerd zoals in het geval van beschadigde gegevens.
doorzoeken van opdrachten
Als (klaar == 1)
{
Als (opdracht [0] == 'T')
{
opdracht [0] = 0;
Serial.Print ("throttle control op pin 9 aan:");
Serial.println (kaart (opdracht [1], 126, 2, 32, 180), DEC);
myservo.write (kaart (opdracht [1], 126, 2, 32, 180));
}
Als (opdracht [0] == de ')
{
opdracht [0] = 0;
Serial.Print ("throttle control op pin 10 aan:");
Serial.println (kaart (opdracht [1], 126, 2, 32, 180), DEC);
myservo1.write (kaart (opdracht [1], 126, 2, 32, 180));
}
}
}
de rest van de code is het zoeken van de opdracht [] voor geldige opdrachten (T of S.)
als ofwel overeenkomen met het neemt de volgende byte en verzendt dit naar de servo.
meer op de kaart (opdracht [1], 126, 2, 32, 180) later...
de code hier is uitbreidbaar voor wat anders moet u wellicht (bijv. lampen, motors, IR, enz.)
Deze code zou moeten werken prima zonder wijzigingen.