Not only 'zero' might need trimming, but also the 'extremes' might not be 0 and 1023.
Since we didn't see any code or pictures, we also can't be sure you're using the pots correctly.
You should write a few lines of code that just displays the pot values in the serial monitor.
Then try to tame the beast with double reads, offsets, and/or map().
Post your code and a picture of the setup if you want help with that.
You might need a bit more than just "potValue = analogRead(potPin);"
Attached is an example (unrelated) I wrote for reading a pot and converting to 0-100% (101 values).
It ignores the extremes, and has a deadband between each % value.
And only prints if the % value changes.
Leo..
// converts the position of a 10k lin(B) pot to 0-100%
// pot connected to A0, 5volt and ground
int rawValue;
int oldValue;
byte potPercentage;
byte oldPercentage;
void setup() {
Serial.begin(115200); // set serial monitor to this baud rate, or change the value
}
void loop() {
// read input twice
rawValue = analogRead(A0);
rawValue = analogRead(A0); // double read
// ignore bad hop-on region of a pot by removing 8 values at both extremes
rawValue = constrain(rawValue, 8, 1015);
// add some deadband
if (rawValue < (oldValue - 4) || rawValue > (oldValue + 4)) {
oldValue = rawValue;
// convert to percentage
potPercentage = map(oldValue, 8, 1008, 0, 100);
// Only print if %value changes
if (oldPercentage != potPercentage) {
Serial.print("Pot percentage is: ");
Serial.print(potPercentage);
Serial.println(" %");
oldPercentage = potPercentage;
}
}
}