Contapezzi con Buzzer

Ok grazie,
ora appena ho un po di tempo faccio tutte le prove poi vi so dire.

Male che vada mi terrò il mio contapezzi senza Beep!! >:(

Flavi71:
Male che vada mi terrò il mio contapezzi senza Beep!! >:(

Ma no, male che vada prendi un buzzer attivo e risolvi, non ti pare? Metti il pin HIGH e suona, LOW e smette, che problema c'è? Ne compri 5 per 2 Euro...

Provato a cambiare Pin ma lo fa lo stesso
Provato a mettere la resistenza da 1K idem...mi sa che opterò per il Buzzer attivo
come consigliato da docdoc.

Hai provato a metterci un normale altoparlante ?

brunello22:
Hai provato a metterci un normale altoparlante ?

No non ho provato...potrei reperirne uno da un vecchio giocattolo? o da una vecchia radiolina?

brunello22:
Hai provato a metterci un normale altoparlante ?

Come questo?
O questo?

Uno vale l'altro.
Ma non hai modo di recuperarne uno da qualcos'altro ?

Che potrebbe cambiare urtando un altoparlante?... Il problema non so quale sia, ma è un altro.

brunello22:
Uno vale l'altro.
Ma non hai modo di recuperarne uno da qualcos'altro ?

Ecco...recuperato da un vecchio walkie talkie giocattolo (vedi foto allegata).
Fa un bel beep ma il fischio permane, anche anteponendo una resistenza da 1Khom il volume si riduce ma il fischio resta. >:(

Non hai detto che cosa succede con il programma che ti avevo scritto al mio messaggio n.11. Se suona ancora, prova togliendo le prime tre righe del setup().

Datman:
Non hai detto che cosa succede con il programma che ti avevo scritto al mio messaggio n.11. Se suona ancora, prova togliendo le prime tre righe del setup().

Ciao con il programma del post #11 il fischio si sente ancora, se tolgo le prime tre righe del setup il buzzer funziona bene ma il display ovviamente non va più.
Questo vuol dire che c'è un conflitto tra il display e tone?

Ho provato anche a collegare il CLK del display a un pin diverso lasciando libero il pin 11 ma niente...il fischio permane! >:(

gpb01:
... c'è però sempre la possibilità di scaricare ed installare QUESTA libreria che offre i seguenti vantaggi:

  • Doesn't use timers which frees up conflicts with other libraries.
  • Compatible with all ATmega, ATtiny and ARM-based microcontrollers.
  • About 1,500 bytes smaller binary sketch size than the standard tone library.
  • Exclusive use of port registers for AVR-based microcontrollers for fastest and smallest code.
  • Optional volume parameter.
  • Close to a plug-in replacement for the standard Tone library.

Guglielmo

Ho provato anche a installare e usare la libreria consigliata da Guglielmo ma niente, il beep lo fa ma il fischio resta!!

 //State change detection (edge detection)
//We always have to include the library
#include "LedControl.h"
#include <TimerFreeTone.h>

/*
 Now we need a LedControl to work with.
 pin 12 is connected to the DataIn 
 pin 11 is connected to the CLK 
 pin 10 is connected to LOAD 
 We have only a single MAX72XX.
 */
LedControl lc=LedControl(12,11,10,1);

/*  The circuit:
 - buttonpin attached to pin 2 from +5V
 - buttonreset attached to pin 4 from +5V
 - 10 kilohm resistor attached to pin 2&4 from ground
*/
// this constant won't change:
 #define buttonPin 2 // the pin that the pushbutton is attached to
 #define buttonReset 4 // the pin that the buttonreset is attached to
 #define buzzer 7 //buzzer pin
 #define PinLed 8 //Led pin

// Variables will change:
int contatore = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button
int unita = 0;
int decine = 0;
int centinaia = 0;
int tmp=0;


void setup(){
  /*
   The MAX72XX is in power-saving mode on startup,
   we have to do a wakeup call
   */
  lc.shutdown(0,false);
  /* Set the brightness to a medium values */
  lc.setIntensity(0,8);
  /* and clear the display */
  lc.clearDisplay(0);

  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  pinMode(buttonReset, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(PinLed, OUTPUT);
  digitalWrite (PinLed, HIGH);
}

void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button went from off to on:
      contatore++;
      TimerFreeTone (buzzer,1000,300);
      
        tmp=contatore;
        unita=tmp%10;
        tmp=tmp/10;
        decine=tmp%10;
        centinaia=tmp/10;

      lc.setDigit(0,2,(byte)centinaia,false);
      lc.setDigit(0,1,(byte)decine,false);
      lc.setDigit(0,0,(byte)unita,false);
    }
     
    // Delay a little bit to avoid bouncing
    delay(50);
  
  // save the current state as the last state, for next time through the loop
  lastButtonState = buttonState;
}

  // if the buttonreset is pressed reset the buttonpushcounter
  if  (digitalRead(buttonReset) == HIGH){
      (contatore = 0);
       lc.clearDisplay(0);
    }
}

Flavi71:
il beep lo fa ma il fischio resta!!

Vabbè, capisco che si voglia capire il problema (che incuriosisce anche me) ma quindi prendi intanto un beeper attivo e usa quello, no?

Usa un altro pin di uscita per la capsula.
Una capsula autooscillante avrebbe lo stesso problema: suonerebbe modulata dal segnale che esce.

Datman:
Usa un altro pin di uscita per la capsula.
Una capsula autooscillante avrebbe lo stesso problema: suonerebbe modulata dal segnale che esce.

Dice che ha già provato un altro pin, stesso risultato.
In ogni caso ha anche detto che il segnale "spurio" è molto basso, quindi secondo me un beeper attivo non dovrebbe dargli problema visto che non avrà sufficiente potenza per attivare l'oscillatore interno.

E poi è un componente da pochi cent, provare non fa male..

Bisognerebbe capire perché accade. Ormai è certo che dipende dalla libreria ledControl, infatti ha scritto:

"Con il programma del post #11 il fischio si sente ancora;
se tolgo le prime tre righe del setup il buzzer funziona bene ma il display ovviamente non va più."

Evidentemente la libreria va a sporcare le altre uscite. Non so se deve essere così, oppure bisogna scrivere qualcosa per fare in modo che non le usi. Ho dato una rapida occhiata al sorgente, ma non mi è apparso evidente...

Datman:
Evidentemente la libreria va a sporcare le altre uscite.

Infatti anche io (vedi mio post #14) immaginavo che il problema fosse dell'interrupt in comune tra il pin 11 del CLK e l'8 usato per il buzzer passivo, ma l'OP ha poi scritto "Provato a cambiare Pin ma lo fa lo stesso", per cui visto che non si capisce se abbia cambiato pin al buzzer o al CLK, né quale pin abbia usato, ad un certo punto non avendo la sfera di cristallo mi pare abbastanza inutile farci voli mentali per "immaginare" qualcosa che vede solo lui, o ci dà informazioni più precise sui test effettuati e relativi risultati, oppure per me l'unico consiglio che abbia una buona probabilità di risolvere è quello del beeper attivo. Male che vada avrà un suono non proprio continuativo ma se serve per un beep breve manco se ne accorge.
Di più nin 'zò :slight_smile:

Come detto nei post precedenti docdoc ho provato a cambiare pin al buzzer e anche al clk ma non cambia nulla.

Nel link postato da Guglielmo ho visto che ci sono altre librerie da provare, stasera provo poi vi dico.
Dopo di che metterò un buzzer attivo e...buonanotte. :confused: :sleeping:

docdoc:
Ma no, male che vada prendi un buzzer attivo e risolvi, non ti pare? Metti il pin HIGH e suona, LOW e smette, che problema c'è? Ne compri 5 per 2 Euro...

Scusate ma che differenza c'è tra Questi e questo con la scheda o questo?

Flavi71:
Scusate ma che differenza c'è tra Questi e questo con la scheda o questo?

Il primo è quello classico, lo stesso che ho anche io usato spesso.
Il secondo è un buzzer con un minimo di amplificazione, suppongo, quindi emette un suono più forte.
Il terzo è come il primo ma con una breakout board per connetterlo un poco più facilmente con i cavi Dupont.