Shield Arduino personnalisé et capteurs (10 / 10 étapes)

Étape 10 : Arduino Code pour Obstacle évitant Robot

Le code ci-dessous utilise les capteurs de cette instructable pour contrôler un obstacle autonome en évitant de robot. Les commutateurs de feuilles sont utilisés pour détecter des contact avec des objets vers la gauche et la droite. Si un interrupteur de contact est activé, le robot s’arrête, sauvegarde et puis se détourne l’objet avant de continuer. Le capteur de distance infrarouge est utilisé pour déterminer la distance aux objets devant le robot. Si un objet est plus proche qu’une tolérance établies, l’arrêt du robot et un servo tourne le capteur infrarouge à droite et à gauche pour les mesures. Le robot se transforme alors en direction du chemin plus clair avant de continuer. Un bouton sert à démarrer le robot. Bien que techniquement pas de capteurs, le laser, la sonnerie et la LED est utilisés pour donner une rétroaction visuelle et sonore des capteurs. Lorsque le robot est en marche, le voyant vert s’allume. Lorsque le robot s’arrête, le buzzer sonne et la LED rouge est allumée. Le laser est attaché au capteur IR donnant une indication visuelle de pointe où le capteur de distance infrarouge.

J’ai collé le code Arduino ci-dessous (avec vissé vers le haut mise en forme), mais pour une raison quelconque, je n’étais pas en mesure de télécharger un fichier contenant le code. C’est étrange car j’ai été capable de le faire pour mon précédent instructable. Mais cette fois, chaque fois que je tente de télécharger le fichier .ino j’obtiens le message « erreur 400 : impossible de télécharger scripts: »

/ * 4/29/14
Ce code utilise plusieurs capteurs pour contrôler le comportement

d’un obstacle autonome en évitant de robot. Comme le robot

se déplace vers l’avant, qu'un capteur de distance infrarouge mesure la distance

obstacles dans le chemin d’accès du robot. Si la distance mesurée

est inférieure à une tolérance établies, l’arrêt du robot et une casseroles servo

le capteur infrarouge à droite et à gauche pour déterminer le chemin d’accès les plus manifestes.

Le robot puis tourne dans le sens de la trajectoire plus claire

et puis le produit.

Feuilles droites et gauches commutateurs détecter un contact avec des objets

vers la droite ou la gauche du robot. Lorsque le contact est établi, la

robot de sauvegarde et puis se détourne de l’objet détecté

avant de continuer.

Un laser monté au-dessus du capteur IR indique la direction

dans lequel le robot « recherche ». Quand le robot s’arrête un

LED rouge s’allume et un buzzer piezo sonne. Lorsque le robot est

aller de l’avant, une LED verte s’allume. Quand le robot est alimenté

vers le haut, aucun mouvement ne se déroule jusqu'à ce qu’un bouton sur le robot est

pressé.

*/

#include < Servo.h >

Servo leftWheelServo ;

Servo rightWheelServo ;

Servo panServo ;

Déclarer les broches numériques

int stopLightPin = 2 ;

int leftContactPin = 3 ;

int rightContactPin = 4 ;

int servoPinLeft = 5 ;

int servoPinRight = 6 ;

int laserPin = 7 ;

int goLightPin = 8 ;

int servoPinPan = 9 ;

int buzzerPin = 12 ;

int buttonPin = 13 ;

Déclarer les broches analogiques

int IRpin = 4 ;

Définir des variables

int distanceReading ;

int wallDistance ;

int wallDistanceTolerance = 30 ;

int distanceReadingLeft ;

int distanceReadingRight ;

int wallDistanceLeft ;

int wallDistanceRight ;

int panDelay = 1000 ; Retard pour permettre le capteur IR de prendre une lecture

int turnTime = 250 ; Durée du tour issu des tâtonnements

int Buzztime† = 200 ;

buttonValue int = 0 ;

int oldButtonValue = 0 ;

int leftContactValue = 0 ;

int rightContactValue = 0 ;

void setup()

{

pinMode (buzzerPin, sortie) ;

pinMode (stopLightPin, sortie) ;

pinMode (goLightPin, sortie) ;

pinMode (buttonPin, entrée) ;

pinMode (laserPin, sortie) ;

digitalWrite (buzzerPin, basse) ;

digitalWrite (stopLightPin, basse) ;

digitalWrite (goLightPin, basse) ;

leftWheelServo.attach(servoPinLeft) ;

rightWheelServo.attach(servoPinRight) ;

panServo.attach(servoPinPan) ;

Avertisseur sonore pour indiquer que le robot a puissance

digitalWrite (stopLightPin, HIGH) ;

digitalWrite (buzzerPin, HIGH) ;

Delay(buzzTime) ;

digitalWrite (buzzerPin, basse) ;

Attendez jusqu'à ce que la touche avant de passer

tandis que (buttonValue == faible)

{

leftWheelServo.write(90) ;

rightWheelServo.write(90) ;

buttonValue = digitalRead(buttonPin) ;

}

Avertisseur sonore pour indiquer le bouton de démarrage a été pressé

digitalWrite (buzzerPin, HIGH) ;

Delay(buzzTime) ;

digitalWrite (buzzerPin, basse) ;

Supprimez l’alimentation serial pour tester si besoin être

Serial.Begin(9600) ;

}

void loop()

{

Allumez laser

digitalWrite (laserPin, HIGH) ;

Capteur de distance point tout droit

panServo.write(90) ;

Aller de l’avant

leftWheelServo.write(0) ;

rightWheelServo.write(120) ;

digitalWrite (goLightPin, HIGH) ;

digitalWrite (stopLightPin, basse) ;

Test pour les abordages de mur

leftContactValue = digitalRead(leftContactPin) ;

Si (leftContactValue == HIGH)

{

Arrêter

leftWheelServo.write(90) ;

rightWheelServo.write(90) ;

digitalWrite (goLightPin, basse) ;

digitalWrite (stopLightPin, HIGH) ;

digitalWrite (buzzerPin, HIGH) ;

Delay(buzzTime) ;

digitalWrite (buzzerPin, basse) ;

Sauvegarde

leftWheelServo.write(120) ;

rightWheelServo.write(0) ;

digitalWrite (goLightPin, HIGH) ;

digitalWrite (stopLightPin, basse) ;

Delay(500) ;

Tourner à droite

leftWheelServo.write(180) ;

rightWheelServo.write(180) ;

Delay(turnTime) ;

leftWheelServo.write(90) ;

rightWheelServo.write(90) ;

Réinitialiser la variable contact gauche

leftContactValue = 0 ;

}

rightContactValue = digitalRead(rightContactPin) ;

Si (rightContactValue == HIGH)

{

Arrêter

leftWheelServo.write(90) ;

rightWheelServo.write(90) ;

digitalWrite (goLightPin, basse) ;

digitalWrite (stopLightPin, HIGH) ;

digitalWrite (buzzerPin, HIGH) ;

Delay(buzzTime) ;

digitalWrite (buzzerPin, basse) ;

Sauvegarde

leftWheelServo.write(120) ;

rightWheelServo.write(0) ;

digitalWrite (goLightPin, HIGH) ;

digitalWrite (stopLightPin, basse) ;

Delay(500) ;

Tourner à gauche

leftWheelServo.write(0) ;

rightWheelServo.write(0) ;

Delay(turnTime) ;

leftWheelServo.write(90) ;

rightWheelServo.write(90) ;

Reset capteur droit variable

rightContactValue = 0 ;

}

Prendre la lecture du capteur de distance

distanceReading = analogRead(IRpin) ;

wallDistance = 40-distanceReading/10 ;

La formule de distance du mur ci-dessus est déterminée par l’essai

et erreur et conversion linéaire

Un test pour voir si un mur est proche

Si (wallDistance < wallDistanceTolerance)

{

Arrêter

leftWheelServo.write(90) ;

rightWheelServo.write(90) ;

digitalWrite (goLightPin, basse) ;

digitalWrite (stopLightPin, HIGH) ;

digitalWrite (buzzerPin, HIGH) ;

Delay(buzzTime) ;

digitalWrite (buzzerPin, basse) ;

Pan de servo de distance à gauche et à droite pour voir quelle direction

offre une voie plus claire

panServo.write(170) ;

Delay(panDelay) ;

distanceReadingLeft = analogRead(IRpin) ;

Delay(panDelay) ;

wallDistanceLeft = 40-distanceReadingLeft/10 ;

panServo.write(20) ;

Delay(panDelay) ;

distanceReadingRight = analogRead(IRpin) ;

Delay(panDelay) ;

wallDistanceRight = 40-distanceReadingRight/10 ;

Décommentez la série relevés imprimés pour des fins de débogage

Serial.Print(wallDistance) ;

Serial.println ("cm") ;

Serial.Print(wallDistanceLeft) ;

Serial.println ("cm") ;

Serial.Print(wallDistanceRight) ;

Serial.println ("cm") ;

Serial.println("") ;

Serial.println(distanceReading) ;

Serial.println(distanceReadingLeft) ;

Serial.println(distanceReadingRight) ;

Serial.println("") ;

Test pour voir quelle direction vous propose une voie claire

et tourner le robot dans cette direction

Si (wallDistanceLeft > wallDistanceRight)

{

Tourner à gauche

leftWheelServo.write(180) ;

rightWheelServo.write(180) ;

Delay(turnTime) ;

leftWheelServo.write(90) ;

rightWheelServo.write(90) ;

}

d’autre

{

Tourner à droite

leftWheelServo.write(0) ;

rightWheelServo.write(0) ;

Delay(turnTime) ;

leftWheelServo.write(90) ;

rightWheelServo.write(90) ;

}

}

Delay(200) ;

}

Articles Liés

Comment utiliser et shield Arduino avec le Raspberry Pi

Comment utiliser et shield Arduino avec le Raspberry Pi

Ajouter Arduino boucliers pour le Pi de framboise peuvent être une très grande douleur. Vous finissez par avoir un désordre de fils courir et configuration du logiciel est un défi dans son propre droit.Voici une solution simple pour commencer à utili
Robot pilotée par manette PS3 par l’intermédiaire de shield Arduino et Wifi

Robot pilotée par manette PS3 par l’intermédiaire de shield Arduino et Wifi

il s'agit d'un robot qui utilise les deux manettes de gauche et de droite sur la manette PS3 sur disque « tank-style ». Les châssis, les roues et les moteurs sont achetés en kit. Une Arduino Uno est monté sur le châssis et un bouclier Wifi est empilé
Pantalla tactile ITDB02 2.8 Shield Arduino

Pantalla tactile ITDB02 2.8 Shield Arduino

Pantalla Touch ITDB02 2.8 Shield Arduino está diseñada para todas las tarjetas compatibles con Arduino. Funciona con 3.3V, tiene una etapa de conversión de niveles de 5V para utilizarla con tarjetas como Arduino UNO.Es una pantalla táctil con funcion
Bouclier de batterie Shield Arduino moteur

Bouclier de batterie Shield Arduino moteur

Blindage moteur batterie de Shield ArduinoVidéos YouTube
2.4" TFT LCD tactile Shield Arduino

2.4" TFT LCD tactile Shield Arduino

2.4" TFT LCD tactile Shield Arduino UNO Hello World2.4" diagonale TFT LCD tactile résistif 4 fils LED rétroéclairage de l'écranÉtape 1: Scetch#include / / bibliothèque graphique de base#include / / spécifiques au matériel bibliothèque #include#d
Arduino : Nokia LCD & capteurs

Arduino : Nokia LCD & capteurs

Arduino : Nokia LCD & capteursProblème : Un capteur de température-hygrométrie et un écran de Nokia3310LCD faire mon Arduino, travailler ensemble.Maintenant, je suis un Geek vieux paresseux, donc ce que je voulais était un kit Arduino qui prendrait d
Shield Arduino Audio

Shield Arduino Audio

Dans cette vidéo nous montre les étapes simples pour le montage de votre dossier d'audio shield Arduino. Pour acheter un de ces cas, juste de retour mon projet kickstarter : Arduino Audio bouclierÉtape 1: Comment faire monter votre affaire de Shield
Comment connecter votre shield Arduino BLE à une application iOS/Android personnalisée développé en HTML5 et JavaScript.

Comment connecter votre shield Arduino BLE à une application iOS/Android personnalisée développé en HTML5 et JavaScript.

Cette instructable vous montre comment générer une application mobile qui communique avec votre bouclier Bluetooth Low Energy (BLE). Dans ce tutoriel, j'ai utilisé un bouclier BLE de RedBearLab, mais cet exemple devrait être facile de reconstruire de
Comment connecter votre shield Arduino WiFi à une application iOS/Android personnalisée développé en HTML5/JavaScript.

Comment connecter votre shield Arduino WiFi à une application iOS/Android personnalisée développé en HTML5/JavaScript.

Cette montre instructable vous comment générer une application mobile qui communique avec votre bouclier WiFi, dans cet exemple, nous allons créer une application qui peut allumer une LED/arrêt reliée à votre Arduino. L'application mobile sera dévelo
Arduino personnalisé MIDI Controller

Arduino personnalisé MIDI Controller

Bonjour et Bienvenue à cette instructable sur comment construire un contrôleur MIDI USB personnalisé, bon marché et facile, basé sur Arduino. Les meilleures nouvelles : aucun souci avec interfaces USB-MIDI ou outils logiciels tels que MIDI sans poil,
L’horloge de l’histoire : Arduino LCD w / capteurs de cap

L’horloge de l’histoire : Arduino LCD w / capteurs de cap

C'est encore une autre horloge LCD Arduino, mais avec une torsion ; Cette horloge connaît quelques fêtes et anniversaires, effectuent des calculs à la volée de quel âge une personne est et ensuite afficher les informations sur l'écran LCD. Je me suis
Arduino Nano - tutoriel capteur d’éclairage ambiant TSL45315

Arduino Nano - tutoriel capteur d’éclairage ambiant TSL45315

TSL45315 est un capteur de lumière ambiante numérique. Il rapproche de réponse de l'oeil humain sous différentes conditions d'éclairage. Les dispositifs ont trois temps d'intégration réglable et fournissent une sortie directe lux 16 bits via une inte
Construire une distance avec Arduino, protection du capteur IR et VB.NET XBMC/KODI

Construire une distance avec Arduino, protection du capteur IR et VB.NET XBMC/KODI

Construire une distance avec Arduino et un bouclier de capteur IR, qui fonctionnera avec n'importe quel distance XBMC/KODI.J'ai voulu contrôler mon PC XBMC/Kodi de télécommande de mon décodeur satellite, parce que j'ai soit regarder des films sur XMB
Tweeting alarme Arduino avec un capteur PIR. aka AlarmIno

Tweeting alarme Arduino avec un capteur PIR. aka AlarmIno

Salut aujourd'hui je va vous montrer comment faire une alarme Arduino tweeting avec un capteur PIR.Vous sera nécessaire :Une épingle de capteur 3 parallaxe PIRCâble EthernetBouclier d'Ethernet (que j'utilise celui-ci)Carte de prototypageArduino UNO6