Prvi koraki v Arduino – nastavljiva frekvenca zvoka in melodija pesmi
Milan
Gaberšek in Slavko Kocijančič
V tokratnem prispevku na temo prvih korakov v Arduino bomo krmilnik uporabili za predvajanje različnih tonov glede njihove frekvence in trajanja. Za oddajanje zvoka rabimo le mini piezo zvočnik. Ker želimo vplivati na frekvenco zvoka bomo vezali še potenciometer. Seveda moramo na krmilnik naložiti tudi ustrezen program.
Programske kode za vse štiri programe si lahko preko kopiraj/prilepi prenesete v Arduino IDE, da vam ne bo treba pretipkavati.
// // Program Arduino - Zvok 1. // // Zvočnik bomo priklopili na D3 const int pinZvocnik = 3; // Začetno trajenje lege membrane // bo 1 ms (tj. 1 milisekunda) const int trajZvocnik = 1; void setup() { // Zvočnik bo priklopljen na // digitalni izhod pinMode(pinZvocnik, OUTPUT); } void loop() { digitalWrite(pinZvocnik, HIGH); delay(trajZvocnik); digitalWrite(pinZvocnik, LOW); delay(trajZvocnik); } // // Program Arduino - Kuza pazi // // Zvočnik bomo priklopili na D3 const int pinZvocnik = 3; // Frekvence za posamezne note, več not na // na https://www.arduino.cc/en/Tutorial/toneMelody const int notaC = 262; // tudi C4 const int notaD = 294; // tudi D4 const int notaE = 330; // tudi E4 const int trajanje = 300; int pavza = trajanje * 1.30; // Ker bi radi le eno izvedbo, // je že v setup(){} celotni program void setup() { // Uporabimo ukaz tone za predvajanje // tona frekvence dolocene note ter počakamo tone(pinZvocnik, notaC, trajanje); delay(pavza); tone(pinZvocnik, notaC, trajanje); delay(pavza); tone(pinZvocnik, notaC, trajanje); delay(pavza); tone(pinZvocnik, notaC, trajanje); delay(pavza); tone(pinZvocnik, notaD, trajanje); delay(pavza); tone(pinZvocnik, notaD, trajanje); delay(pavza); tone(pinZvocnik, notaD, trajanje); delay(pavza); tone(pinZvocnik, notaD, trajanje); delay(pavza); tone(pinZvocnik, notaE, trajanje); delay(pavza); tone(pinZvocnik, notaE, trajanje); delay(pavza); tone(pinZvocnik, notaD, trajanje); delay(pavza); tone(pinZvocnik, notaD, trajanje); delay(pavza); tone(pinZvocnik, notaC, trajanje); delay(pavza); tone(pinZvocnik, notaC, trajanje); delay(pavza); tone(pinZvocnik, notaC, trajanje); delay(pavza); } void loop() { } // // Program Arduino - potenciometer //
const int pinPotenciometer = A0; // Vrednost iz potenciometra // kot delilnika napetosti bomo // shranjevali v spremenljivko int potVrednost = 0;
void setup() { // Branje podatkov preko // serijskega vmesnika USB Serial.begin(9600); }
void loop() { // Z ukazom analogRead preberemo vrednost // in jo shranimo v spremenljivko potVrednost = analogRead(pinPotenciometer); // Dobljeni podatek izpišemo na zaslon Serial.println(potVrednost); }
// // Program Arduino - potenciometer in zvok // const int pinPotenciometer = A0; int vrednostHz = 0; const int pinZvocnik = 3; void setup() { // tokrat ni potrebno nič vnaprej // nastavljati } void loop() { // Z ukazom analogRead preberemo vrednost // iz potenciometra kot delilnika napetosti, // jo shranimo v spremenljivko in nato // z njo nastavimo frekvenco tona na zvočniku vrednostHz = analogRead(pinPotenciometer) * 10; tone(pinZvocnik, vrednostHz); } |