#include "speed_control.h"
#define POT_ANALOG_PIN A0
#define SLIDER_ANALOG_PIN A1
#define MAX_SPEED 300
#define SPEED_ZONE_CENTER 150
#define SPEED_ZONE_WIDTH 50
SpeedControl spd_cnt(MAX_SPEED, SPEED_ZONE_WIDTH, SPEED_ZONE_CENTER);
void check_adc_vals();
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
check_adc_vals();
delay(100); // delay in between reads
}
void check_adc_vals()
{
int slider_mapped_val = map(analogRead(SLIDER_ANALOG_PIN), 0, 1024, 0, MAX_SPEED); // map ADC value into range 0 to MAX_SPEED
int pot_mapped_val = map(analogRead(POT_ANALOG_PIN), 0, 1024, 0, MAX_SPEED); // map ADC value into range 0 to MAX_SPEED
spd_cnt.SetSpeedZoneRangeCenter(pot_mapped_val);
SpeedControl::ZonesTypes zone = spd_cnt.GetSpeedZone(slider_mapped_val);
static SpeedControl::ZonesTypes last_zone = SpeedControl::ZonesTypes::SPEED_NONE;
if(zone == last_zone)
return;
last_zone = zone;
Serial.println(spd_cnt.TakeAction(zone));
}