Ciao a tutti, causa problemi vari sono riuscito solo oggi a ributtarmi dietro al progetto del cambio elettronico per moto.
Alla fine ho deciso di aggiungere un trim e un display a 7 segmenti per poter gestire in maniera analogica il periodo di tempo in millisecondi durante il quale non deve arrivare corrente al motore.
praticamente le posizioni del trim che indicano sul display da 0 a 9 determinano uno stacco da 20 a 50 millisecondi (0= 20,1=23,2=26,3=30,4=33,5=36,6=40,7=43,8=46,9=50).
ho eseguito questo sketch ma il problema è che non riesco nei vari case a far coesistere il numero sul display e la funzione di stacco attacco. Se tolgo il comando del numero quindi per esempio se tolgo uno(); e carico funziona per i millisec chiesti ma chiaramente non me lo indica sul display......
Avete qualche idea su come si possa risolvere? grazie
(code tags please!)
void loop(){
posizionepot = analogRead (potenziometro);
gruppo = (posizionepot & 1020)/102; // suddivido in 10 gruppi
switch (gruppo) {
case 0:
zero(); // dico di accendere lo "0"
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(20); // questo è il tempo di cambiata e quindi i millisec di stacco
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
case 1:
uno();
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(23);
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
case 2:
due();
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(26);
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
case 3:
tre();
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(30);
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
case 4:
quattro();
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(33);
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
case 5:
cinque();
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(36);
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
case 6:
six();
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(40);
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
case 7:
sette();
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(43);
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
case 8:
otto();
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(46);
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
case 9:
nove();
lettura = digitalRead (bottone);
if( lettura == HIGH)
{
if (stato == 0)
{stato = 1;
digitalWrite(rele,HIGH);
delay(50);
digitalWrite (rele,LOW);
delay(500);
}
}
else
{stato = 0;}
delay (10);
break;
}
delay (10);
}