Lasītāji tiek aicināti uz
mājās gatavots Instructables autors ar segvārdu Gearboxmakers, kas mēroga indikatorā parāda attālumu starp objektu un diapazona meklētāju, un, ja tas ir pārāk mazs, tas atskaņo melodiju.
Meistars sāk darbu pie dizaina, sastādot tā shēmu:
Secinājumi par enerģijas padevi tālmēram nav parādīti diagrammā, bet pašā tālmērs ir pieejami visi nepieciešamie apzīmējumi.
Shift reģistri 74HC595 (KR1564IR52) šeit ir otrie svarīgākie komponenti pēc
Arduino. Tos bieži izmanto, kad jāpārvalda daudzas kravas, izmantojot tikai divus mikrokontrollera izvadus. Ļoti vienkāršoti, to darbības principu var aprakstīt šādi. Rakstāt uz tastatūras - fizisku vai uz ekrāna. Protams, vienlaikus nospiežot taustiņus, secīgi. Rezultāts ir līnija, kuras visas pazīmes jūs redzat uz ekrāna vienlaikus - paralēli. Kontrolējamo kravu skaitu ir viegli palielināt, ķēdē pievienojot vairāk maiņu reģistru. Iesaistītā mikrokontrollera izeju skaits nepalielināsies, bet ar nemainīgu datu pārsūtīšanas ātrumu samazināsies maksimālais frekvence, ar kuru katru ieslēgt un izslēgt slodzi.
Tā kā mainās vienlaicīgi ieslēgto gaismas diožu skaits, kapteinim neizdodas vadīt ar vienu parastu rezistoru - jums ir jāpievieno rezistors katram LED.
Vednis samontē ierīci
dari pats uz tāfeles veida dēļa un ar Arduino savieno vairākus vadus, kas kalpo elektropārvades līniju un kopējā vada vadīšanai, kā arī datu apmaiņai ar mikrokontrolleri. No Arduino uz ierīci tiek pārsūtīti vadības signāli no nobīdes reģistriem, skaņas izstarotāja un attāluma meklētāja izstarotāja, un uz ierīci tiek pārsūtīti signāli, ko tālummērītāja uztvērējs rada, saņemot atspoguļotās svārstības. Tālāk dēlis tiek parādīts daļēji salikts:
Vednis sāk strādāt pie programmatūras, viņš iegūst šādu skici:
/ *
** Izveidoja: Čārlzs Mučēns
** @charlesmuchene
**
** Datums: 2013. gada 3. oktobris
**
** Laiks: 1412 stundas
**
** Attāluma mērītāja kods
** Sistēma mēra attālumu
** izmantojot ultraskaņas sensoru HC-SR04
** un pārveido to sērijā
** iedegas gaismas diodes
**
** izklaidējies un iekniebj to!
* /
/ * Melodisko laukumu bibliotēka
** Tas raksturo radāmās frekvences * /
# iekļauj "piches.h"
const int triggerPin = 10; // sprūda tapa (zaļa)
const int echoPin = 9; // atbalss tapa (oranža)
const int tonePin = 8; // toņu tapa (pilnīgi zila)
const int serialDataPin = 7; // sērijas datu tapa (oranža)
const int registerClockPin = 6; // reģistrēt pulksteni pin (brūns)
const int shiftRegisterClockPin = 5; // maiņu reģistra pulkstenis
const int numOfRegisters = 16; // reģistru skaits
Const Būla reģistri [numOfRegisters]; // reģistrēt masīvu
int litLEDs = 0; // led pin skaitītājs
int diapazons = 100; // diapazona vērtība
int attālums; // attālums
const int count = range / numOfRegisters; // (metri uz LED)
// sākuma melodija
int melodija [] = {NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4, NOTE_DS8, NOTE_DS8};
// kritiskā attāluma melodija
intkritMelody [] = {NOTE_DS8, NOTE_DS8, NOTE_DS8, NOTE_DS8};
// piezīmju ilgums: 4 = ceturtdaļas piezīme, 8 = astotā piezīme utt.
int noteDurations [] = {4, 8, 8, 4, 4, 4, 4, 4, 4, 2};
int kritisksNoteDurations [] = {4, 4, 4, 4};
iestatīšana nav spēkā ()
{
/ * Tapu konfigurācija * /
pinMode (triggerPin, OUTPUT);
pinMode (echoPin, INPUT);
pinMode (serialDataPin, OUTPUT);
pinMode (registerClockPin, OUTPUT);
pinMode (shiftRegisterClockPin, OUTPUT);
/ * Iededz *
lightEmUp ();
/ * Sākt melodiju * /
playMelody ();
/ * Izslēdziet visas gaismas diodes * /
clearRegisters ();
} // iestatīšana
/ * Iegūstiet attālumu no HC-SR04 * /
int getDistance ()
{
digitalWrite (triggerPin, LOW);
kavēšanāsMikrosekundēs (2);
/ * Sūtīt sprūda signālu * /
digitalWrite (triggerPin, HIGH);
kavēšanāsMikrosekundēs (10);
digitalWrite (triggerPin, LOW);
/ * atgriešanās attālums centimetros * /
atgriešanās (pulseIn (echoPin, HIGH) / 2) / 29.1;
} // iegūstiet attālumu
// aizdedzini visas gaismas diodes
void lightEmUp ()
{
priekš (int pin = 0; pin = 0; i--)
reģistri [i] = LOW;
rakstītReģistri ();
} // notīrīt reģistrus
/ * Rakstiet reģistra vērtības un saglabājiet tās * /
void writeRegisters ()
{
/ * Ar zemu reģistrētā pulksteņa tapu
** glabāšanas reģistra saturs
** nemaina mainīgās maiņu reģistra vērtības
** /
digitalWrite (registerClockPin, LOW);
/ * Pāriet visus reģistrus * /
priekš (int i = numOfRegisters - 1; i> = 0; i--)
{
digitalWrite (shiftRegisterClockPin, LOW);
int val = reģistri [i];
digitalWrite (serialDataPin, val);
digitalWrite (shiftRegisterClockPin, HIGH);
} // apņem visus reģistrus
/ * Šis signāls pārnes
** no maiņu reģistra uz uzglabāšanas reģistriem
* /
digitalWrite (registerClockPin, HIGH);
} // rakstīt reģistrus
// iestatiet atsevišķu tapu HIGH vai LOW
void setRegisterPin (int indekss, int vērtība)
{
reģistri [indekss] = vērtība;
} // iestatīt reģistra pin vērtību
/ * Atskaņot sākuma uMelody * /
spēkā neesoša atskaņošanas mūzika ()
{
priekš (int thisNote = 0; thisNote <10; thisNote ++)
{
/ * Lai aprēķinātu piezīmes ilgumu,
ņem vienu sekundi, dalot pēc piezīmes veida
/ * piem. ceturkšņa piezīme = 1000/4,
** astotā piezīme = 1000/8 utt. * /
int noteDuration = 1000 / noteDurations [thisNote];
signāls (tonePin, melodija [thisNote], noteDuration);
/ * Lai atšķirtu piezīmes, starp tām iestatiet minimālo laiku.
** banknotes ilgums + 30%, šķiet, darbojas labi * /
int pauseBetweenNotes = noteDuration * 1,30;
kavēšanās (pauseBetweenNotes);
noTone (8);
} // visas piezīmes
} // atskaņot sākuma melodiju
/ * Kritiskā melodija * /
spēkā neesoša playCriticalMelody ()
{
priekš (int thisNote = 0; thisNote <4; thisNote ++)
{
int noteDuration = 1000 / noteDurations [thisNote];
tonis (tonePin, kritisksMelodija [thisNote], noteDuration);
/ * Lai atšķirtu piezīmes, starp tām iestatiet minimālo laiku.
** banknotes ilgums + 30%, šķiet, darbojas labi * /
int pauseBetweenNotes = noteDuration * 1,30;
kavēšanās (pauseBetweenNotes);
noTone (8);
} // cilpa visas piezīmes
} // atskaņot kritisko melodiju
tukšs cilpa ()
{
/ * Nobraukt attālumu * /
distance = getDistance ();
/ * Aprēķiniet, cik daudz gaismas diožu iedegas * /
if (diapazons> = attālums)
litLED = (diapazons - attālums) / skaits;
cits
litLED = -1;
/ * Gaismas diodes atkarībā no aprēķinātā attāluma * /
priekš (int pin = 0; pin = 13)
playCriticalMelody ();
} // cilpa
/ **************************************************
* “Piches.h” definīcija
*
* Sabiedrības konstanti
* Konstantes attēlo soļa frekvences
* no attiecīgajām piezīmēm standarta koncertā
* instrumentu skaņošana, piemēram, klavieres
****************************************************
#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. gads
#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
Pēc montāžas pabeigšanas un skices aizpildīšanas vednis parāda, ka viņam ir izdevies:
Ierīce, piemēram, var informēt darbinieku par fotoveikalu, kopēšanas centru, metāla remontu utt. par klienta izskatu.