Difference between revisions of "Arduino - projekt 4 - Biorytmy"

From DT^2
Jump to: navigation, search
(Created page with "Biorytmy sú krásna spoločenská hra, ktorú sa určite ešte zahráme. Ide v nej o to, že každý človek má nejaký svoj špecifický biorytmus, ktorý sa dá vytlieska...")
 
Line 2: Line 2:
  
 
[[Image:zvukovy_senzor.jpg]]
 
[[Image:zvukovy_senzor.jpg]]
 +
 +
a bude ho vedieť zopakovať pomocou sirénky.
 +
 +
Zvukový senzor pripojíme na napájanie (VCC, GND), na jeden digitálny pin (napr. pin 11) a na jeden analógový vstupný pin (napr. A0). Analógové vstupné piny dokážu čítať nielen dve hodnoty: logickú 0 a logickú 1, ale dokážu zmerať napätie na pine v rozmedzí (typicky) 0-5V, pričom v programe si ho môžeme prečítať ako hodnotu 0 (zodpovedá 0V) až 1023 (zodpovedá 5V). To dovoľuje pripájať aj senzory, ktoré merajú plynule sa meniace veličiny - ako napr. vzdialenosť, intenzitu odrazeného svetla - v našom prípade to bude priamo zvuková vlna z mikrofónu zvukového senzora.
 +
 +
Začnime zľahka týmto programom (11_sound):
 +
 +
<syntaxhighlight lang="C" line='line'>
 +
void setup() {
 +
  pinMode(11, INPUT);
 +
  Serial.begin(9600);
 +
}
 +
 +
void loop() {
 +
  int min = 1023;
 +
  int max = 0;
 +
  for (int i = 0; i < 1000; i++)
 +
  {
 +
    int v = analogRead(0);
 +
    if (v < min) min = v;
 +
    if (v > max) max = v;
 +
  }
 +
  Serial.print("d=");
 +
  Serial.print(digitalRead(11));
 +
  Serial.print(", amin=");
 +
  Serial.print(min);
 +
  Serial.print(", amax=");
 +
  Serial.print(max);
 +
  Serial.print(", range=");
 +
  Serial.println(max - min);
 +
  delay(100);
 +
}
 +
</syntaxhighlight>
 +
 +
Tento program urobí 1000 meraní na analógovom vstupe A0 a z nich vezme najmenšiu a najväčšiu hodnotu. Ak počas tejto doby zvuková vlna stihne celú svoju periódu, rozsah max-min bude zodpovedať hlasitosti nameraného zvuku. Tento rozdiel program vypisuje na serióvu linku.
 +
 +
Digitálny pin hlási hodnotu 1, dokiaľ hlasitosť nepreskočí cez určitý prah. Výšku prahu môžeme meniť pomocou modrého trimra - treba otočiť skrutkou veľakrát vľavo, aby bol mikrofón citlivejší. Nastavenie citlivosti ovplyvňuje aj analógovú hodnotu.
 +
 +
Nasledujúci program teda bude merať hlasitosť a v okamihu keď preskočí cez nejaký prah (ten si ale môžeme nastaviť sami, ak budeme merať na analógovom pine), tak túto udalosť bude považovať za tlesknutie. Program bude merať čas medzi jednotlivými tlesknutiami a zaznamenávať tieto údaje do poľa.
 +
 +
Po nejakom signále (vyberte si, či senzor, alebo znak na sériovej linke) sa zaznamenaný rytmus prehrá na sirénke.

Revision as of 02:52, 30 July 2018

Biorytmy sú krásna spoločenská hra, ktorú sa určite ešte zahráme. Ide v nej o to, že každý človek má nejaký svoj špecifický biorytmus, ktorý sa dá vytlieskať. V tomto prípade bude Arduino počúvať vytlieskaný biorytmus pomocou zvukového senzora

Zvukovy senzor.jpg

a bude ho vedieť zopakovať pomocou sirénky.

Zvukový senzor pripojíme na napájanie (VCC, GND), na jeden digitálny pin (napr. pin 11) a na jeden analógový vstupný pin (napr. A0). Analógové vstupné piny dokážu čítať nielen dve hodnoty: logickú 0 a logickú 1, ale dokážu zmerať napätie na pine v rozmedzí (typicky) 0-5V, pričom v programe si ho môžeme prečítať ako hodnotu 0 (zodpovedá 0V) až 1023 (zodpovedá 5V). To dovoľuje pripájať aj senzory, ktoré merajú plynule sa meniace veličiny - ako napr. vzdialenosť, intenzitu odrazeného svetla - v našom prípade to bude priamo zvuková vlna z mikrofónu zvukového senzora.

Začnime zľahka týmto programom (11_sound):

 1 void setup() {
 2   pinMode(11, INPUT);
 3   Serial.begin(9600);
 4 }
 5 
 6 void loop() {
 7   int min = 1023;
 8   int max = 0;
 9   for (int i = 0; i < 1000; i++)
10   {
11     int v = analogRead(0);
12     if (v < min) min = v;
13     if (v > max) max = v;
14   }
15   Serial.print("d=");
16   Serial.print(digitalRead(11));
17   Serial.print(", amin=");
18   Serial.print(min);
19   Serial.print(", amax=");
20   Serial.print(max);
21   Serial.print(", range=");
22   Serial.println(max - min);
23   delay(100);
24 }

Tento program urobí 1000 meraní na analógovom vstupe A0 a z nich vezme najmenšiu a najväčšiu hodnotu. Ak počas tejto doby zvuková vlna stihne celú svoju periódu, rozsah max-min bude zodpovedať hlasitosti nameraného zvuku. Tento rozdiel program vypisuje na serióvu linku.

Digitálny pin hlási hodnotu 1, dokiaľ hlasitosť nepreskočí cez určitý prah. Výšku prahu môžeme meniť pomocou modrého trimra - treba otočiť skrutkou veľakrát vľavo, aby bol mikrofón citlivejší. Nastavenie citlivosti ovplyvňuje aj analógovú hodnotu.

Nasledujúci program teda bude merať hlasitosť a v okamihu keď preskočí cez nejaký prah (ten si ale môžeme nastaviť sami, ak budeme merať na analógovom pine), tak túto udalosť bude považovať za tlesknutie. Program bude merať čas medzi jednotlivými tlesknutiami a zaznamenávať tieto údaje do poľa.

Po nejakom signále (vyberte si, či senzor, alebo znak na sériovej linke) sa zaznamenaný rytmus prehrá na sirénke.