It was suggested that the Tone32 library was improperly organized.
I was surprised to see so little. Nothing public or private.
This is the whole thing:
#ifndef _TONE32_h
#define _TONE32_h
#define TONE_CHANNEL 15
#include "Arduino.h"
#include "pitches.h"
void tone(uint8_t pin, unsigned int frequency, unsigned long duration = 0, uint8_t channel = TONE_CHANNEL);
void noTone(uint8_t pin, uint8_t channel = TONE_CHANNEL);
#endif
What else does it need to be a real library? The declarations took care of the error I was getting from ‘tone’, but they aren’t causing a tone.
It needs the C++ code to implement, not just declare, tone()
and noTone()`. All you have thete is a header file.
Cheers,
Norm.
CPP:
#include "Tone32.h"
void tone(uint8_t pin, unsigned int frequency, unsigned long duration, uint8_t channel)
{
if (ledcRead(channel)) {
log_e("Tone channel %d is already in use", ledcRead(channel));
return;
}
ledcAttachPin(pin, channel);
ledcWriteTone(channel, frequency);
if (duration) {
delay(duration);
noTone(pin, channel);
}
}
void noTone(uint8_t pin, uint8_t channel)
{
ledcDetachPin(pin);
ledcWrite(channel, 0);
}
Wasn’t it the Adafruit library, not tone32, that is “structurally broken”. The one you are/were having problems with?
I see you have found the source code to match the header. Have you tried a simple example? Does it still not work? Could it possibly be the buzzer you are using
That library looks like it hangs up your microcontroller if you supply a duration…
if (duration) {
Delay(duration);
...
}
Cheers,
Norm