Simone.1992
Nuovo Utente
- Messaggi
- 2
- Reazioni
- 0
- Punteggio
- 22
Salve a tutti. Sto scrivendo un codice su arduino dove devo avviare, fermare e invertire il senso di marcia di un motore, tramite il CHIP L293D. Di per se fare l'avvio non è difficile, ma devo fare l'avvio graduato, ovvero che l'avvio deve fare i seguenti step:
-nel primo secondo il motore deve andare al 25% della sua velocità max;
- dopo 2 secondi deve andare al 50%;
-dopo altri 2 secondo deve andare al 75%;
- dopo altri 2 secondi andrà al massimo della velocità.
Constatando che la vecocità va da 0-255, ho provato a buttare giù questo codice, usando la funzione map, ma il motore va direttamente alla velocità massima. ( vi mando solo la parte di codice dell'avvio del motore):
-nel primo secondo il motore deve andare al 25% della sua velocità max;
- dopo 2 secondi deve andare al 50%;
-dopo altri 2 secondo deve andare al 75%;
- dopo altri 2 secondi andrà al massimo della velocità.
Constatando che la vecocità va da 0-255, ho provato a buttare giù questo codice, usando la funzione map, ma il motore va direttamente alla velocità massima. ( vi mando solo la parte di codice dell'avvio del motore):
Codice:
int avvio=2;//pin avvio
int indietro=3;//pincambio direzione
int pwm=A0; // pin analogico che determina velocità motore
int pulsante=4;// pulsante
int Velocita=0;
int statoPulsante=0;
int val=0;
int Vel_Ril=0;
void setup()
{
Serial.begin(9600);
pinMode(avvio,OUTPUT);
pinMode(indietro,OUTPUT);
pinMode(pulsante,INPUT);
pinMode(pwm,OUTPUT);
}
void loop()
{
val=analogRead(pwm);
Vel_Ril=map(val,0,1023,0,255);
int statoPulsante=digitalRead(pulsante);
digitalWrite(avvio,HIGH);
digitalWrite(indietro,LOW);
delay(1000);
if(statoPulsante==1)
{
Velocita=64;
analogWrite(pwm,Velocita);
delay(1000);
Velocita=128;
analogWrite(pwm, Velocita);
delay(2000);
Velocita=192;
analogWrite(pwm, Velocita);
delay(2000);
Velocita=255;
analogWrite(pwm, Velocita);
delay(2000);
}
}
Ultima modifica da un moderatore: