|
http://www.youtube.com/edit?video_id=33W6s3o-Lzc以下為部分程式碼 12顆馬達分別接至6顆74HC574 控制資料由74HC164串轉並列輸出
//***************************************************************
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
// initialize timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 3906; // compare match register 16MHz/3906=2048Hz
TCCR1B |= (1 << WGM12); // CTC mode
TCCR1B |= (1 << CS10); // no prescaler
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
interrupts(); // enable all interrupts
digitalWrite(Ck574_U1,0);
digitalWrite(Ck574_U2,0);
digitalWrite(Ck574_U3,0);
digitalWrite(Ck574_U4,0);
digitalWrite(Ck574_U5,0);
digitalWrite(Ck574_U6,0);
//----------------------------------------------------------------
digitalWrite(Clock_164,0); //
digitalWrite(Clear_164,0); //clear 74hc164
digitalWrite(Clear_164,1); //
//----------------------------------------------------------------
digitalWrite(Ck574_U1,1);
digitalWrite(Ck574_U1,0);
digitalWrite(Ck574_U2,1);
digitalWrite(Ck574_U2,0);
digitalWrite(Ck574_U3,1);
digitalWrite(Ck574_U3,0);
digitalWrite(Ck574_U4,1);
digitalWrite(Ck574_U4,0);
digitalWrite(Ck574_U5,1);
digitalWrite(Ck574_U5,0);
digitalWrite(Ck574_U6,1);
digitalWrite(Ck574_U6,0);
}
//***************************************************************
//***************************************************************
//***************************************************************
void loop(void)
{
if(TSMR_f & StepSpeed)step_motor_proc();
} |
|