Balayer le télémètre à ultrasons (4 / 4 étapes)

Étape 4: Code d’Upload

  1. Se connecter à l’ONU à un PC via USB. Copiez le code ci-dessous dans une esquisse vide à l’aide de l’IDE Arduino et transférez-le au Conseil d’administration.
  2. Vous devrez importer les ST7735 et les bibliothèques de GFX Adafruit qui se trouvent ici : http://learn.adafruit.com/1-8-tft-display/graphics-library
  3. Débranchez le câble USB et joindre la fiche de 2,1 mm pour prise d’alimentation de l’ONU.
  4. Vous avez maintenant un travail de balayage télémètre à ultrasons. Jouer avec certaines variables de dans le code pour modifier la vitesse du servo et les résultats sont tracés de façon à l’écran.

Copiez le code suivant traite les données d’un télémètre à ultrasons monté sur un servo
Le servo va balayer 180 degrés
Données provenant du télémètre à ultrasons sont tracé sur l’écran

Pour les petits groupes, vous pouvez utiliser toutes (4 ou) 5 broches
#define sclk 4
#define mosi 5
#define cs 6
#define dc 7
#define rst 8 / / vous pouvez également vous connecter cela à la réinitialisation de l’Arduino

Utilisez ces broches pour le bouclier !
#define sclk 13
#define mosi 11
#define cs 10
#define dc 8
#define rst 0 / / vous pouvez également vous connecter cela à la réinitialisation de l’Arduino

#include < Adafruit_GFX.h > / / bibliothèque graphique de base
#include < Adafruit_ST7735.h > / / spécifiques au matériel bibliothèque
#include < math.h >
#include < SPI.h >
#include < Servo.h >

#if defined(__SAM3X8E__)
#undef __FlashStringHelper::F(string_literal)
#define F(string_literal) string_literal
#endif

Tft Adafruit_ST7735 = Adafruit_ST7735 (cs, dc, rst) ;
flotteur p = 3,1415926 ;
uint16_t x = 0 ;
uint16_t y = 0 ;
angle de flotteur = 0 ;
float angle2 = 0 ;
flotteur angle1 = 0 ;
int vers l’avant = 1 ;
capteur int = 0 ;
double distance = 0 ;
uint16_t px = 0 ;
uint16_t py = 0 ;
double échelle =. 4 ;
int i = 0 ;
double vitesse = 0,02 ;
float offset = 10 ;
int count = 0 ;
int pos = 0 ;

Servo servo ;
int servopin = 9 ;

void setup(void) {}

Fixer le servo et réglé sur la position centrale
servo.Attach(servopin) ;
Delay(500) ;
servo.Write(90) ;
Delay(500) ;
servo.Detach() ; Détacher avant d’envoyer des commandes d’affichage (interface SPI utilise même minuteries sont bibliothèque Servo)

tft.initR(INITR_BLACKTAB) ;   initialiser un onglet de puce, noire ST7735S
S’enveloppe de plastique de votre TFT dispose d’un onglet rouge, utiliser la syntaxe suivante :
tft.initR(INITR_REDTAB) ;   initialiser un onglet de puce, rouge ST7735R
S’enveloppe de plastique de votre TFT dispose d’un onglet vert, utiliser la syntaxe suivante :
tft.initR(INITR_GREENTAB) ; initialiser un onglet de puce, vert ST7735R

Faire un écran noir et ensuite imprimer le fond (texte et arcs)
tft.fillScreen(ST7735_BLACK) ;
tft.setCursor (0, 152) ;
TFT.Print (« 1m 2m 3M ") ;
tft.setCursor (0, 0) ;
TFT.Print("Scanning") ;
drawcircles() ;

angle1 = atan((float)tft.width()/((tft.height()/2.0)-offset)) ;
angle2 = M_PI - 1 ;
}

void loop() {}

Calculer la position des servo (servo est 0-180degrees tandis que la variable de l’angle est exprimé en radians)
POS = 180.0-180.0*(angle/p) ;
distance = analogRead(sensor) ;

ATACH servo au début de chaque boucle
servo.Attach(servopin) ;
Delay(15) ;
servo.Write(POS) ;

Copiez le code suivant convertit cooridantes polaire du capteur en coordonnées x-y
Ceci permet de déterminer quels pixels pour dessiner les données du capteur sur
Le code varie légèrement selon le quadrant de l’angle
if(angle<angle1) {}
x = (uint16_t) (tft.height()/2-offset) * tan(angle) ;
y = décalage (uint16_t) ;
PX = échelle * distance * sin(angle) ;
py = tft.height () / 2 - échelle * distance * cos(angle) ;
} ElseIf (angle <(M_PI/2.0)) {}
y = (uint16_t) ((tft.height()) / 2 - tft.width() / tan(angle)) ;
x = tft.width() ;
PX = échelle * distance * sin(angle) ;
py = tft.height () / 2 - échelle * distance * cos(angle) ;
} else if(angle<angle2) {}
y = (uint16_t) ((tft.height()) / 2 + tft.width() / tan(M_PI-angle)) ;
x = tft.width() ;
PX = échelle * distance * sin(M_PI-angle) ;
py = tft.height () / 2 + échelle * distance * cos(M_PI-angle) ;
} else if(angle>angle2) {}
x = (uint16_t) (tft.height()/2-offset) * tan(M_PI-angle) ;
y = (uint16_t) (tft.height()-offset) ;
PX = échelle * distance * sin(M_PI-angle) ;
py = tft.height () / 2 + échelle * distance * cos(M_PI-angle) ;
}

Détacher le servo lorsqu’il a atteint sa position pour le cycle et avant d’écrire des commandes d’affichage
Delay(15) ;
servo.Detach() ;

Tracer une ligne qui représente la direction que pointe du capteur
tft.drawLine (0, tft.height () / 2, x, y, ST7735_GREEN) ;
tft.drawLine (0, tft.height () / 2, x, y, ST7735_BLACK) ;
Dessiner un cercle pour le capteur
tft.fillCircle (px, py, 1, ST7735_RED) ;

Comme objets dessinés par le calcul intensif, les arcs verts ne sont tirées chaque 30 cycles
Si (comte > = 30) {}
Count = 0 ;
drawcircles() ;
TFT.Print(".") ;
}
Count ++ ;

Ce code modifie la direction que le servo tourne lorsqu’il atteint la fin de chaque balayage (0 ou 180 degrés)
Le code inclut redessiner le texte et les arcs que l’écran est effacé à la fin de chaque balayage
{if(Forward==0)}
angle = angle-Vitesse ;
Si (angle < = 0) {}
angle = 0 ;
Forward = 1 ;
tft.fillScreen(ST7735_BLACK) ;
tft.setCursor (0, 152) ;
TFT.Print (« 1m 2m 3M ") ;
tft.setCursor (0, 0) ;
TFT.Print("Scanning") ;
Count = 0 ;
drawcircles() ;
}
} else {}
angle = angle + Vitesse ;
Si (angle > = M_PI) {}
angle = M_PI ;
Forward = 0 ;
tft.fillScreen(ST7735_BLACK) ;
tft.setCursor (0, 152) ;
TFT.Print (« 1m 2m 3M ") ;
tft.setCursor (0, 0) ;
TFT.Print("Scanning") ;
Count = 0 ;
drawcircles() ;

}
}

}

Une fonction pour dessiner des cercles
void drawcircles() {}
tft.drawCircle (0, tft.height () / 2, tft.height () / 4-20, ST7735_GREEN) ;
tft.drawCircle (0, tft.height () / 2, tft.height () / 2-20, ST7735_GREEN) ;
tft.drawCircle (0, tft.height () / 2, tft.width ()-20, ST7735_GREEN) ;
}

Articles Liés

Télémètre à ultrasons avec un ATtiny85 (avec bouclier)

Télémètre à ultrasons avec un ATtiny85 (avec bouclier)

Je suis ici pour vous montrer comment utiliser un télémètre à ultrasons HC-SR04 avec un ATtiny85 comme le ATtiny85 en utilisant que le merveilleux bouclier que randofo créé de programmation.Liste des matériaux :Bibliothèque de programmation ATtiny85A
Télémètre à ultrasons avec Arduino

Télémètre à ultrasons avec Arduino

Télémètre à ultrasons est une méthode simple de calcul de distance d'un obstacle à distance sans contact physique. Il utilise un capteur de distance à ultrasons qui utilise des impulsions sonores pour mesurer la distance. En émettant une impulsion ul
Télémètre à ultrasons avec affichage à cristaux liquides sur Arduino UNO

Télémètre à ultrasons avec affichage à cristaux liquides sur Arduino UNO

Dans ce tutoriel nous allons voir une utilisation différente du module ultrasons HC-SR04. Ce module est souvent utilisé sur les robots et les voitures jouets pour localiser les obstacles, mais il peut être utilisé pour mesurer les distances aussi bie
Analog ultrasons télémètre

Analog ultrasons télémètre

Quand j'ai commencé ma carrière en systèmes de contrôle, que j'ai été fasciné par les différentes manières que machines pourrait être relié à l'environnement en qu'ils agissaient. Fins de course (électriques et optiques), codeurs, résolveurs, jauges
Un Finder(Arduino) de gamme ultrasonique mystérieuse boîte -

Un Finder(Arduino) de gamme ultrasonique mystérieuse boîte -

Il y a deux nouvelles, dont celui que vous voulez entendre d'abord ? Bien. Laissez-moi vous dire la bonne nouvelles-notre société de Elecrow de plus en plus rapide à l'appui de partenaires décideurs et Arduino passionnés, nous avons ajouté un grand n
Simple capteur à ultrasons 4 broches surveillance (hc-sr04)

Simple capteur à ultrasons 4 broches surveillance (hc-sr04)

Bonjour Instructables,J'ai eu quelques problèmes avec mon capteur ultrasonique à bas prix (hc-sr04) et aujourd'hui j'ai trouvé une solution vraiment facile.C'est une modification très simple du code normal 3 broches.J'ai ajouté de l'int 4 jusqu'au dé
Geste ultrasonique basée télécommande TV

Geste ultrasonique basée télécommande TV

il s'agit d'un projet assez simple qui vise à introduire des éléments clés d'un nouvel utilisateur Arduino. J'ai créé ceci en quelques heures de bricolage à l'aide des bibliothèques de l'Arduino et un kit de démarrage SainSmart. Applications du monde
Ultrasonic interface

Ultrasonic interface

Fait avec 2 télémètres à ultrasons (SRF02), vieux mac-clavier & 1 Arduino Uno.Schoolproject (cours : mécatronique), Kortrijk école de Design industriel.Sur le site de TIII (Interfaces Interactive Intuitive tangibles), vous pouvez trouver inspiration
Distance de mesure et obstacle détection à l’aide de NXP 89v51rd2fn et capteur à ultrason HC-SR04.

Distance de mesure et obstacle détection à l’aide de NXP 89v51rd2fn et capteur à ultrason HC-SR04.

Tout le monde utilise arduino uno ou mega pour rendre les projets car ils sont faciles à utiliser et le code pour arduino est facilement disponible sur les forums de l'arduino et personne n'utilise atmel, philips ou autre microcontrôleur pour faire d
Cartographie par ultrasons 2D

Cartographie par ultrasons 2D

Dans ce instructable que nous allons vous montre comment utiliser un capteur sonar pour créer un 2D des cartes des objets environnants. Ce projet fait partie de la mine de la détection de quadcopter projet de SRJC Computer Science Club. Cette partie
Visualiseur de capteur Ultrasonic Distance W / traitement

Visualiseur de capteur Ultrasonic Distance W / traitement

ce projet utilise un traitement à prendre les données d'un télémètre à ultrasons sur une carte arduino et suggestions que dans des variables dans un traitement de croquis.Étape 1: Configurer votre matérielvous aurez besoin :télémètre à ultrasonscarte
4 servo drive CellBot qui peut être contrôlé à distance.

4 servo drive CellBot qui peut être contrôlé à distance.

j'ai commencé avec une idée de ce que je voulais depuis le début, mais une tentative après l'autre j'ai enfin réussi là où je suis maintenant. Ce robot peut être contrôlé à partir n'importe où dans le monde à distance et conduit dans la maison. Je pe
BRICOLAGE anémomètre et girouette pour Station météo autonome

BRICOLAGE anémomètre et girouette pour Station météo autonome

Je voudrais partager quelques connaissances sur la station météo. Comme nous avons entendu plusieurs fois sur la station météo et quelques personnes aient envie de construire leur propre station météo chez eux.Station météo est tout simplement une ch
Mont de Sentry ciblage automatique contrôlé par Arduino

Mont de Sentry ciblage automatique contrôlé par Arduino

Dans ce projet, nous construisons une monture de ciblage automatique très facile, peu coûteux, peu complexes, haute fonctionnalité pour n'importe quel objet que vous désirez. Quand quelqu'un ou quelque chose vient près de l'appareil, il comme par mag