Settled on this being the best looking on the actual mask
This commit is contained in:
@@ -620,34 +620,40 @@ static void MX_GPIO_Init(void)
|
||||
/* USER CODE BEGIN 4 */
|
||||
uint8_t getSoundLevel(void){
|
||||
// Adjustment / Calibration
|
||||
static uint8_t divisor = 2;
|
||||
static uint8_t postscale_DownShift = 0;
|
||||
static uint8_t prescale_DownShift = 180;
|
||||
static uint8_t multiplier = 3;
|
||||
static uint8_t cutoff = 90;
|
||||
|
||||
static uint16_t averagedDifferences = 0;
|
||||
// By order of process
|
||||
uint8_t samples[8];
|
||||
uint16_t estimatedSoundLevel = 0;
|
||||
static uint16_t averagedReturnValue = 0;
|
||||
uint16_t returnValue;
|
||||
uint8_t samples[16];
|
||||
uint16_t sumOfDifferences = 0;
|
||||
|
||||
for(uint8_t i = 0; i < sizeof(samples); ++i){
|
||||
HAL_Delay(1);
|
||||
HAL_ADC_Start(&hadc3);
|
||||
HAL_ADC_PollForConversion(&hadc3, (uint32_t) 20);
|
||||
samples[i] = HAL_ADC_GetValue(&hadc3);
|
||||
}
|
||||
|
||||
for(uint8_t i = 0; i < sizeof(samples) - 1; ++i){
|
||||
sumOfDifferences += abs(samples[i] - samples[i + 1]);
|
||||
for(uint8_t i = 0; i < sizeof(samples); ++i){
|
||||
estimatedSoundLevel += samples[i];
|
||||
}
|
||||
estimatedSoundLevel /= sizeof(samples);
|
||||
|
||||
if(estimatedSoundLevel <= cutoff){
|
||||
returnValue = 0;
|
||||
}else{
|
||||
returnValue = (uint16_t) (2 * (estimatedSoundLevel - cutoff));
|
||||
}
|
||||
|
||||
averagedDifferences += ((int32_t) sumOfDifferences - (int32_t) averagedDifferences) / 4;
|
||||
averagedReturnValue += ((int32_t) returnValue - (int32_t) averagedReturnValue) / 3;
|
||||
|
||||
if(averagedDifferences < prescale_DownShift){returnValue = 0;}else{returnValue = averagedDifferences - prescale_DownShift;}
|
||||
returnValue = (returnValue / divisor) * multiplier;
|
||||
if(returnValue < postscale_DownShift){returnValue = 0;}else{returnValue -= postscale_DownShift;}
|
||||
|
||||
if(returnValue >= 0xFF){return 0xFF;} else{return returnValue;}
|
||||
if(averagedReturnValue >= 0xFF){
|
||||
return 0xFF;
|
||||
}else if(averagedReturnValue <= 10){
|
||||
return 0x00;
|
||||
}else{
|
||||
return averagedReturnValue;
|
||||
}
|
||||
}
|
||||
void LEDDesign_Off(void){
|
||||
for(uint8_t i = 0; i < 64; ++i){
|
||||
|
||||
Binary file not shown.
@@ -1,19 +1,21 @@
|
||||
core_cm4.h:2064:26:ITM_SendChar 16 static,ignoring_inline_asm
|
||||
main.c:89:5:_write 32 static
|
||||
main.c:103:5:main 8 static
|
||||
main.c:182:6:SystemClock_Config 88 static
|
||||
main.c:226:13:MX_ADC3_Init 24 static
|
||||
main.c:276:13:MX_SPI4_Init 8 static
|
||||
main.c:314:13:MX_TIM6_Init 16 static
|
||||
main.c:356:13:MX_GPIO_Init 64 static
|
||||
main.c:619:9:getSoundLevel 32 static
|
||||
main.c:650:6:LEDDesign_Off 16 static
|
||||
main.c:657:6:LEDDesign_ColorWhite 16 static
|
||||
main.c:664:6:LEDDesign_ColorBlue 16 static
|
||||
main.c:675:6:LEDDesign_ColorGreen 16 static
|
||||
main.c:686:6:LEDDesign_ColorRed 16 static
|
||||
main.c:697:6:LEDDesign_Crazy 32 static
|
||||
main.c:705:6:LEDDesign_Smile 16 static
|
||||
main.c:900:6:LEDDesign_SuperCrazy 24 static
|
||||
main.c:915:6:updateWS2812BData 16 static
|
||||
main.c:1032:6:Error_Handler 4 static
|
||||
main.c:91:5:_write 32 static
|
||||
main.c:105:5:main 8 static
|
||||
main.c:184:6:SystemClock_Config 88 static
|
||||
main.c:228:13:MX_ADC3_Init 24 static
|
||||
main.c:278:13:MX_SPI4_Init 8 static
|
||||
main.c:316:13:MX_TIM6_Init 16 static
|
||||
main.c:358:13:MX_GPIO_Init 64 static
|
||||
main.c:621:9:getSoundLevel 24 static
|
||||
main.c:658:6:LEDDesign_Off 16 static
|
||||
main.c:665:6:LEDDesign_ColorWhite 16 static
|
||||
main.c:672:6:LEDDesign_ColorBlue 16 static
|
||||
main.c:683:6:LEDDesign_ColorGreen 16 static
|
||||
main.c:694:6:LEDDesign_ColorRed 16 static
|
||||
main.c:705:6:LEDDesign_Crazy 32 static
|
||||
main.c:713:6:LEDDesign_Smile 24 static
|
||||
main.c:780:6:LEDDesign_SuperCrazy 24 static
|
||||
main.c:795:9:lookupLED 16 static
|
||||
main.c:1024:6:setLED 16 static
|
||||
main.c:1029:6:updateWS2812BData 16 static
|
||||
main.c:1146:6:Error_Handler 4 static
|
||||
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user