2022年8月11日木曜日

PWM(Pulse Width Modulation)002

#define ENA 9     //9番ピンをENAと定義 右PWM
#define IN1 8     //8番ピンをIN1と定義 右
#define IN2 7     //7番ピンをIN2と定義 右
#define IN3 5     //5番ピンをIN3と定義 左
#define IN4 4     //4番ピンをIN4と定義 左
#define ENB 3     //3番ピンをENBと定義 左PWM

void setup() {
  pinMode(ENA,OUTPUT);     //ENAは出力です
  pinMode(IN1,OUTPUT);     //IN1は出力です
  pinMode(IN2,OUTPUT);     //IN2は出力です
  pinMode(IN3,OUTPUT);     //IN3は出力です
  pinMode(IN4,OUTPUT);     //IN4は出力です
  pinMode(ENB,OUTPUT);     //ENBは出力です
}

void analog1(){
  int i;

  digitalWrite(IN1,HIGH);     //正転IN1をHIGH、IN2をLOW
  digitalWrite(IN2,LOW);      //正転

  for(i=0;i<256;i++){         //右モーターを段々加速
    analogWrite(ENA,i);
    delay(20);
  }

  for(i=255;i>=0;i--){        //右モーターを段々減速
    analogWrite(ENA,i);
    delay(20);
  }

  digitalWrite(IN3,HIGH);     //正転IN3をHIGH、IN4をLOW
  digitalWrite(IN4,LOW);      //正転

  for(i=0;i<256;i++){         //左モーターを段々加速
    analogWrite(ENB,i);
    delay(20);
  }

  for(i=255;i>=0;i--){        //左モーターを段々減速
  analogWrite(ENB,i);
    delay(20);
  }

  digitalWrite(IN1,LOW);      //停止(惰性回転)貫通電流防止のため
  digitalWrite(IN2,LOW);      //停止(惰性回転)貫通電流防止のため
  digitalWrite(IN3,LOW);      //停止(惰性回転)貫通電流防止のため
  digitalWrite(IN4,LOW);      //停止(惰性回転)貫通電流防止のため
  delay(1);                   //停止(惰性回転)貫通電流防止のため

}

void loop() {
  analog1();
}