Étape 3: PWM... Timer de l’Arduino
Timer0 est connecté à la broche, D5, D6, nous voulons augmenter la fréquence de « Plus en douceur control »
Notez que Timer0 est contrôle le (délai, millis) sur l’arduino, donc tout changement sur le Prédiviseur de cette minuterie va changer le temps de retard et millis.
int RPWM = 5 ;
int LPWM = 6 ;
int L_EN = 7 ;
int R_EN = 8 ;
void setPWMfrequency (int freq) {}
TCCR0B = TCCR0B & 0b11111000 | FREQ ;
}
void MotorActiveStatus (char côté, boolean s) {}
Boolean Etat = s ;
{if(Side=='R')}
digitalWrite(R_EN,s) ;
}
{if(Side=='L')}
digitalWrite(L_EN,s) ;
}
}
void setMotor (char côté, octet pwm) {}
{if(Side=='R')}
analogWrite(RPWM,pwm) ;
}
{if(Side=='L')}
analogWrite(LPWM,pwm) ;
}
}
void closeMotor(char side) {}
{if(Side=='R')}
digitalWrite(RPWM,LOW) ;
}
{if(Side=='L')}
digitalWrite(LPWM,LOW) ;
}
}
void setup() {}
Mettez votre code de programme d’installation ici, pour exécuter une fois :
setPWMfrequency(0x02); / / timer 0, 3,92 KHz
pour (int i = 5; i < 9; i ++) {}
pinMode(i,OUTPUT) ;
}
pour (int i = 5; i < 9; i ++) {}
digitalWrite(i,LOW) ;
}
Delay(1000) ;
MotorActiveStatus('R',true) ;
MotorActiveStatus('L',true) ;
Serial.Begin(9600) ;
}
void loop() {}
Mettez votre code principal ici, pour exécuter à plusieurs reprises :
pour (int i = 0; i < 256; i ++) {}
setMotor('R',i) ;
Delay(500) ;
}
Delay(1000) ;
closeMotor('R') ;
Delay(1000) ;
pour (int i = 0; i < 256; i ++) {}
setMotor('L',i) ;
Delay(500) ;
}
Delay(1000) ;
closeMotor('L') ;
Delay(1000) ;
}
Si nous voulons utiliser ce code avec un autre minuteur "timer 2" il suffit de changer D5, D6 à broche D3, D11 respectivement
int RPWM = 3 ;
int LPWM = 11 ;
int L_EN = 7 ;
int R_EN = 8 ;
void setPWMfrequency (int freq) {}
TCCR2B = TCCR2B & 0b11111000 | FREQ ;
}
void MotorActiveStatus (char côté, boolean s) {}
Boolean Etat = s ;
{if(Side=='R')}
digitalWrite(R_EN,s) ;
}
{if(Side=='L')}
digitalWrite(L_EN,s) ;
}
}
void setMotor (char côté, octet pwm) {}
{if(Side=='R')}
analogWrite(RPWM,pwm) ;
}
{if(Side=='L')}
analogWrite(LPWM,pwm) ;
}
}
void closeMotor(char side) {}
{if(Side=='R')}
digitalWrite(RPWM,LOW) ;
}
{if(Side=='L')}
digitalWrite(LPWM,LOW) ;
}
}
void setup() {}
Mettez votre code de programme d’installation ici, pour exécuter une fois :
setPWMfrequency(0x02); / / Minuterie 2, 3,92 KHz
pour (int i = 5; i < 9; i ++) {}
pinMode(i,OUTPUT) ;
}
pour (int i = 5; i < 9; i ++) {}
digitalWrite(i,LOW) ;
}
Delay(1000) ;
MotorActiveStatus('R',true) ;
MotorActiveStatus('L',true) ;
Serial.Begin(9600) ;
}
void loop() {}
Mettez votre code principal ici, pour exécuter à plusieurs reprises :
pour (int i = 0; i < 256; i ++) {}
setMotor('R',i) ;
Delay(50) ;
}
Delay(500) ;
closeMotor('R') ;
Delay(1000) ;
pour (int i = 0; i < 256; i ++) {}
setMotor('L',i) ;
Delay(50) ;
}
Delay(500) ;
closeMotor('L') ;
Delay(1000) ;
}