mirror of
				https://github.com/jhbruhn/eurorack.git
				synced 2025-11-03 04:46:02 +00:00 
			
		
		
		
	Improve startup sequence for leds
This commit is contained in:
		
							parent
							
								
									0b59c9edb1
								
							
						
					
					
						commit
						30a9b3a124
					
				
					 3 changed files with 11 additions and 6 deletions
				
			
		| 
						 | 
					@ -55,7 +55,7 @@ class Leds {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    htim1.Init.Prescaler = 1;
 | 
					    htim1.Init.Prescaler = 1;
 | 
				
			||||||
    htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
 | 
					    htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
 | 
				
			||||||
    htim1.Init.Period = 1024; // 10 bit
 | 
					    htim1.Init.Period = 1024 - 2; // 10 bit
 | 
				
			||||||
    htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
 | 
					    htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
 | 
				
			||||||
    HAL_TIM_PWM_Init(&htim1);
 | 
					    HAL_TIM_PWM_Init(&htim1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,9 +60,11 @@ void UI::Poll()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (abs(previous_pot_values[i] - adc->value(ADC_GROUP_POT + i)) > 1900) {
 | 
					    if (abs(previous_pot_values[i] - adc->value(ADC_GROUP_POT + i)) > 1900) {
 | 
				
			||||||
      previous_pot_values[i] = adc->value(ADC_GROUP_POT + i);
 | 
					      previous_pot_values[i] = adc->value(ADC_GROUP_POT + i);
 | 
				
			||||||
 | 
					      if(pots_touched)
 | 
				
			||||||
        queue.AddEvent(CONTROL_POT, i, previous_pot_values[i]);
 | 
					        queue.AddEvent(CONTROL_POT, i, previous_pot_values[i]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  pots_touched = true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void UI::LoadState() {
 | 
					void UI::LoadState() {
 | 
				
			||||||
| 
						 | 
					@ -112,7 +114,7 @@ void UI::OnSwitchReleased(const Event& e)
 | 
				
			||||||
  mute[e.control_id] = !mute[e.control_id];
 | 
					  mute[e.control_id] = !mute[e.control_id];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (size_t i = 0; i < kNumChannels; i++) {
 | 
					  for (size_t i = 0; i < kNumChannels; i++) {
 | 
				
			||||||
    last_pan_pot_touch[i] = last_vol_pot_touch[i] = 0;
 | 
					    last_pan_pot_touch[i] = last_vol_pot_touch[i] = -1;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SaveState();
 | 
					  SaveState();
 | 
				
			||||||
| 
						 | 
					@ -138,7 +140,7 @@ void UI::TaskDrawLeds()
 | 
				
			||||||
      leds->set_intensity_signed(i, pan_att_pots[i] - 32767);
 | 
					      leds->set_intensity_signed(i, pan_att_pots[i] - 32767);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      // TODO: refactor
 | 
					      // TODO: refactor
 | 
				
			||||||
      if (system_clock.milliseconds() - last_pan_pot_touch[i] < kShowChangedValueMilliseconds) {
 | 
					      if (last_pan_pot_touch[i] > 0 && system_clock.milliseconds() - last_pan_pot_touch[i] < kShowChangedValueMilliseconds) {
 | 
				
			||||||
        // show panning
 | 
					        // show panning
 | 
				
			||||||
        leds->set_intensity_signed(i, pan_pots[i] - 32767);
 | 
					        leds->set_intensity_signed(i, pan_pots[i] - 32767);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,8 @@ class UI {
 | 
				
			||||||
      potControllers[i].Init(&volume_pots[i], volume_hidden_params);
 | 
					      potControllers[i].Init(&volume_pots[i], volume_hidden_params);
 | 
				
			||||||
      uint16_t* pan_hidden_params[] = {&pan_att_pots[i], &pan_att_pots[i], &pan_att_pots[i], &pan_att_pots[i]};
 | 
					      uint16_t* pan_hidden_params[] = {&pan_att_pots[i], &pan_att_pots[i], &pan_att_pots[i], &pan_att_pots[i]};
 | 
				
			||||||
      potControllers[i + kNumChannels].Init(&pan_pots[i], pan_hidden_params);
 | 
					      potControllers[i + kNumChannels].Init(&pan_pots[i], pan_hidden_params);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      last_pan_pot_touch[i] = last_vol_pot_touch[i] = -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -72,8 +74,9 @@ class UI {
 | 
				
			||||||
  uint16_t pan_att_pots[kNumChannels];
 | 
					  uint16_t pan_att_pots[kNumChannels];
 | 
				
			||||||
  bool mute[kNumChannels];
 | 
					  bool mute[kNumChannels];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  uint32_t last_pan_pot_touch[kNumChannels];
 | 
					  int64_t last_pan_pot_touch[kNumChannels];
 | 
				
			||||||
  uint32_t last_vol_pot_touch[kNumChannels];
 | 
					  int64_t last_vol_pot_touch[kNumChannels];
 | 
				
			||||||
 | 
					  bool pots_touched;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  PotController<kNumChannels> potControllers[kNumChannels * 2]; // todo: count
 | 
					  PotController<kNumChannels> potControllers[kNumChannels * 2]; // todo: count
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue