Paso 3: PWM... Temporizador de Arduino
Timer0 es conectado al pin D5, D6, queremos aumentar la frecuencia "Más suavemente el control"
Nota que Timer0 es control (retardo, millis) en el arduino, por lo que cualquier cambio en el prescaler del temporizador cambiará el tiempo de retardo y 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 lado, s boolean) {}
Boolean estado = s;
{if(Side=='R')}
digitalWrite(R_EN,s);
}
{if(Side=='L')}
digitalWrite(L_EN,s);
}
}
{} void setMotor (lado de char, byte 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() {}
Pon tu código de instalación, para ejecutar una vez:
setPWMfrequency(0x02); / / contador de tiempo 0, 3,92 KHz
para (int i = 5; i < 9; i ++) {}
pinMode(i,OUTPUT);
}
para (int i = 5; i < 9; i ++) {}
digitalWrite(i,LOW);
}
Delay(1000);
MotorActiveStatus('R',true);
MotorActiveStatus('L',true);
Serial.Begin(9600);
}
void loop() {}
Pon tu código principal, para ejecutar varias veces:
para (int i = 0; i < 256; i ++) {}
setMotor('R',i);
Delay(500);
}
Delay(1000);
closeMotor('R');
Delay(1000);
para (int i = 0; i < 256; i ++) {}
setMotor('L',i);
Delay(500);
}
Delay(1000);
closeMotor('L');
Delay(1000);
}
Si queremos utilizar este código con otro temporizador "timer 2" solo cambio D5, D6 al pin D3, D11 respectivamente
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 lado, s boolean) {}
Boolean estado = s;
{if(Side=='R')}
digitalWrite(R_EN,s);
}
{if(Side=='L')}
digitalWrite(L_EN,s);
}
}
{} void setMotor (lado de char, byte 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() {}
Pon tu código de instalación, para ejecutar una vez:
setPWMfrequency(0x02); / / timer 2, 3,92 KHz
para (int i = 5; i < 9; i ++) {}
pinMode(i,OUTPUT);
}
para (int i = 5; i < 9; i ++) {}
digitalWrite(i,LOW);
}
Delay(1000);
MotorActiveStatus('R',true);
MotorActiveStatus('L',true);
Serial.Begin(9600);
}
void loop() {}
Pon tu código principal, para ejecutar varias veces:
para (int i = 0; i < 256; i ++) {}
setMotor('R',i);
Delay(50);
}
Delay(500);
closeMotor('R');
Delay(1000);
para (int i = 0; i < 256; i ++) {}
setMotor('L',i);
Delay(50);
}
Delay(500);
closeMotor('L');
Delay(1000);
}