|
|
@ -131,11 +131,11 @@ unsigned long Application::GetVolumeMeasurement() |
|
|
|
|
|
|
|
|
|
|
|
TCNT0=0; |
|
|
|
TCNT0=0; |
|
|
|
TCNT1=49911; |
|
|
|
TCNT1=49911; |
|
|
|
TCCR0B = (1<<CS02) | (1<<CS01) | (1<<CS00); // //External clock source on T0 pin. Clock on rising edge.
|
|
|
|
TCCR0B = (1<<CS02) | (1<<CS01) | (1<<CS00); // //External clock source on T0 pin. Clock on rising edge.
|
|
|
|
TIFR1 = (1<<TOV1); //Timer1 INT Flag Reg: Clear Timer Overflow Flag
|
|
|
|
TIFR1 = (1<<TOV1); //Timer1 INT Flag Reg: Clear Timer Overflow Flag
|
|
|
|
|
|
|
|
|
|
|
|
while(!(TIFR1&((1<<TOV1)))); // on Timer 1 overflow (1s)
|
|
|
|
while(!(TIFR1&((1<<TOV1)))); // on Timer 1 overflow (1s)
|
|
|
|
TCCR0B = 0; // Stop TimerCounter 0
|
|
|
|
TCCR0B = 0; // Stop TimerCounter 0
|
|
|
|
unsigned long frequency = TCNT0; // get counter 0 value
|
|
|
|
unsigned long frequency = TCNT0; // get counter 0 value
|
|
|
|
unsigned long temp = (unsigned long)timer_overflow_counter; // and overflow counter
|
|
|
|
unsigned long temp = (unsigned long)timer_overflow_counter; // and overflow counter
|
|
|
|
|
|
|
|
|
|
|
@ -165,8 +165,7 @@ void Application::loop() { |
|
|
|
int registerPotValue,registerPotValueL = 0; |
|
|
|
int registerPotValue,registerPotValueL = 0; |
|
|
|
int wavePotValue,wavePotValueL = 0; |
|
|
|
int wavePotValue,wavePotValueL = 0; |
|
|
|
uint8_t registerValue = 2; |
|
|
|
uint8_t registerValue = 2; |
|
|
|
|
|
|
|
uint16_t tmpVolume; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mloop: // Main loop avoiding the GCC "optimization"
|
|
|
|
mloop: // Main loop avoiding the GCC "optimization"
|
|
|
|
|
|
|
|
|
|
|
@ -182,15 +181,15 @@ void Application::loop() { |
|
|
|
|
|
|
|
|
|
|
|
// New register pot configuration:
|
|
|
|
// New register pot configuration:
|
|
|
|
// Left = -1 octave, Center = +/- 0, Right = +1 octave
|
|
|
|
// Left = -1 octave, Center = +/- 0, Right = +1 octave
|
|
|
|
if(registerPotValue > 681)
|
|
|
|
if (registerPotValue > 681) |
|
|
|
{ |
|
|
|
{ |
|
|
|
registerValue = 1; |
|
|
|
registerValue = 1; |
|
|
|
} else if(registerPotValue < 342) |
|
|
|
} else if(registerPotValue < 342) |
|
|
|
{ |
|
|
|
{ |
|
|
|
registerValue = 3; |
|
|
|
registerValue = 3; |
|
|
|
} else
|
|
|
|
} else
|
|
|
|
{ |
|
|
|
{ |
|
|
|
registerValue = 2; |
|
|
|
registerValue = 2; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (_state == PLAYING && HW_BUTTON_PRESSED) { |
|
|
|
if (_state == PLAYING && HW_BUTTON_PRESSED) { |
|
|
@ -288,9 +287,12 @@ void Application::loop() { |
|
|
|
// vol_v = vol_v - (1 + MAX_VOLUME - (volumePotValue << 2));
|
|
|
|
// vol_v = vol_v - (1 + MAX_VOLUME - (volumePotValue << 2));
|
|
|
|
vol_v = vol_v ; |
|
|
|
vol_v = vol_v ; |
|
|
|
vol_v = max(vol_v, 0); |
|
|
|
vol_v = max(vol_v, 0); |
|
|
|
vScaledVolume = vol_v >> 4; |
|
|
|
tmpVolume = vol_v >> 4; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Give vScaledVolume a pseudo-exponential characteristic:
|
|
|
|
|
|
|
|
vScaledVolume = tmpVolume * (tmpVolume + 2); |
|
|
|
|
|
|
|
|
|
|
|
volumeValueAvailable = false; |
|
|
|
volumeValueAvailable = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
goto mloop; // End of main loop
|
|
|
|
goto mloop; // End of main loop
|
|
|
@ -494,7 +496,7 @@ void Application::hzToAddVal(float hz) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Application::playNote(float hz, uint16_t milliseconds = 500, uint8_t volume = 255) { |
|
|
|
void Application::playNote(float hz, uint16_t milliseconds = 500, uint8_t volume = 255) { |
|
|
|
vScaledVolume = volume; |
|
|
|
vScaledVolume = volume * (volume + 2); |
|
|
|
hzToAddVal(hz); |
|
|
|
hzToAddVal(hz); |
|
|
|
millitimer(milliseconds); |
|
|
|
millitimer(milliseconds); |
|
|
|
vScaledVolume = 0; |
|
|
|
vScaledVolume = 0; |
|
|
|