Kolokolov-Shchedrin-syvänmeren kierrätys. Eroa alkuperäiseen järjestelmään verrattuna:
1. K561 .. -piirissä ja 32 kHz kvartsissa ei ole kideoskillaattoria. 32 kHz: n signaali antaa Arduino Pro Mini -sovelluksen.
2. Ääniilmoituspiirejä useissa 561-sarjan mikropiireissä ei myöskään ole läsnä, Arduino myös ilmaisee kohteen (ja minun on sanottava, että se on erinomainen äänitys, verrattuna kirjoittajan ohjelmaan).
3. Voimanlähteenä 12v yksinapainen jännite (lyijyakku).
4. Säädä herkkyyttä painikkeilla. ADC-asteikolla 0 - 1023 vastekynnystä voidaan säätää välillä 1 - 38 (arvo voidaan helposti muuttaa luonnoksessa).
Tärkeintä on, että halusin osoittaa tässä artikkelissa, että on mahdollista koota MD-levyjä Arduinolle, joka ei ole herkkyyttä huonompi kuin alkuperäinen (tämä toimi, koska alkuperäisen piirin alkuperäiset kerättiin 10 kappaleen tilauksesta, joten vertailua varten on materiaalia). Alkuperäinen piiri:
Kun aloin työskennellä Arduinon kanssa, innostuin niin, että ajattelin löytää ja koota mitä tahansa metalliilmaisinpiirejä Internetistä Arduinossa, jotta voisin helposti löytää suuren roskien avoimista tiloista. Periaatteessa se osoittautui niin, mutta piirit perustuivat taajuuslaskuriin, joka ei mahdollistanut saavuttaa todella hyvää etäisyyttä. Jotkut lasten lelut ja kynän testi + yrittävät ansaita rahaa aloittelijoille. Tämän MD alkuperäiskappale on todellinen työhevonen, jonka avulla voit löytää suuria esineitä 2 metrin etäisyydeltä (katso Google-kirjassa Kolokolov-Shchedrin). Muunnetusta md: stä ei ole tilastoja. Toivon, että hän ilmestyy MD: n ja Arduinon fanien tuella. Järjestelmä toimi Arduino Unon ja Arduino Pro Mini: n kanssa.
Linkki edelleen esitetään tämän MD-syntymän prosessissa juotosraudan verkkosivustolla, joka kesti yli vuoden ja pakotti kirjoittajan opiskelemaan ohjelmointiparia. Ehkä luonnos näyttää jollekin kurjalle - hyväksyn mielelläni KIINNÖT.
Tällä hetkellä on luonnos, jonka avulla voit säätää herkkyysestettä (nasta 7 merkitsee +1 esteelle, nasta 8 -1 esteelle). .
Arduino noin mini 5v, 16MHz, ATmega168 ja näyttö käyttivät näitä. Asteikon vieressä on Mini SD -sovitin
Kuten jo mainittiin, 1602 maksaa 86 ruplaa, ProMini - 82 ruplaa. Jos haluat, voit yleensä ottaa alasti ATmega168: n, kehittää siitä levyn ja täyttää luonnos suoraan siihen.Ja niin esimerkiksi asensin äiti-isä MD-kortille liittimen avulla. Kuvassa Arduinon 6-napainen pistoke, jonka läpi luonnokset kaadettiin suoraan pöydälle.
Luonnos-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino
// A3-analogiatulo volttimittarille
// analoginen A4-tulo signaalille
// 6- zoo-johtopäätös
// 9 - lähtötaajuus 31200 Hz
#include
Nestekidenäyttö LCD (12, 11, 5, 4, 3, 2);
tavu z1 [8] = {// paristokuvake
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int maat = 0; // muuttuja tallentaa asteikon tason arvon
int voltag = 0; // muuttuja jännitearvon tallentamiseksi
int noll = 0; // muuttuja keskipistearvon tallentamiseksi
#define NUM_SAMPLES 10 // 10 analogista näytettä luettavaksi 1 sekunnissa
int summa = 0; // otettujen näytteiden summa
int aurinko = 0; // sama, mutta jaettuna 10: llä
allekirjoittamaton char näytteen_luku = 0; // nykyinen näytteen numero painikkeella
kelluva jännite = 0,0; // laskettu jännite
const int-painike1 = 7; // este plus -painike
const int-painike2 = 8; // este-miinus-painike
int i = 5; // este
tyhjä asennus () {
lcdbegin (16, 2); // näytön alustus
lcd.setCursor (1, 0);
lcd.setCursor (10, 1);
lcd.print ("Rx-Tx");
viive (3000);
lcd.selkeä ();
TCCR1A = TCCR1A & amp; 0xe0 | 2;
TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
analogWrite (9, 126); // nastalla 10 PWM = 50% f = 31200Hz
lcd.luoChar (1, z1);
}
tyhjä silmukka () {
int buttonState1 = KORKEA; // Painikkeen tila on yksi
int buttonState2 = KORKEA; // Kahden painikkeen tila
näyte_luku = 0; // nollaa lisäysten määrän muoto
summa = 0; // nollaa 10 lisäyksen summa
kun taas (näyte_luku noll + i) {maapallot = kartta (aurinko, noll + i, noll * 2 - 250, 9, 14);
// jos vastaanotettu tulos on asteikon 9-15. segmentissä
ääni (6, neuvoo * 100);}
if (aurinko <= noll - i) {countleds = map (aurinko, 116, noll - i, 0, 7);
// jos tulos on 0-7 asteikon segmentti
ääni (6, neuvoo * 50); }
if (aurinko = noll - (i-1)) {countleds = 7;
noTone (6); } // virtuaalisen nollan saareke (7 segmentti)
if (aurinko> noll & & aurinko <= noll + (i-1)) {countleds = 8;
noTone (6); } // virtuaalisen ZERO-asteikon saari (8 segmenttiä)
{lcd.setCursor (neuvoo, 0); // aseta kohdistin maakohtaisten sarakkeiden riville 0
lcd.print ("\ xff"); // täytetty kuvake
lcd.setCursor (0, 1); // siirry 2 riville, sarake-0
lcd.print (char (1)); // Paristokuvakkeen ilmaisin
lcd.setCursor (1, 1); // siirry jännitteen osoitukseen
lcd.print (jännite); // jännite
lcd.setCursor (7, 0); // 8. sarakkeen 1. rivi
if (aurinko & noll) {lcd.print ("{");} // tulosta
lcd.setCursor (8, 0); // 9. sarakkeen 1. rivi
if (aurinko & noll) {lcd.print ("}");} // tulosta
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11 sarakkeen 2. rivi
lcd.print (i); // este
lcd.setCursor (13, 1); // 13. sarakkeen 2. rivi
lcd.print (aurinko); // tulosta ADC-arvon keskiarvo
viive (100); // odota
buttonState1 = digitalRead (painike1); // Lue painikkeen 1 tila
buttonState2 = digitalRead (painike2); // Lue painikkeen 2 tila
if (buttonState1 == LOW) {i = i + 1; viive (50);}
// Kun painiketta painetaan, este kasvaa 1. Viive 50
if (buttonState2 == LOW) {i = i - 1; viive (50);}
// Kun painiketta painetaan, este vähenee 1. Viive 50
if (i <1) {i = 1;} // esteen alaraja
if (i> 38) {i = 38;} // esteen yläraja
lcd.selkeä ();
}
}
En käyttänyt autoa. TL074: n kaksi viimeistä elementtiä jätettiin käyttämättä. Mutta piirillä ja kortilla ne ovat. Haluat ehkä viedä ne työtilaan vähän myöhemmin. Uskon saavuttaneen tavoitteeni. Näyttölaite toimii hienosti. Kaikki muu riippuu MD: stä.