Arduino Micro Electronic Bubble Niveau: 5 étapes (avec photos)

Arduino Micro Electronic Bubble Niveau: 5 étapes (avec photos)

Table des matières:

Anonim

Il y a un an environ, j'ai construit un indicateur de niveau de pôle de caméra utilisant des lettres L.E.D pour indiquer l'angle de la tour comme aide visuelle. Cela a bien fonctionné, mais j’ai toujours pensé que cela pourrait être un peu "jazzé".

Après avoir pris un petit écran LCD Nokia 5110, j'ai décidé de revenir sur mon projet de niveau électronique.

Ce projet simple est le résultat. J'espère que quelqu'un le trouvera utile!

Provisions:

Étape 1: Pièces nécessaires

pour ce projet, vous aurez besoin des éléments suivants ….

1. Un Arduino. (J'ai utilisé un nano mais n'importe quel arduino devrait marcher)

2. Un capteur d'inclinaison. (Je suis retourné au Memsic 2125. Principalement parce que j'en avais quelques-uns à portée de main.)

3. Un écran LCD Nokia 5110 (peu coûteux et facile à trouver!)

4. Fils. (Beaucoup de fils colorés!)

5. Breadboard ou perfboard.

Étape 2: L'assemblage est simple!

Le montage est super facile car tout est point à point. Pas de composants séparés comme des résistances, des condensateurs, etc.

J'ai inclus un brochage simple pour le capteur d'inclinaison Memsic 2125.

Les descriptions des broches des écrans Nokia 5110 sont sérigraphiées.

Voici une liste des épingles à épingler pour chaque partie de l’Arduino (nano) dans mon cas …..

--------------------------------------

Arduino <------> LCD Nokia

GND ------------------- GND

5V -------------------- VCC

D4 --------------------- Lumière

D5 --------------------- CLK

D6 --------------------- DIN

D7 --------------------- DC

D8 --------------------- CE

D9 --------------------- TVD

Pour le memsic 2125

GND ------------------ GND

5V ------------------ VCC

A4 ------------------ XOut

A5 ------------------- YOut

Étape 3: Comment ça marche?

Qu'est-ce qui le fait partir?

la réponse courte est la chaleur. Le capteur d'inclinaison est en fait une petite chambre entourée de 4 très petits thermomètres. Au fur et à mesure que vous inclinez le capteur, la chaleur augmente et les thermomètres mesurent la différence de température. c'est si simple! L'électronique de la puce convertit les différences de température en mesures X et Y et envoie ces données aux broches X et Y.

Étape 4: Le code pour le faire disparaître!

Le code pour ce petit projet est également très simple.

Étant donné que le capteur émet des signaux, il les transmet sous forme de valeurs X et Y Tout ce que nous avons vraiment besoin de faire est de lire les valeurs et de les convertir en quelque chose de "monde réel" que nous pouvons afficher sur notre écran LCD 5110.

Le code configure l'affichage 5110. Dessine un petit oeil de taureau puis commence à lire les données x, y du memsic.

il effectue ensuite deux correspondances pour convertir la sortie 3000 en 6000 (ish) en 2 valeurs.

La première étape mappe la sortie memsic sur une échelle pour l'affichage en x et y (0-48) et (0-84) afin que nous puissions afficher et animer la bulle autour de l'affichage.

Il y a aussi une sortie série qui envoie les données brutes à l'usb. vous n'êtes pas obligé de l'utiliser. mais c'est là si nécessaire.

La deuxième étape de mappage met ensuite à l'échelle l'échelle d'affichage de -90 à 90 pour les étiquettes de texte X et Y sur l'affichage pour les angles. (il s’agit d’un affichage d’angle approximatif) nous ne nous inquiétons pas de la précision sans niveau. nous voulons juste une idée générale!

Voici le code ……

#comprendre // niveau visuel arduino micro led #include #include Adafruit_PCD8544 display = Adafruit_PCD8544 (5, 6, 7, 8, 9); // broche 2 - Sortie d'horloge série (SCLK) 5 // broche 3 - Sortie de données série (DIN) 6 // broche 4 - Sélection de données / commande (D / C) 7 // broche 12 - Sélection de puce LCD (CS) 8 // broche 11 - réinitialisation de l'écran LCD (RST) 9 const int X = A4; // X pin sur m2125 const int Y = A5; // Y pin sur m2125 int i = 0; int dist, inv = 0; stan de booléen = 0; void setup () {// configure le port série Serial.begin (9600); pinMode (X, INPUT); pinMode (Y, INPUT); display.begin (); display.setContrast (50); display.clearDisplay (); } void loop () {// lire dans les données d'impulsion int pulseX, pulseY; int angleX, angleY; int accélerationX, accélérationY; pulseX = pulseIn (X, HIGH); impulsionY = impulsionIn (Y, HAUT); // mappe les données pour l'affichage nokia accelerationX = map (pulseX, 3740, 6286, 48, 0); accélérationY = carte (impulsionY, 3740, 6370, 84, 0); // mappe les données en angles bruts angleX = map (accélérationX, 48,0, -90,90); angleY ​​= carte (accélérationY, 0,84, -90,90); display.drawRect (0,0,84,48, NOIR); display.drawLine (42, 0, 42, 48, NOIR); display.drawLine (0, 24, 84, 24, NOIR); display.drawCircle (42,24,10, BLACK); // display bubble display.fillCircle (accélérationY, (accélérationX), 4, NOIR); display.setCursor (4,4); display.println ("X:" + String (angleX)); display.setCursor (4,38); display.println ("Y:" + String (angleY)); display.display (); display.clearDisplay (); // Envoie les données au numéro de série au cas où nous aimerions voir ce qui est signalé et // utilisation possible par le PC ultérieurement Serial.print ("X"); Serial.print (pulseX); Serial.print ("Y"); Serial.print (pulseY); Serial.println (""); // retarder le flux de données pour ne pas surcharger le délai série (90); }

Étape 5: Voyons si cela fonctionne comme prévu

Après tous nos efforts. Voyons si cela fait ce que nous attendons?

On dirait que ça marche!

Une fois installé dans un boîtier alimenté par batterie, vous serez prêt à passer à l'action!