Untitled
unknown
c_cpp
2 years ago
1.8 kB
9
Indexable
const int outputPin = 9; // Digital pin for the square wave output
volatile unsigned long frequency = 10000; // Initial frequency in Hz
const unsigned long minFrequency = 1000; // Minimum allowed frequency in Hz
const unsigned long maxFrequency = 20000; // Maximum allowed frequency in Hz
const int leftButtonPin = 2; // Digital pin for the left button
const int rightButtonPin = 3; // Digital pin for the right button
void setup() {
pinMode(outputPin, OUTPUT);
pinMode(leftButtonPin, INPUT_PULLUP);
pinMode(rightButtonPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(leftButtonPin), increaseFrequency, FALLING);
attachInterrupt(digitalPinToInterrupt(rightButtonPin), decreaseFrequency, FALLING);
Serial.begin(9600);
updateFrequency();
}
void loop() {
// No code needed here
}
void updateFrequency() {
// Calculate the duration based on the desired frequency to maintain consistent pulse density
unsigned long duration = 1000000 / frequency; // Convert frequency to microseconds
tone(outputPin, frequency, duration); // Generate the square wave
}
void decreaseFrequency() {
unsigned long newFrequency = frequency - (frequency * 0.1);
if (newFrequency >= minFrequency) {
frequency = newFrequency;
updateFrequency();
Serial.print("Frequency decreased to: ");
Serial.println(frequency);
} else {
Serial.println("Frequency is already at the minimum value.");
}
}
void increaseFrequency() {
unsigned long newFrequency = frequency + (frequency * 0.1);
if (newFrequency <= maxFrequency) {
frequency = newFrequency;
updateFrequency();
Serial.print("Frequency increased to: ");
Serial.println(frequency);
} else {
Serial.println("Frequency is already at the maximum value.");
}
}
Editor is loading...