[RISOLTO] Display 7 Segmenti + potenziometro + motore 3V

Ciao ragazzi, questo è il mio primo thread! Premetto che sono alle prime armi sia di programmazione che di elettronica.
Ho acquistato da meno di un mese Arduino UNO rev3 e mi sto dilettando nei primi "esperimenti".

Tramite tutorial ho fatto il classico progetto del motore che varia velocità tramite potenziometro. Successivamente ho provato a collegare un display a 7 segmenti ad anodo positivo (Quindi con il positivo comune), che mostri la velocità del motore da 0 a 9. Dopo varie prove e qualche display bruciato (??!) sono riuscito nell'impresa, ma c'è una cosa che non capisco. Perchè il display, a Slider sullo "0", non mi visualizza 0? Ecco il codice, sicuramente pieno di errori...

int G=2;
int F=3;
int A=4;
int B=5;
int DP=6;
int C=7;
int D=8;
int E=9;
int Val_PWM = 0; //Valore per PWM (0-255)
int Val_Slider = 0; //Valore Slider
const int SLIDER = A1; //Slider 5 kohm
const int MOTORE = 11; //Motore

void setup(){
Serial.begin(9600);
Serial.println("system startup");
pinMode(SLIDER, INPUT); //Impostazione PIN come ingresso
pinMode(MOTORE, OUTPUT); //Impostazione PIN come uscita
pinMode(G, OUTPUT);
pinMode(F, OUTPUT);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(E, OUTPUT);
pinMode(D, OUTPUT);
pinMode(C, OUTPUT);
pinMode(DP, OUTPUT);
}

void zero(){
digitalWrite(G, HIGH);
digitalWrite(F, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(E, LOW);
digitalWrite(D, LOW);
digitalWrite(C, LOW);
digitalWrite(DP, HIGH);
}
void uno(){
digitalWrite(G, HIGH);
digitalWrite(F, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(E, HIGH);
digitalWrite(D, HIGH);
digitalWrite(C, LOW);
digitalWrite(DP, HIGH);
}
void due(){
digitalWrite(G, LOW);
digitalWrite(F, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(E, LOW);
digitalWrite(D, LOW);
digitalWrite(C, HIGH);
digitalWrite(DP, HIGH);
}
void tre(){
digitalWrite(G, LOW);
digitalWrite(F, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(E, HIGH);
digitalWrite(D, LOW);
digitalWrite(C, LOW);
digitalWrite(DP, HIGH);
}
void quattro(){
digitalWrite(G, LOW);
digitalWrite(F, LOW);
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(E, HIGH);
digitalWrite(D, HIGH);
digitalWrite(C, LOW);
digitalWrite(DP, HIGH);
}
void cinque(){
digitalWrite(G, LOW);
digitalWrite(F, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(E, HIGH);
digitalWrite(D, LOW);
digitalWrite(C, LOW);
digitalWrite(DP, HIGH);
}
void six(){
digitalWrite(G, LOW);
digitalWrite(F, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(E, LOW);
digitalWrite(D, LOW);
digitalWrite(C, LOW);
digitalWrite(DP, HIGH);
}
void sette(){
digitalWrite(G, HIGH);
digitalWrite(F, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(E, HIGH);
digitalWrite(D, HIGH);
digitalWrite(C, LOW);
digitalWrite(DP, HIGH);
}
void otto(){
digitalWrite(G, LOW);
digitalWrite(F, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(E, LOW);
digitalWrite(D, LOW);
digitalWrite(C, LOW);
digitalWrite(DP, HIGH);
}
void nove(){
digitalWrite(G, LOW);
digitalWrite(F, LOW);
digitalWrite(A,LOW);
digitalWrite(B, LOW);
digitalWrite(E, HIGH);
digitalWrite(D, LOW);
digitalWrite(C, LOW);
digitalWrite(DP, HIGH);
}

void loop(){
Val_Slider = analogRead(SLIDER); //Lettura valore Slider
Serial.print("Valore Slider: ");
Serial.println(Val_Slider, DEC);
Serial.print("Valore PWM: ");
Serial.println(Val_PWM, DEC);
Val_PWM = Val_Slider;
Val_PWM = Val_PWM / 4; //L'analogico lavora fino a 1024, ovvero 4 volte in più del PWM, quindi adatto i valori
analogWrite(MOTORE, Val_PWM); //Imposto velocità
delay(100); //Attesa
if (Val_Slider >= 1 && Val_Slider <= 113){
uno();}
if (Val_Slider >= 114 && Val_Slider <= 227){
due();}
if (Val_Slider >= 228 && Val_Slider <= 341){
tre();}
if (Val_Slider >= 342 && Val_Slider <= 454){
quattro();}
if (Val_Slider >= 455 && Val_Slider <= 568){
cinque();}
if (Val_Slider >= 569 && Val_Slider <= 682){
six();}
if (Val_Slider >= 683 && Val_Slider <= 795){
sette();}
if (Val_Slider >= 796 && Val_Slider <= 909){
otto();}
if (Val_Slider >= 910 && Val_Slider <= 1024){
nove();}
if (Val_Slider = 0){
zero();}
}

if (Val_Slider = 0){
zero();}

non è un' uguaglianza, quella è un'assegnazione

brunello:
if (Val_Slider = 0){
zero();}

non è un' uguaglianza, quella è un'assegnazione

Stavo per scriverlo io.
Ci vuole il doppio uguale: "=="

gabm88:
Ciao ragazzi,
if (Val_Slider = 0){
zero();}[/b][/i]
}

devi mettere < 1 al posto dell = 0
anzi aggiusterei il tutto che se il valore e al di sotto di 5-6 segna zero e verificherei che lettura da lo slider tutto chiuso (magari da 11 e non lo sai)

di solito beccare un valore preciso con un analogRead è impossibile a meno che non adoperi un potenziometro dieci giri di marca

gingardu:

gabm88:
Ciao ragazzi,
if (Val_Slider = 0){
zero();}[/b][/i]
}

devi mettere < 1 al posto dell = 0
anzi aggiusterei il tutto che se il valore e al di sotto di 5-6 segna zero e verificherei che lettura da lo slider tutto chiuso (magari da 11 e non lo sai)

di solito beccare un valore preciso con un analogRead è impossibile a meno che non adoperi un potenziometro dieci giri di marca

Ho gia verificato con la porta seriale e quando è chiuso da 0!

Grazie ragazzi! so che il programma non è scritto benissimo (sono proprio imbranato!), comunque grazie a voi ho risolto,
GRAZIE MILLE! XD XD XD