• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zmiana głośności buzera pasywnego
#1
Mam już programu co działa, ale buzer jest na max chodź głośno nie gra) 
Chciałem sterować buzerem, Arduino.
1.pomysl tranzystor i potencjometr.
( Nie za bardzo się znam)Ale sam potencjometr jako dzielnik działa.
Buzer jest 3-24v czy jak podam 9v czy będzie głośniejszy, bo na razie używam pinu Arduino z funkcją tone();.

2.pomysl programowo 
Na elektrodzie ktoś pisał że można tak 

// ===== BUZER PASYWNY NA D10 (OC1B, TIMER1) =====

#define buzerPin 10  // D10 = OC1B (Timer1)

// przykładowe wartości
int tone_buz = 4000;  // częstotliwość w Hz (barwa)
int vol_buz  = 2000;  // wypełnienie/głośność (0–ICR1/2)

void setup() {
  pinMode(buzerPin, OUTPUT);

  // Timer1 Fast PWM, TOP = ICR1
  TCCR1A = (1 << COM1B1) | (1 << WGM11);        // OC1B = PWM
  TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10); // preskaler = 1

  ICR1  = tone_buz;  // ustaw TOP = częstotliwość
  OCR1B = vol_buz;  // ustaw wypełnienie (głośność)
}

void loop() {
  // przykładowa zmiana tonu i głośności w czasie
  // 1) zmiana barwy
  ICR1 = 4000;      // 4 kHz
  OCR1B = 2000;    // głośność 50%
  delay(500);

  ICR1 = 6000;      // 6 kHz
  OCR1B = 3000;    // głośność 50%
  delay(500);

  ICR1 = 3000;      // 3 kHz
  OCR1B = 1500;    // głośność 50%
  delay(500);



Ale to też sobie z głośnością słabo radzi...
 
Odpowiedź
#2
(11-01-2026, 15:32)Dzimi87 napisał(a): void loop() {
  // przykładowa zmiana tonu i głośności w czasie
  // 1) zmiana barwy
  ICR1 = 4000;      // 4 kHz
  OCR1B = 2000;    // głośność 50%
  delay(500);

  ICR1 = 6000;      // 6 kHz
  OCR1B = 3000;    // głośność 50%
  delay(500);

  ICR1 = 3000;      // 3 kHz
  OCR1B = 1500;    // głośność 50%
  delay(500);



Ale to też sobie z głośnością słabo radzi...
Po co wpisujesz różne wartości do rejestru ICRx - czy one nie są read-only? Zasadniczo służą od odczytywania zmian sygnału na odpowiedniej linii.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości