Étape 3: Programmer l’arduino
Voici une ventilation simple au code :
#include
Servo myservo ; Créez l’objet servo pour contrôler un servo
Servo myservo1 ;
int incomingByte = 0, datacount = 0, compteur = 0, prêt = 0 ; pour les données entrantes de série
données de char [10] ;
const char vérifier [8] = « ma11hew » ;
commande de char [3] ;
void setup() {}
myservo.Attach(9) ;
myservo1.Attach(10) ;
Serial.Begin(38400) ; ouvre le port série, définit le débit de données
Serial.println ("Salut Arduino ici!") ; ajouté pour aider à identifier le port série
Cela définit simplement le port série et servos.
int i ;
pour (i = 0; i < 180; i ++)
{
myservo.Write(i) ;
Delay(15) ;
}
myservo.Write(5) ;
pour (i = 0; i < 180; i ++)
{
myservo1.Write(i) ;
Delay(15) ;
}
myservo1.Write(5) ;
}
Mouvement de balayage simple pour vérifier que les servos fonctionnent correctement.
void loop() {}
prêt = 0 ;
compteur = 0 ;
alors que (1 == 1)
{
Si (Serial.read()! = verify[counter])
{
rupture ;
}
if(Counter == 6)
{
Delay(20) ;
commande [0] = Serial.read() ;
la commande [1] = Serial.read() ;
Si (Serial.read() == ((commande [1] * 12) % 8))
// {
prêt = 1 ;
//}
Serial.println ("sauvé de commande") ;
}
compteur ++ ;
Delay(2) ;
}
Ceci vérifie le tampon de série pour la chaîne de l’autorisation correcte puis s’empare de deux octets pour la commande.
le commenté si Déclaration permet pour une somme de contrôle improvisé mais rendrait entoilage manuel dur.
prêt peut être définie à 0, donc les commandes ne seront pas analysés comme dans le cas de données corrompues.
recherche par le biais de commandes
Si (prêt == 1)
{
Si (commande [0] == ' t ')
{
commande [0] = 0 ;
Serial.Print ("throttle control sur la broche 9 de:") ;
Serial.println (carte (commande [1], 126, 2, 180, 32), DEC) ;
myservo.Write (carte (commande [1], 126, 2, 180, 32)) ;
}
Si (commande [0] == les de ')
{
commande [0] = 0 ;
Serial.Print ("throttle control sur la broche 10 à:") ;
Serial.println (carte (commande [1], 126, 2, 180, 32), DEC) ;
myservo1.Write (carte (commande [1], 126, 2, 180, 32)) ;
}
}
}
le reste du code est à la recherche [commande] pour les commandes valides (T ou S.)
Si soit correspond elle prend l’octet suivant et l’envoie à l’asservissement.
plus sur la carte (commande [1], 126, 2, 180, 32) plus tard...
ici, le code est extensible pour tout ce que vous pourriez avoir besoin (eg. lumières, moteurs, IR, etc..)
Ce code devrait fonctionner correctement, sans aucune modification.