Étape 7: Codant pour Final Sketch Arduino (mouvement de balancement/taraudage)
Maintenant que vous comprenez comment lire des valeurs brutes de votre MPU-6050, il est temps de choisir des valeurs pour le final Arduino Sketch. Par essais et erreurs, j’en suis venu à la conclusion que la meilleure façon de penser à coder pour différentes commandes TV est en divisant nos catégories de mouvements deux : Swinging/taraudage et torsion. Dans cette étape, je vais aller au fil de la sélection de valeurs et codant pour des requêtes Swinging/taraudage. Mouvements de torsion sera discuté à l’étape suivante.
La première chose que vous devrez télécharger le croquis inclus au bas de cette étape. L’esquisse comprend des éléments de l’esquisse du JohnChi (inclus dans l’étape précédente), esquisse de IRsend démo de Chris Young, ainsi qu’une partie de mon propre code.
Pour obtenir un exemple, je vais travailler avec la commande « Volume bas ». Pour « Volume bas », j’ai décidé que je veux utiliser les petits robinets vers le bas pour exécuter cette commande. L’esquisse de MPU6050RawValues.ino téléchargées à l’Arduino, j’ai pris note de laquelle accéléromètre valeurs changeaient quand j’ai utilisé un mouvement de baisse de taraudage avec ma maquette, Arduino et MPU-6050. J’ai noté que les valeurs de l’accéléromètre évoluent dans les axes Y et Z. En utilisant 'supérieur et inférieur quedéclarations', j’ai alors pris note dont valeurs brutes de MPU-6050 pourraient figurer dans la requête. Pour les valeurs de l’accéléromètre dans l’axe Y (ou AcY), les valeurs brutes étaient généralement supérieures à 7000 lorsque la pêche la maquette légèrement vers le bas. Les valeurs de l’accéléromètre de l’axe Z (ou AcZ) étaient généralement inférieure à 10 000 lorsque vous utilisez le même mouvement. À l’aide de «>» et «<» symboles, j’ai commencé à écrire mon code comme ceci :
AcY > 7000 et AcZ < 10000 |
Afin d’y inclure ces valeurs dans l’esquisse de la MagicWandTVRemote.ino , nous aurons besoin de remplacer le mot "et" avec "& &'. Nous aurons également besoin d’inclure ces valeurs dans un 'si déclaration' qui nécessite l’ajout de parenthèses et un support fin. Dans mon cas, le code ressemblerait à ceci :
Si (AcY > 7000 & & AcZ < 10000) {} |
Vous pouvez ajouter autant ou aussi peu « plus et moins de déclarations » comme vous voulez, aussi longtemps que vous incluez ' & &' entre chacun d’eux. Ne vous sentez pas que vous devez inclure seulement deux juste parce que j’ai fait.
La prochaine chose que nous devons faire, c’est définir combien de fois nos besoins de code à répéter. Balancer/taraudage des requêtes nécessitant notre code pour commencer à envoyer alors que le Magic Wand TV distant ne pointe pas vers la TV, nous avons besoin pour s’assurer que le signal est toujours envoyé au moment où que la télécommande est pointant sur elle. Il est important de jouer un peu à trouver le droit valeur parce que si vous ne répétez pas le signal suffisamment de fois, la LED ne sera pas toujours émettre le signal au moment où la télécommande est orientée en direction du téléviseur. En revanche, si vous répétez le signal trop de fois, vous courez le risque du code envoyé aux trop nombreuses fois provoquant le code envoyé plusieurs fois à la télévision. C’est où votre voyant en option puis de la résistance peuvent venir maniable. Si vous remplacer la LED infrarouge et la résistance pour une LED visible et la résistance, vous serez en mesure de pratiquer en déplaçant votre maquette dans la façon dont vous souhaitez déplacer votre Magic Wand TV Remote et voir si le voyant clignote le nombre exact de fois. Il est beaucoup plus facile d’échanger les LED puis dois tenir une caméra jusqu'à la LED infrarouge pour voir ce qu’il fait.
Le code permettant d’utiliser une répétition est comme suit :
pour (int i = 0; i < = 5; i ++) {} |
Le nombre qu’il faut changer basé sur combien de fois vous voulez répéter votre commande vient après le '< ='. Dans mon cas, j’ai voulu relancer la commande 5 fois. Étant donné que les petits robinets bas m’a permis de retourner ma maquette à un point où il pointait en direction du téléviseur assez rapidement, je n’a pas besoin de répéter la commande plusieurs fois. En revanche, pour la commande « TV-Power », j’ai décidé de faire un swing plus grand vers le bas. Il m’a fallu un peu plus de temps pour pointer la télécommande vers la TV, donc j’ai dû répéter la commande 15 fois.
Enfin, nous devons inclure le code exact que nous avons trouvé à l’étape distance de décoder votre TV. J’ai déterminé ce code sont :
NEC, 0X20DFC03F, 32 |
Ce code doit être inséré entre les parenthèses dans l’instruction "My_Sender.send ();" donc dans mon cas, le code ressemblerait à ceci :
My_Sender.Send (NEC, 0x20DFC03F, 32) ; |
Enfin, j’ai ajouté un court délai qui devrait se lire comme suit :
Delay(100) ; |
Tous ensemble, votre code devrait ressembler à ceci :
Si (AcY > 7000 & & AcZ < 10000) {} pour (int i = 0; i < = 5; i ++) {} My_Sender.Send (NEC, 0x20DFC03F, 32) ; }} |
Quoi que vous fassiez, ne pas oublier les deux crochets à la fin! Un support se termine votre ' si déclaration », et l’autre termine votre « déclaration de répéter ». Votre code ne fonctionnera pas si vous avez oublié ces supports.
Pour intégrer les valeurs que vous avez trouvé dans le sketch de MagicWandTVRemote.ino , juste faites défiler jusqu'à la seconde moitié de l’esquisse et remplacez les valeurs que j’ai trouvé par vos propres. Assurez-vous que vous testez votre code avec tous vos composants attachés à la maquette pour vous assurer que vous pouvez réellement contrôler la TV.