CS4985 Du projet : mouvement Scanner (4 / 5 étapes)

Étape 4: Étape 4: l’appareil de codage

Maintenant que nous avons tout mis ensemble, il est temps nous faire fonctionner. Commençons tout d’abord, ouvrent votre logiciel Arduino. Assurez-vous que vous sélectionnez le périphérique approprié et démarrez un nouveau projet.

Une fois que vous êtes prêt, son temps de démarrer avec notre configuration initiale. Nous commençons par définir nos constantes, inclure des fichiers et des variables.

 #include #define trig 8 //Trig pin #define echo 9 //Echo pin #define serv 10 //Servo pin #define loopDuration 60 //Duration of scan loop #define alertDuration 30 //Duration of alert long duration, initialDistance, scannedDistance, timer, alertTimer; Servo servo; int servoPosition; bool alertMode; bool positiveMovement; 

Suivant est le programme d’installation. Ici, nous avons mis nos variables initiales que nous allons utiliser tout de suite. La position du servo est réglée, les broches sont mappés et la lecture initiale est lu. Il y a un retard deuxième 2,1 ensemble avant que l’installation est terminée.

 void setup() { servoPosition = 45; positiveMovement = 1; timer = 0; alertMode = 0; servo.attach(serv); servo.write(servoPosition); pinMode(trig, OUTPUT); pinMode(echo, INPUT); Serial.begin(9600); delay(1000); Serial.println("Initializing..."); delay(1000); Serial.println("Initialized."); initialScan(); delay(100); } 

Maintenant pour la boucle principale. Le programme vérifie les conditions et s’exécutera selon le résultat. À savoir, si le programme est en mode alerte, il fera une analyse spécifique juste pour ce mode. Si non, il vérifie si la boucle est terminée et si oui vont déplacer le servo vers une nouvelle position et prendre à une nouvelle lecture et réinitialiser la minuterie. Dans le cas contraire, il vérifiera pour mouvement et augmenter la minuterie.

 void loop() { if (alertMode) { alertScan(); } else if (timer > loopDuration ) { adjustServo(); initialScan(); timer = 0; } else { movementCheck(); timer++; } delay(10); } 

alertScan poignées pour informer l’utilisateur il a été un problème et le compte à rebours pour la durée de l’alerte. Si le temps d’alerte est en place sans aucun problème, il terminera l’alerte et regagner le balayage normal. Autrement il informera l’utilisateur de la situation et compte à rebours.

 void alertScan() { if (alertTimer >= alertDuration) { alertMode = 0; initialScan(); Serial.println("Alert ended. Returning to normal."); delay(50); initialScan(); } else { Serial.print("Alert in progress. Time left: "); Serial.println(alertDuration - alertTimer); movementCheck(); alertTimer++; delay(10); } } 

initialScan obtient la distance sur laquelle le reste des scans est comparé à. Le capteur envoie des ondes ultrasoniques et eux en lirait. La lecture de données est ensuite convertie en pouces et affichée dans le moniteur de la série.

 void initialScan() { digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); duration = pulseIn(echo, HIGH); initialDistance = duration / 148; //Converts to inches Serial.print("Monitoring Distance: "); Serial.print(initialDistance); Serial.println("\""); delay(100); } 

movementCheck fait la même chose qu’initialScan, mais compare ensuite les résultats à la distance lue au départ. S’il n’y a pas de problèmes, la boucle continue ensuite sur. Sinon, il définit l’alertMode sur true.

 }void movementCheck() { digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); duration = pulseIn(echo, HIGH); scannedDistance = duration / 148; delay(100); if (alertMode) { return; } if (scannedDistance > initialDistance + 2 || scannedDistance < initialDistance - 2) { Serial.print("Issue detected. Distance at: "); Serial.print(scannedDistance); Serial.println("\""); Serial.println("Alert in progress."); alertMode = 1; alertTimer = 0; timer -= 50; delay(10); } } 

adjustServo, c’est ce qui gère le réglage de l’angle actuel de la sonde. Il utilise actuellement 45, 90 et 135 degrés, même si cela peut être ajusté de façon dont vous avez besoin. Le retard après servo.write est de compenser tout déplacement ou mouvement qui serait autrement causer des problèmes avec la lecture.

 void adjustServo() { if (alertMode) { Serial.println("Lockdown in progress."); return; } if (positiveMovement) { servoPosition+=45; } else if (!positiveMovement) { servoPosition-=45; } servo.write(servoPosition); delay(500); Serial.print("Current angle: "); Serial.println(servoPosition); if (servoPosition == 135) { positiveMovement = 0; } else if (servoPosition == 45) { positiveMovement = 1; } } 

Voici le code complet. N’hésitez pas à modifier et l’utiliser comme bon vous semble.

 /* Nicholas RoweCS4985Movement Scanner */#include <Servo.h>#define trig 8 #define echo 9 #define serv 10 #define loopDuration 60 #define alertDuration 30 long duration, initialDistance, scannedDistance, timer, alertTimer; Servo servo; int servoPosition; bool alertMode; bool positiveMovement;void setup() { servoPosition = 45; positiveMovement = 1; timer = 0; alertMode = 0; servo.attach(serv); servo.write(servoPosition); pinMode(trig, OUTPUT); pinMode(echo, INPUT); Serial.begin(9600); delay(1000); Serial.println("Initializing..."); delay(1000); Serial.println("Initialized."); initialScan(); delay(100); }void loop() { if (alertMode) { alertScan(); } else if (timer > loopDuration ) { adjustServo(); initialScan(); timer = 0; } else { movementCheck(); timer++; } delay(10); }void alertScan() { if (alertTimer >= alertDuration) { alertMode = 0; initialScan(); Serial.println("Alert ended. Returning to normal."); delay(50); initialScan(); } else { Serial.print("Alert in progress. Time left: "); Serial.println(30 - alertTimer); movementCheck(); alertTimer++; delay(10); } }void initialScan() { digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); duration = pulseIn(echo, HIGH); initialDistance = duration / 148; Serial.print("Monitoring Distance: "); Serial.print(initialDistance); Serial.println("\""); delay(100); }void movementCheck() { digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); duration = pulseIn(echo, HIGH); scannedDistance = duration / 148; delay(100); if (alertMode) { return; } if (scannedDistance > initialDistance + 2 || scannedDistance < initialDistance - 2) { Serial.print("Issue detected. Distance at: "); Serial.print(scannedDistance); Serial.println("\""); Serial.println("Alert in progress."); alertMode = 1; alertTimer = 0; timer -= 50; delay(10); } }void adjustServo() { if (alertMode) { Serial.println("Lockdown in progress."); return; } if (positiveMovement) { servoPosition+=45; } else if (!positiveMovement) { servoPosition-=45; } servo.write(servoPosition); delay(500); Serial.print("Current angle: "); Serial.println(servoPosition); if (servoPosition == 135) { positiveMovement = 0; } else if (servoPosition == 45) { positiveMovement = 1; } } 

Articles Liés

ProType d’un détecteur de Bat à l’aide de SparkCore et bouton Internet

ProType d’un détecteur de Bat à l’aide de SparkCore et bouton Internet

Dans ce instructable je décris la première étape de mon projet : un scanner automatique bat et enregistreur branché dans le nuage internet.La première étape consiste à créer un graphique à barres qui se réinitialise après un certain temps - indiquant
La série Gamesalad : Partie 1 - Introduction le

La série Gamesalad : Partie 1 - Introduction le

ce qui est Gamesalad ? GameSalad est la nouvelle génération du design de l'app. Avec gamesalad, chacun peut créer des applications professionnelles car il n'y a nulle codage ! GameSalad, créé par Gamesalad, Inc. est principalement destiné aux non pro
Appareil bricolage tableau 1: Computational Photography Primer.

Appareil bricolage tableau 1: Computational Photography Primer.

Appareil bricolage tableau 1: Computational Photography Primer.Appareil bricolage tableau 2: Calcul de recentrage avec juste une caméraAppareil bricolage tableau 3:... TBACe premier Instructable est une couche d'apprêt sur le domaine de la photograph
Projet d’éclairage de Led Safe pistolet : bicolore avec détecteur de mouvement

Projet d’éclairage de Led Safe pistolet : bicolore avec détecteur de mouvement

il y a beaucoup de grands guides éclairage LED ici sur Instructables je ne perdre du temps sur ce qu'ils recouvrent. J'ai référencera un peu au cours de cette instructable que je croyais bon comme The definitive guide d'accent LED d'éclairage.Il y a
Projet simple de détection mouvement Arduino

Projet simple de détection mouvement Arduino

Il s'agit d'un tutoriel très simple pour les débutants de l'Arduino, nous avons essayé de garder les choses simples et au point, l'utilisation de capteurs de détection de mouvement PIR et comment contrôler LED basées sur la sortie du capteur.et si to
Mouvement réactif Shake-the Maze Game

Mouvement réactif Shake-the Maze Game

Magie vous apporte à la vie avec un mouvement automatique, réactive shake-the maze jeu ! L'utilisation de composants d'un kit de démarrage Arduino et matériaux communs autour de la maison, c'est un jeu personnalisable pour vous faire sentir comme un
3D grip imprimable et lentille housse pour scanner 3D portable ASUS XTION

3D grip imprimable et lentille housse pour scanner 3D portable ASUS XTION

une poignée imprimable 3D et l'objectif de couvrir pour le matériel qui est très abordable et populairement utilisé comme un scanner 3D portatif de détection de mouvement ASUS XTION.La XTION se tient normalement sur une base pour l'utilisation de tab
Construire un Scanner 3d Bureau bricolage avec résolution infinie.

Construire un Scanner 3d Bureau bricolage avec résolution infinie.

Si vous avez déjà un appareil photo puis ce projet coûtera moins de 50 $ pour terminer. Si vous aimez faire des achats sur AliExpress vous avez probablement générer pour environ 30 $. Si vous souhaitez soutenir votre intermédiaire local, plus de puis
Créer une personnalisé imprimable 3D prothèse à l’aide de données à partir d’un scanner CT

Créer une personnalisé imprimable 3D prothèse à l’aide de données à partir d’un scanner CT

Ce Instructable illustre comment créer une personnalisé imprimable 3D prothèse à l'aide de données provenant d'un tomodensitomètre. Dans ce cas, je vais illustrer le processus de création d'une endoprothèse trachée personnalisé. Ce Instructable n'inc
Construire un scanner thermique Arduino basé

Construire un scanner thermique Arduino basé

Bienvenue sur mon premier instructable !Vous trouverez toutes les informations sur la façon de construire un imageur thermique automatique à l'aide de composants sur étagère. Ce projet peut vous aider à identifier des zones statiques nécessitant une
Environnement 3D Laser Scanner à partir de zéro

Environnement 3D Laser Scanner à partir de zéro

Bonjour et Bienvenue sur mon premier instructable ! Ici, nous irons ensemble à travers le voyage abordable de comment faire votre propre Scanner 3D de Laser.Si vous aimez ce projet, alors je serais super reconnaissant pour votre vote dans le concours
DIY Scanner de livre à grande vitesse du Trash et des caméras bon marché

DIY Scanner de livre à grande vitesse du Trash et des caméras bon marché

j'aime les livres. Il y a quelques connaissances vraiment fantastique et informations cachées là-bas en dur à trouver, rare et livres pas commercialement viables. Je trouve que je veux mes livres avec moi partout. Mais c'est où les problèmes commence
JT - des vagues Larson Scanner avec Joule Thief

JT - des vagues Larson Scanner avec Joule Thief

J'aime les chasseurs de LED. Un tas de LEDs proprement allumer/éteindre sur un timing précis - lumières exécute une seule façon, alors l'inverse... C'est relaxant, apaisant et hypnotique.Il existe tellement de LED chaser/scanner/séquenceur circuits l
Beau projet de Decoupage Style Pompéi (art inclus)

Beau projet de Decoupage Style Pompéi (art inclus)

ce projet magnifique decoupage a beaucoup d'étapes mais est facile à faire parce que j'ai mis en place la plupart de la conception étapes de l'oeuvre. C'est assez beau d'utiliser dans votre salon ou partout où vous utilisez recyclés sacs. Mon style e