วันจันทร์ที่ 30 พฤษภาคม พ.ศ. 2559

Arduino TPIC6B595

Arduino TPIC6B595
สำหรับ การทดลองนี้จะมี Item ใหม่เข้ามาเพิ่มนั่นก็คือ ET-MINI TPIC6B595 
เป็นการทดลองเกี่ยวกับการทดลองใช้สายแพ เพื่อความสะดวกในการเชื่อมต่อ 
LED เข้ากับบอร์ด Arduino และลดจำนวนสายจัมป์เปอร์ลง
เพื่อทดลองควบคุม TPIC6B595 ผ่านสายแพด้วย Arduino โดยจะมีการ
เขียน code เพื่อควบคุม pin ต่างๆที่ได้กำหนดไว้แล้ว ต่อเข้ากับ Switch
และ LED แล้วใช้ Switch กดดูว่า LED ติดหรือไม่ สามารถทำตามขั้นตอน
ด้านล่างนี้ได้เลยครับ

Source Code สำหรับการทดลอง

//Pin to clear the register  
const int clearPin = 12;
//Pin connected to latch pin (RCK) of TPIC6B595
const int latchPin = 10;
//Pin connected to clock pin (SRCK) of TPIC6B595
const int clockPin = 11;
////Pin connected to Data in (SER IN) of TPIC6B595
const int dataPin = 9;

int counter = 0;
int numLedsInUse = 8;
int switch1 = 2;
int switch2 = 3;
int switch3 = 4;
int switch4 = 5;
int switch5 = 6;
int switch6 = 7;
int switch7 = 8;
int switch8 = A0;

void setup() {
//set pins to output because they are addressed in the main loop
pinMode(clearPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(switch1, INPUT_PULLUP);
pinMode(switch2, INPUT_PULLUP);
pinMode(switch3, INPUT_PULLUP);
pinMode(switch4, INPUT_PULLUP);
pinMode(switch5, INPUT_PULLUP);
pinMode(switch6, INPUT_PULLUP);
pinMode(switch7, INPUT_PULLUP);
pinMode(switch8, INPUT_PULLUP);

Serial.begin(9600);
Serial.println("*");

// Always start by setting SRCLR high
digitalWrite( clearPin, HIGH);

// delay a little and then set
delay(100);
}

void loop() {

if(digitalRead(switch1) == 0){
while(digitalRead(switch1)==0){
counter = 0;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch2) == 0){
while(digitalRead(switch2)==0){
counter = 1;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch3) == 0){
while(digitalRead(switch3)==0){
counter = 2;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch4) == 0){
while(digitalRead(switch4)==0){
counter = 3;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch5) == 0){
while(digitalRead(switch5)==0){
counter = 4;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch6) == 0){
while(digitalRead(switch6)==0){
counter = 5;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch7) == 0){
while(digitalRead(switch7)==0){
counter = 6;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

if(digitalRead(switch8) == 0){
while(digitalRead(switch8)==0){
counter = 7;
registerWrite(counter, HIGH);
delay(10);
}
registerWrite(counter, LOW);
delay( 100 );
}

}

// This method sends bits to the shift register:
void registerWrite(int whichPin, int whichState) {
Serial.println(whichPin);
// the bits you want to send
byte bitsToSend = 0;
// write number as bits
bitWrite(bitsToSend, whichPin, whichState);

// turn off the output so the pins don't light up
// while you're shifting bits:
digitalWrite(latchPin, LOW);
Serial.println(bitsToSend);
Serial.println("_");
// shift the bits out
shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend);
// turn on the output so the LEDs can light up:
digitalWrite(latchPin, HIGH);
}


1.อัพโค้ดลงบอร์ดโลดเลยจร้า

2.ต่อวงจรตามที่ได้เขียนโค้ดเอาไว้

ในบอร์ด TPIC6B595 จะต้องต่อไฟเลี้ยงจากBoard Arduino และ Ground ให้กับบอร์ด ดังภาพ

และก็ต่อตามภาพหรือ โค้ดด้านบนเลยครับผม

ต้องต่อให้ถูกนะครับ ไม่งั้นไฟไม่ติดกดปุ่มไม่ได้
ส่วนผลการทดลองก็จะเป็นไปตา่ม Video ด้านบนเลยครับผม

Share:

0 ความคิดเห็น:

แสดงความคิดเห็น