#include <Arduino.h>
/**
* Project: -
* Author: Matrodsilver
* Description: Instrument :D
* License: MIT
**/
#include <HCSR04.h>
#define buzzer 27
#define ledC_Channel 0 // channel 0
#define rez 8 // 8-bit resolution
#define infravermelho 33
#define triggerPin 25
#define echoPin 26
#define maxCm 405
UltraSonicDistanceSensor distanceSensor(triggerPin, echoPin, maxCm);
float frequency = 0, semitom = 0;
byte ult_semitom = 255;
const float f0 = 1046.502075;
void setup()
{
Serial.begin(9600);
ledcAttach(ledC_Channel, 2000, rez); // 2kHz tone, 8-bit resolution
ledcAttachPin(buzzer, ledC_Channel);
pinMode(infravermelho, INPUT);
}
void loop()
{
if (!digitalRead(infravermelho))
{
semitom = map(constrain(distanceSensor.measureDistanceCm(), 0, 90), 0, 90, 14, 0);
if (semitom != ult_semitom)
{
ult_semitom = semitom;
frequency = f0 * pow(2, (semitom / 12));
Serial.println("+" + String(semitom) + " : " + String(frequency) + "Hz");
ledcWriteTone(ledC_Channel, (uint32_t)frequency);
}
}
else
{
ledcWriteTone(ledC_Channel, 0); // Stop sound
ult_semitom = 255;
}
delay(1);
}