張開豪 發表於 2016-3-14 16:17:43

arduino ATmega328和74595做8X8矩陣電路

因為老師教學和板子的關係分成了兩個參數最下方的部分只執行到一個參數
有大大們可以幫解答嗎
下方該怎麼改
圖案是一個笑臉











//**************************************************************//
//Name    : shiftOutCode, Dual Binary Counters               //
//Author: Carlyn Maw, Tom Igoe                               //
//Date    : 25 Oct, 2006                                       //
//Version : 1.0                                                //
//Notes   : Code for using a 74HC595 Shift Register            //
//          : to count from 0 to 255                           //
//**************************************************************//

// X 軸
int dataPin =2;//data input pin 14
int latchPin = 3;//latch pin 12
int clockPin = 4;//shift clock pin 11

// Y 軸
int dataPin_1= 5;//data input pin 14
int latchPin_1 = 6;//latch pin 12
int clockPin_1 = 7;//shift clock pin 11


void setup() {
Serial.begin(9600);
pinMode(latchPin, OUTPUT);
pinMode(latchPin_1, OUTPUT);

}

void loop() {
//Smile for 8x8 Matrix LED
digitalWrite(latchPin, 0);
digitalWrite(latchPin_1, 0);
shiftOut(dataPin_1, clockPin_1, B01111111);//mask(col) Y軸
shiftOut(dataPin, clockPin, B00111100);//row X軸
digitalWrite(latchPin, 1);
digitalWrite(latchPin_1, 1);

digitalWrite(latchPin, 0);
digitalWrite(latchPin_1, 0);
shiftOut(dataPin_1, clockPin_1, B10111111);//mask(col) Y軸
shiftOut(dataPin, clockPin, B01000010);//row X軸
digitalWrite(latchPin, 1);
digitalWrite(latchPin_1, 1);

digitalWrite(latchPin, 0);
digitalWrite(latchPin_1, 0);
shiftOut(dataPin_1, clockPin_1, B11011111);//mask(col) Y軸
shiftOut(dataPin, clockPin, B10100101);//row X軸
digitalWrite(latchPin, 1);
digitalWrite(latchPin_1, 1);

digitalWrite(latchPin, 0);
digitalWrite(latchPin_1, 0);
shiftOut(dataPin_1, clockPin_1, B11101111);//mask(col) Y軸
shiftOut(dataPin, clockPin, B10000001);//row X軸
digitalWrite(latchPin, 1);
digitalWrite(latchPin_1, 1);

digitalWrite(latchPin, 0);
digitalWrite(latchPin_1, 0);
shiftOut(dataPin_1, clockPin_1, B11110111);//mask(col) Y軸
shiftOut(dataPin, clockPin, B10100101);//row X軸
digitalWrite(latchPin, 1);
digitalWrite(latchPin_1, 1);

digitalWrite(latchPin, 0);
digitalWrite(latchPin_1, 0);
shiftOut(dataPin_1, clockPin_1, B11111011);//mask(col) Y軸
shiftOut(dataPin, clockPin, B10011001);//row X軸
digitalWrite(latchPin, 1);
digitalWrite(latchPin_1, 1);

digitalWrite(latchPin, 0);
digitalWrite(latchPin_1, 0);
shiftOut(dataPin_1, clockPin_1, B11111101);//mask(col) Y軸
shiftOut(dataPin, clockPin, B01000010);//row X軸
digitalWrite(latchPin, 1);
digitalWrite(latchPin_1, 1);

digitalWrite(latchPin, 0);
digitalWrite(latchPin_1, 0);
shiftOut(dataPin_1, clockPin_1, B11111110);//mask(col) Y軸
shiftOut(dataPin, clockPin, B00111100);//row X軸
digitalWrite(latchPin, 1);
digitalWrite(latchPin_1, 1);
}

void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
int i=0;
int pinState;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, OUTPUT);

digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);

for (i=7; i>=0; i--){
    digitalWrite(myClockPin, 0);

    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    }
    else {      
      pinState= 0;
    }

    digitalWrite(myDataPin, pinState);
    digitalWrite(myClockPin, 1);
    digitalWrite(myDataPin, 0);
}

digitalWrite(myClockPin, 0);
}
頁: [1]
查看完整版本: arduino ATmega328和74595做8X8矩陣電路