Na zvuk zvonění telefonu je tam obvod LS1240 a piezzo reproduktor.
Připojil jsem ten piezzo reproduktor k Arduinu napřímo, protože, na rozdíl od dynamického reproduktoru, nezničí pin nadměrným proudem (aspoň doufám, neboť ohmmetr mi ukazuje u piezzo nekonečný odpor). Takže jeden pin toho piezzo vede na pin č. 9 (D9) Arduina a zároveň i na pin A0. Druhý pin piezzo vede na zem (GND).
Inspiroval jsem se několika zdrojovými kódy programů dostupných přes vyhledávač na frázi "Arduino piezzo" a nakonec si svůj program upravil do následující podoby. Čtení z pinu A0 se používá na detekci zvuku (zaklepání na stůl), protože ten piezzo jev zjevně funguje obousměrně (mění elektrické napětí na zvuk, i zvuk na elektrické napětí).
const int buzzerPin = 9; char Indiana_notes[] = "e2f1g1 1C3 2d1e1f3 4g2a1b1 1F3 1a1b1C3D3E3 4e2f1g1 1C3 2d1e1f3 2D1D1E2 2D1D1E2 2D1D1E3 2D2D2F2 2E2D2C2"; char Kocka_notes[] = "c2d2e2f2g4g4a4a4g5 2a4a4g4 2f2f2f2f2e4e4d4d4c5"; unsigned int tempo = 150; bool melody; void setup() { } void loop() { while(analogRead(A0) < 50) ; playMelody(melody ? Indiana_notes : Kocka_notes); melody = !melody; delay(500); } void playMelody(const char *notes) { pinMode(buzzerPin, OUTPUT); unsigned int len = strlen(notes); for (unsigned int i = 0; i < len; i+=2) { unsigned int duration = (notes[i+1]-'0') * tempo; if (notes[i] != ' ') tone(buzzerPin, frequency(notes[i]), duration); delay(duration + tempo/10); } pinMode(buzzerPin, INPUT); } unsigned int frequency(char note) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C', 'D', 'E', 'F', 'G', 'A', 'B' }; unsigned int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523, 587, 659, 698, 784, 880, 988}; for (byte i = 0; i < sizeof(names); i++) { if (names[i] == note) return frequencies[i]; } return 0; }
Výsledek jsem nadšeně hodil na YouTube. Nechte se inspirovat a taky něco s Arduinem spíchněte :-)
Víš, co se používá v zapalovačích, které mají elektrickou jiskru? Přesně takovýto podobný piezoelement. Takže nejenom že piezoelektrický jev je plně reverzibilní, on ten měnič dokáže vyrobit i hodně vysoké napětí, pro které by nebyl problém Arduino zničit. Ale pravda, to bys ho musel vyndat z toho plastového obalu a ohnout pořádně.
OdpovědětVymazat