Table des matières:

Piste de vitesse Arduino Hot Wheels Partie 2 - Code : 5 étapes
Piste de vitesse Arduino Hot Wheels Partie 2 - Code : 5 étapes

Vidéo: Piste de vitesse Arduino Hot Wheels Partie 2 - Code : 5 étapes

Vidéo: Piste de vitesse Arduino Hot Wheels Partie 2 - Code : 5 étapes
Vidéo: DIY hot wheels race track timer using Arduino 2024, Juillet
Anonim
Image
Image

Dans la première partie de ce projet, nous avons construit le matériel pour le prototype sur 2 maquettes.

Et dans cette partie, nous allons passer en revue le code, son fonctionnement, puis le tester.

Assurez-vous de regarder la vidéo ci-dessus pour la révision complète du code et la présentation du code de travail.

Étape 1: MAÎTRE et ESCLAVE dans le même code

Le code est en 2 parties, mais à l'intérieur du même fichier. J'utilise #define et #ifdef pour déterminer quel code sera compilé ou ignoré afin que je puisse séparer tout code qui est juste pour la maquette MASTER et le code qui est juste pour la maquette ESCLAVE.

Fondamentalement, si le MASTER défini est trouvé, alors tout code qui se trouve à l'intérieur du bloc de code MASTER sera compilé et tout code en dehors de ce bloc sera supprimé au moment de la compilation.

#ifdef MAÎTRE

//Le code spécifique au maître est ici

#autre

#définir ESCLAVE

// Le code spécifique à l'esclave est ici

#fin si

J'utilise également la même technique pour #define SLAVE lorsque MASTER est compilé, vous n'avez donc qu'à vous soucier de définir MASTER ou de ne pas activer SLAVE à définir.

Étape 2: les modules BLUETOOTH parlent via la lecture et l'écriture en série

Dans ce projet, seule la maquette SLAVE communique avec la maquette MASTER. Le MASTER ne répond jamais, il écoute seulement puis agit sur les données entrantes.

Les modules parlent et écoutent en utilisant la classe Serial intégrée dans l'écosystème de codage Arduino.

Les modules Bluetooth communiquent à 38 400 bauds, de sorte que les deux chemins de code initialisent leurs communications série en utilisant:

Serial.begin(38400);

Et l'ESCLAVE utilise:

Serial.write (données ici);

Pour parler au MAÎTRE, et le MAÎTRE utilise:

data = Serial.read();

Pour écouter le flux série et lire son contenu et le stocker dans une variable.

Étape 3: Contrôler la course

L'ESCLAVE indique au MASTER s'il est en mode course plus ou prêt via le bouton vert connecté à son micro-contrôleur. En mode prêt, les capteurs IR ne font rien et le MASTER affichera 8 tirets sur l'écran pour indiquer qu'il est en mode prêt.

Lorsque l'ESCLAVE dit au MAÎTRE qu'une course va commencer, l'ESCLAVE commence à interroger les capteurs IR sur son côté (le début de la piste de course) pour que les voitures passent en dessous.

Lorsque chaque voiture passe sous chaque capteur IR, elle envoie un A (voiture 1) ou B (voiture 2) au MASTER.

Lorsque le MASTER reçoit un A ou un B, il active le chronomètre pour cette voiture spécifique, puis attend que la voiture passe sous le capteur IR correspondant à la ligne d'arrivée.

L'affichage est mis à jour toutes les 50 ms pour afficher l'heure actuelle de chaque voiture en secondes avec 2 décimales.

Une fois que les deux voitures ont franchi la ligne d'arrivée, le MASTER décide quelle voiture a été la plus rapide et affiche ce temps sur l'écran pour indiquer le vainqueur.

Étape 4: Le reste du code

Le reste du code n'est qu'un code utilitaire qui contrôle l'affichage des données sur l'affichage à 8 chiffres ou gère la logique d'appui sur les boutons, etc.

À la fin de la vidéo dans la section d'introduction de ce projet, je montre un exemple du code exécuté sur les 2 maquettes, alors assurez-vous de vérifier cela !

Vous pouvez récupérer le code de ce projet à partir de mon dépôt github.

Étape 5: Quelle est la prochaine étape ?

C'est tout pour l'instant… dans la partie 3, nous verrons comment déplacer les composants de la maquette vers quelque chose de plus permanent… restez à l'écoute !

J'espère que ce projet vous plait !

Suivez-moi sur:

www.youtube.com/c/unexpectedmaker

twitter.com/unexpectedmaker

www.facebook.com/unexpectedmaker

www.instagram.com/unexpectedmaker

www.tindie.com/stores/seonr/

Conseillé: