Meter afstand (4 / 5 stap)

Stap 4: Stap 4. Programmeren van de meter


Het volgende is een codevoorbeeld op een Arduino IDE
/*
** Gemaakt door: Charles Muchene
**
**
** Datum: 3 oktober 2013
**
** Tijd: 1412hrs
**
** Afstand meter code
** Het systeem meet de afstand
** met behulp van ultrasone sensor van de HC-SR04
** en vertaalt dit in een reeks
** van verlichte LED 's
**
** Veel plezier en tweak het!
*/
/ * Bibliotheek voor de melodische standplaatsen
** Het beschrijft de frequenties worden geproduceerd * /
#include "pitches.h"

Const int triggerPin = 10; trigger-pin (groen)
Const int echoPin = 9; ECHO pin (oranje)
Const int tonePin = 8; Toon pin (whilte-blauw)
Const int serialDataPin = 7; seriële data pin (oranje)
Const int registerClockPin = 6; registreren van klok pin (bruin)
Const int shiftRegisterClockPin = 5; shift register klok
Const int numOfRegisters = 16; aantal registers

Const boolean registreert [numOfRegisters]; registreren van matrix
int litLEDs = 0; onder leiding van pin teller
int bereik = 100; waarde van het bereik
int afstand; afstand

Const int count = bereik / numOfRegisters; (meter per LED)

opstarten van melodie
int melodie [] = {NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4, NOTE_DS8, NOTE_DS8};

kritische distantie melodie
int criticalMelody [] = {NOTE_DS8, NOTE_DS8, NOTE_DS8, NOTE_DS8};

Opmerking de duur: 4 = kwartnoot, 8 = achtste noot, enz.
int noteDurations [] {4, 8, 8, 4, 4, 4, 4, 4, 4, 2} =;
int criticalNoteDurations [] {4, 4, 4, 4} =;

VOID Setup
{
/ * Pin configuraties * /
pinMode (triggerPin, OUTPUT);
pinMode (echoPin, INPUT);
pinMode (serialDataPin, OUTPUT);
pinMode (registerClockPin, OUTPUT);
pinMode (shiftRegisterClockPin, OUTPUT);

/ * Licht 'em up * /
lightEmUp();

/ * Start melodie * /
playMelody();

/ * Uitschakelen alle LEDs * /
clearRegisters();

} / / setup

/ * Krijg afstand van HC-SR04 * /
int getDistance()
{
digitalWrite (triggerPin, laag);
delayMicroseconds(2);
/ * Verzenden trigger signaal * /
digitalWrite (triggerPin, hoge);
delayMicroseconds(10);
digitalWrite (triggerPin, laag);

/ * terug afstand in centimeters * /
retourneren (pulseIn (echoPin, hoge) / 2) / 29.1;
} //get afstand

licht alle leds
VOID lightEmUp()
{
voor (int pin = 0; pin < numOfRegisters; pin ++)
registers [pin] = hoog;

writeRegisters();
} //light 'em up

alle register pinnen op laag ingesteld
VOID clearRegisters()
{
for (int i = numOfRegisters - 1; ik > = 0; i--)
registers [i] = laag;
writeRegisters();
} //clear registreert
/ * Schrijf register waarden en deze velden opslaan * /
VOID writeRegisters()
{
/ * Met register klok pin laag ingesteld
** de inhoud van de opslag registreren
** worden niet gewijzigd door de veranderende shift register waarden
**/
digitalWrite (registerClockPin, laag);

/ * Doorlopen alle registers * /
for (int i = numOfRegisters - 1; ik > = 0; i--)
{
digitalWrite (shiftRegisterClockPin, laag);
int val = registers [i];
digitalWrite (serialDataPin, val);
digitalWrite (shiftRegisterClockPin, hoge);
} / / alle registers lussen

/ * Dit signaal tranfers de inhoud van
** van de werktijd geregistreerd tot de registers van de opslag
*/
digitalWrite (registerClockPin, hoge);
} //write registreert

een persoonlijke pincode instellen, hoog of laag
VOID setRegisterPin (int index, int value)
{
registers [index] = waarde;
} //set register pin waarde

/ * Play start uMelody * /
VOID playMelody()
{
voor (int thisNote = 0; thisNote < 10; thisNote ++)
{
/ * Voor de berekening van de duur van de opmerking
Neem een tweede gedeeld door Opmerking type
/ * BV kwartnoot = 1000 / 4,
** achtste noot = 1000/8, enz * /
int noteDuration = 1000/noteDurations [thisNote];
Toon (tonePin, melodie [thisNote], noteDuration);

/ * Om te onderscheiden van de notities, stel een minimuminterval tussen hen.
** de nota's duur + 30% schijnt goed te werken * /
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(8);
} / / alle notes
} //play voorsprong opwaarts melodie

/ * Kritieke melodie * /
VOID playCriticalMelody()
{
voor (int thisNote = 0; thisNote < 4; thisNote ++)
{
int noteDuration = 1000/noteDurations [thisNote];

Toon (tonePin, criticalMelody [thisNote], noteDuration);

/ * Om te onderscheiden van de notities, stel een minimuminterval tussen hen.
** de nota's duur + 30% lijkt te werken goed * /
int pauseBetweenNotes = noteDuration * 1.30;

delay(pauseBetweenNotes);

noTone(8);

} / / loop alle notities

} //play kritische melodie

void loop
{
/ * Krijg afstand * /
afstand = getDistance();

/ * Het berekenen van de LEDs te licht * /
Als (bereik > = afstand)
litLEDs = (bereik - afstand) / tellen;
anders
litLEDs = -1;

/ * Licht van LEDs afhankelijk van de afstand berekend * /
voor (int pin = 0; pin < numOfRegisters; pin ++)
{
Als (pin < = litLEDs)
setRegisterPin (pin, hoge);
anders
setRegisterPin (pin, laag);
} //for lus

writeRegisters(); effect wijzigingen

/ * Spelen kritische nabijheid melodie * /
Als (litLEDs > = 13)
playCriticalMelody();

} //loop
/*************************************************
* "pitches.h" definitie
*
* Openbare constanten
* De constanten worden vertegenwoordigd de frequenties toonhoogte
* voor de respectieve notities op een standaard concert
* instrument zoals een Piano afstemmen
*************************************************/
#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define NOTE_C2 65
#define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_FS2 93
#define NOTE_G2 98
#define NOTE_GS2 104
#define NOTE_A2 110
#define NOTE_AS2 117
#define NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
#define NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 4978

Gerelateerde Artikelen

Hoe doet magnetisch veld variëren met afstand?

Hoe doet magnetisch veld variëren met afstand?

Deze Instructabler is een wetenschappelijk onderzoek om te bepalen hoe magnetisch veld varieert met de afstand. Twee methoden zijn gepresenteerd, en redelijke conclusies gemaakt.De magneet is een dunne schijftype, niet een bar magneet.Gereedschappen
Aan de slag met afstand sensoren en Arduino

Aan de slag met afstand sensoren en Arduino

Dit is een handleiding voor het gebruik van afstand sensoren met Arduino en enkele bewerkingen. We hebben deze sensoren gebruikt:SCHERPE GP2Y0A21YK0FAfstand meten Sensor UnitSamengesteld uit een geïntegreerde combinatie van PSD (positie gevoelige det
Hoe maak je een lichte fiets met bereik meer potentiële kopers

Hoe maak je een lichte fiets met bereik meer potentiële kopers

Wij houden onze fietsverlichting, maar ze schijnen een kleine, intense licht. We hebben uitgebreid het bereik van potentiële kopers van een achterste fietsverlichting. We gebruiken het lichtdoorlatende materiaal van een fles melk te diffuus licht ove
Variabele en middelgrote breien buis met behulp van treksluiters

Variabele en middelgrote breien buis met behulp van treksluiters

Toen ik een jong meisje in de ' 70's, had ik een breien Jenny en een begeleidende Spool Knitter. De KJ was cool voor breien, sjaals en de SK, die was een uitgeklede versie van de KJ met slechts 4 pinnen bovenop een spool... Ik herinner me niet iets a
Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

In deze tutorial gaan we zien een ander gebruik van de HC-SR04 ultrasone module. In deze module wordt vaak gebruikt op robots en speelgoedauto's te vinden van belemmeringen, maar het kan worden gebruikt voor het meten van afstanden ook.Afstanden geme
YourDuino: HandBat - Handheld ultrasone Radar met behulp van Arduino

YourDuino: HandBat - Handheld ultrasone Radar met behulp van Arduino

HandBat is een handheld van ultrasone Radar die stuurt pulsen van echografie en luistert naar de Echos, als een vleermuis. Het is bedoeld voor gebruik door de slechtziende mensen of navigatie in het donker.Handbat is gehuisvest in een goedkope ($3.97
Hazen vangen nooit met Tortoise

Hazen vangen nooit met Tortoise

Iedereen mag het weten van het verhaal - - de schildpad en de haas op zeer jonge leeftijd. Iedereen kan onthouden onder perceel:... Haas liep op de weg voor een tijdje en dan en onderbroken om uit te rusten. Hij blikte terug op Slow en Steady en riep
Verticale pallet plantenbak met automatische water fietsen.  Geen water!

Verticale pallet plantenbak met automatische water fietsen. Geen water!

Check de video van de luchtbrug AMAZING!   Ik heb gecontroleerd (met een manometer) en ongeveer 0.2 psi heeft gepompt water tot meer dan 6 ft hoog.  (Het werkte alle nacht gebruikend 3/16 inch buis).     De hele pallet planter ding werkt heel goed na
Arduino gebaseerde afstand maatregel vak

Arduino gebaseerde afstand maatregel vak

Hallo, in dit project zal ik u tonen hoe te bouwen uw eigen doos meter afstand met Arduino uno en een ultrasone sensor.Voordat u begint, zorg ervoor dat u hebt:Arduino unoHC-SR04 ultrasone SensorLCD 16 x 2Officiële website: http://www.ardumotive.com/
Windgenerator met auto Dynamo

Windgenerator met auto Dynamo

Een paar jaar geleden om te bouwen van een windgenerator, waarmee wilde een accu voor het aandrijven van een koelkast en een radio in mijn kleine boerderij, waar er geen elektriciteit. Ik paste het een auto Dynamo, maar dit onderdeel was niet een goe
Sensor van de nabijheid met een boord van Mediatek Linkit interfacing

Sensor van de nabijheid met een boord van Mediatek Linkit interfacing

In dit Instructable u zal zitten kundig voor scherpe IR Proximity Sensor met Mediatek Linkit een interfacekaart.Een sensor van de nabijheid is een sensor die kan detecteren van de aanwezigheid van nabijgelegen objecten zonder enig fysiek contact.Een
Hoe gebruik ik de RFduino met een 6 Axis versnellingsmeter

Hoe gebruik ik de RFduino met een 6 Axis versnellingsmeter

Bekijk de RFduino van vinger-tip formaat, Arduino compatibele, draadloze ingeschakelde micro controller:http://www.rfduino.com/product/rfd90101-rfduino-2p...Dit instructable zal laten zien hoe je interface naar de versnellingsmeter/Gyro met de RFduin
Airsoft of Airgun (of andere projectiel gooien apparaat) chronograaf met behulp van een microfoon

Airsoft of Airgun (of andere projectiel gooien apparaat) chronograaf met behulp van een microfoon

mijn eerste Instructable, opbouwende kritiek welkom.Hebt u een airsoft pistool of elke andere projectiel zijn afvuren apparaat dat u wilt chronograaf of de opties vrij beperkt. U kunt vinden van iemand anders die een chronograaf heeft, en vragen of i
Pest plant brander caddy met 3 D afgedrukt delen.

Pest plant brander caddy met 3 D afgedrukt delen.

het besluit hoe om pest plant in gaten, flaggings en randen onder controle, heeft ons nu in leiden het gebruik van een vlammenwerper.GIF is duurder dan propaangas en niet goed voor het milieu, vooral wanneer het krijgt dreef in het grondwater door de