0

大学のプロジェクトでは、mp3shield と組み合わせたステッピング モーターを作成したいと考えています。

それはすべて正常に動作していますが、同じコードにそれらを入れると、それは本当に奇妙に動作し、ステッピングモーターが揺れ始めます.

私のコードは以下の通りです:

int sensor = A0;
int led1 = A1;
int led2 = A2;
int led3 = A3;
int led4 = A4;
int led5 = A5;
int button = 12;
int dirpin = 10;
int steppin = 11;

int buttonState;

void setup()
{
  Serial.begin(9600);

  pinMode(sensor, INPUT);
  pinMode(button, INPUT);

  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(dirpin, OUTPUT);
  pinMode(steppin, OUTPUT);
}
void loop()
{
  buttonState = digitalRead(button);
  Serial.println(buttonState);
  delay(10);

  if(buttonState == HIGH)
  {
    rotateDeg(360, .1);
    playSong(6);
  }
}

ステッピング モーターを回転させるためのコードは次のとおりです。

void rotateDeg(float deg, float speed){ 
  int dir = (deg > 0)? HIGH:LOW;
  digitalWrite(dirpin,dir); 

  int steps = abs(deg)*(1/0.225);
  float usDelay = (1/speed) * 70;

  for(int i=0; i < steps; i++){ 
    digitalWrite(steppin, HIGH); 
    delayMicroseconds(usDelay); 

    digitalWrite(steppin, LOW); 
    delayMicroseconds(usDelay); 
  } 
}

曲を再生するためのコード:

#include <SPI.h>
#include <SdFat.h>
#include <SdFatUtil.h> 
#include <SFEMP3Shield.h>

SdFat sd;
SFEMP3Shield MP3player;

void playSong(int song){

  Serial.begin(9600);

  //start the shield
  sd.begin(SD_SEL, SPI_HALF_SPEED);
  MP3player.begin();

  //start playing track 1
  MP3player.playTrack(song);
}

12V 1000mA入力のステッピングモーター用ドライバーを使用しています。モーターなしで曲を再生したい場合は、問題なく動作します。無音でモーターを回したい場合も問題なく動きます。

うまくいけば、あなたが助けることができます.

前もって感謝します、

ニッシュ

編集: 私はいくつかの LED も持っていますが、これは正常に動作します。ボタンを押すとランダムなパターンになります。次のようなコードに入れると:

if(buttonState == HIGH)
  {
    setLed();
    rotateDeg(360, .1);

  }

それは私が望むように機能します。しかし、私が試してみると:

if(buttonState == HIGH)
  {
    playSound(4);
    rotateDeg(360, .1);

  }

曲を再生するとモーターが揺れ始め、360度回転しません。

4

0 に答える 0