Omet navegació

6.4) Motors amb l'escut L293 A_UNO (PWM)

Podem utilitzar les funcions PWM per fer anar el motor de forma controlada des del 0% fins el 100%. Amb el mateix muntatge que has fet adés.

Arduino + Escut L293 + Motors E i D + PWM

Ara escriu el següent programa amb Blockly@rduino:

Escut A UNO_L293_PWM

Fixa't que hem modificat el blocs de funcions motor per fer que funcionen al 50% de capacitat amb el PWM.

Amb aquest escut el PWM del pin 11 permet activar els pins 12 i 13 usant funcions PWM que varien de 0 a 255 en el motor esquerre.

Amb aquest escut el PWM del pin 10 permet activar els pins 8 i 9 usant funcions PWM que varien de 0 a 255 en el motor dret.

Mira el programa equivalent per l'Arduino IDE:

// Motor esquerre horari
void Motor_Esquerre_Horari() {
  Serial.println("Activem el PWM amb el pin 11");
  digitalWrite(11, HIGH);
  Serial.println("50% de capacitat");
  analogWrite(13, 128);
  digitalWrite(12, LOW);
}


// Motor dret horari
void Motor_Dret_Horari() {
  Serial.println("Activem el PWM amb el pin 10");
  digitalWrite(10, HIGH);
  Serial.println("50% de capacitat");
  analogWrite(8, 128);
  digitalWrite(9, LOW);
}


// Motor esquerre antiHorari
void Motor_Esquerre_antiHorari() {
  Serial.println("Activem el PWM amb el pin 11");
  digitalWrite(11, HIGH);
  digitalWrite(13, LOW);
  Serial.println("50% de capacitat");
  analogWrite(12, 128);
}


// Motor dret antihorari
void Motor_Dret_antiHorari() {
  Serial.println("Activem el PWM amb el pin 10");
  digitalWrite(10, HIGH);
  digitalWrite(8, LOW);
  Serial.println("50% de capacitat");
  analogWrite(9, 128);
}


// Motor esquerre aturat
void Motor_Esquerre_aturat() {
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
}


// Motor dret aturat
void Motor_Dret_aturat() {
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
}

void setup() {
  pinMode(11, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  Serial.begin(9600);
}

void loop() {
    Motor_Esquerre_Horari();
    delay(5000);
    Motor_Esquerre_antiHorari();
    delay(5000);
    Motor_Esquerre_aturat();
    delay(5000);
    Motor_Dret_Horari();
    delay(5000);
    Motor_Dret_antiHorari();
    delay(5000);
    Motor_Dret_aturat();
    delay(5000);
}

Fes la practica de motors PWM 1.