» Elektronica » Arduino »Afstandsmeter op het Arduino-platform!

De afstandsmeter op het Arduino-platform!


Goede dag allemaal! In dit artikel wil ik vertellen hoe te gebruiken Arduino, een set LED's en een ultrasone sensor, kunt u een apparaat samenstellen dat de afstand van de waarnemer tot het object bepaalt, met andere woorden, afstandsmeter. En laten we gaan!
Wat hebben we nodig:
Gewoon doos. Het is wenselijk klein te zijn, omdat het slechts één microcontroller zal bevatten.

Gebruiken ultrasone transducer HC-SR04 we kunnen de afstand bepalen.

Viercijferige indicator we moeten de verkregen waarden uitvoeren.

Stel LED's alle kleuren (ik heb groen gebruikt, omdat ze helderder zijn), weerstanden bij 220 ohm draden of jumpers ook broodplank.





Zodat de componenten van ons apparaat stevig vast zitten, zal ik ze solderen.
Hiervoor hebben we nodig soldeerbout, flux, soldeerook breadboard voor solderen.

En natuurlijk zonder Arduino we kunnen niet doen! (Je kunt elke microcontroller kiezen, ik gaf de voorkeur aan Arduino Leonardo of het gelijkwaardige Iskra Neo)

Van de gereedschappen hebben we een soldeerbout nodig, zoals ik hierboven zei, mes en tangen.

Laten we nu beginnen met het monteren van het apparaat.
Stap # 1
Om te beginnen, zullen we met behulp van een breadboard een prototype van ons toekomstige apparaat samenstellen. Het ziet er ongeveer zo uit ..

Maak je geen zorgen! Er is niets vreselijks in deze warboel van draden!
De HC-SR04-sensor heeft vier pinnen: plus, min (die we in de 5V en GND van de controller steken), Trig en Echo (we plaatsen de arduino-pinnen in respectievelijk 12 en 11)
De viercijferige indicator heeft 3 draden: stroom, aarde en signaal. Deze laatste is aangesloten op de 9 pin Arduino.
We verbinden drie leds met 6, 5 en 4 contacten van de controller in serie met weerstanden. Vergeet de polariteit niet. De stroom vloeit van een langer been naar een korter been.
Dat is alles, toen we ons apparaat op een breadboard monteerden, de schets uploadden (het zal aan het einde van het artikel zijn) en ervoor zorgen dat alles werkt, voel je vrij om te beginnen met solderen.
Stap nummer 2
Soldeer eerst de ultrasone sensor op het breadboard. Ik heb een kleine breadboard gebruikt, omdat het aantal elementen niet groter is dan 7.

Daarna, met behulp van een tang, de benen afbijten (mijn excuses voor de tautologie), waardoor ze korter worden zodat ze niet interfereren en er mooier uitzien!

Soldeer daarna de vier draden tegen de sensorcontacten.


Vergeet ook de tangen niet!


Stap # 3
De sensor is op zijn plaats, het blijft om de drie LED's samen met de weerstanden te solderen.


Aan de andere kant ziet het er zo uit:

Stap # 4
Snijd aan de zijkant van de doos een rond gat voor voedsel.

Op het deksel moet je een holte op maat maken (iets kleiner in lengte) van je breadboard en ook gaten boren voor schroeven.


Als we nu een lege breadboard zonder elementen erop schroeven (ik deed het alleen voor demonstratie ..), krijgen we zoiets als het volgende:

Stap # 5
Dus, om het gemakkelijker te maken, stel ik voor om eerst de draden op de arduino aan te sluiten en pas dan de breadboard op het deksel van de doos te schroeven. Vergeet ook onze indicator niet, die ik boven de lay-out heb geplaatst.

Alles aan deze apparaatmontage is klaar!
Het blijft alleen om de volgende te downloaden schets en geniet van het speelgoed!
#include
#include
NewPing-sonar (12.11, 400);
int a, j, b;
ongetekend lang t = 0;
int masiv [] = {1,0,0,0,1,0,0,0,1};
ongeldige setup ()
{
 voor (int i = 4; i & 7; i ++)
 {
   pinMode (i, OUTPUT);
 }
 displayClear (9);
 voor (int i = 4; i & 7; i ++)
 {
   digitalWrite (i, 0);
 }
  }
leegte lus ()
{
  j = 7;
  voor (int i = 0; i100) toon (2,70);
    digitalWrite (j, masiv [i]);
    terwijl (millis () & lt; = t + b)
    {
    vertraging (50);
    a = sonar.ping_cm ();
    displayInt (9, a);
    b = a;
    }
    t = millis ();
    als (j == 4) j = 7;
    als (ik == 8)
    {
     digitalWrite (4.1);
     terwijl (millis () & lt; = (t + b) + (b * 2))
     {
    vertraging (50);
    a = sonar.ping_cm ();
    displayInt (9, a);
    b = a;
     }
     digitalWrite (4.0);
     t = millis ();
    }
  }



Een paar woorden programmacode. Dankzij hem knipperen onze drie LED's afwisselend achter elkaar en de snelheid waarmee ze knipperen hangt af van de afstand tot het object, die wordt berekend door de ultrasone sensor. Maar om de LED's te laten knipperen, is het niet helemaal logisch om de delay () functie te gebruiken, want wanneer deze wordt gebruikt, bevriest de controller en worden er geen berekeningen uitgevoerd. Er zijn verschillende manieren om dit probleem op te lossen. Een daarvan is met name het gebruik van de functie millis (), die een getal in milliseconden retourneert vanaf het moment dat de controller werkt. En hoe vertragen we een voorwaardelijke 100 milliseconden? Om dit te doen, heb ik een in wezen lege cyclus gemaakt, waarvan de uitgang pas na deze 100 milliseconden zal zijn, en dan gaat het programma verder met het in- / uitschakelen van de LED's.

Nou dat is alles! Bedankt voor het lezen van dit artikel. Ik hoop dat je haar niet alleen leuk vond, maar ook een nieuwe zee inspireerde ambachten en uitvindingen!
6
5
5

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten
7 opmerkingen
De auteur
Hoi)
Misschien werkt er nog een schets? Hierin blijkt dat zelfs het teken "<" is vervangen door "& lt;")
Hallo Wanneer ik uw schets laad, produceert deze om de een of andere reden een aantal syntaxisfouten. Natuurlijk rommel ik niet erg met de syntaxis, maar op sommige plaatsen kan ik gewoon niet achterhalen wat er moet worden opgelost. In een stuk bijvoorbeeld:
voor (int i = 0; i100) toon (2,70);
digitalWrite (j, masiv [i]);
, wat betekent de samengevoegde i100? waarom niet verhogen? Heb je accolades nodig zodat de volgende twee functies erna tot dezelfde lus behoren, of heb ik het mis? En zo vloekt de compiler door de hele code. Kan ik op de een of andere manier contact met u opnemen, de code verduidelijken? Ik probeer een cursusproject te maken op basis van uw artikel.

Ook in de code op de plaats waar de bibliotheken zijn aangesloten, worden hun namen niet aangegeven. Natuurlijk kun je raden, maar toch is deze schets niet helemaal geschikt voor direct testen, je moet erover nadenken)
De auteur
Ja, het is mogelijk)
Dat wil zeggen, de voorlaatste foto (waarin 77) is gewoon niet succesvol vanwege enige parasitaire verlichting van de bovenste segmenten als gevolg van onjuiste bediening van de dynamische weergave? De zes heeft ook een valse achtergrondverlichting, hoewel niet zo voor de hand liggend.
De auteur
Ivan, aflezingen 6 cm en 11 cm is de afstand van de sensor tot de handpalm)
Leg uit waarom zo'n vreemd getuigenis in de laatste twee foto's.

We raden je aan om te lezen:

Geef het voor de smartphone ...