ใน ARDUINO เรามีพิน I / O 20 พินดังนั้นเราจึงสามารถตั้งโปรแกรม UNO 20 พินเพื่อใช้เป็นอินพุตหรือเอาต์พุตได้ แม้ว่าจะมีพินบนคอนโทรลเลอร์ ATMEGA328P มากกว่าบน UNO แต่ก็เป็นเพราะในขณะที่ออกแบบบอร์ดพินบางตัวจะผิดนัด
ตอนนี้สำหรับบางแอพพลิเคชั่นเราต้องการพินมากกว่า 30 พินเช่นถ้าเราต้องการออกแบบ LED CUBE ขนาด 5x5x5 ดังนั้นเราต้องใช้ 5x5 + 5 = 30 พิน ในกรณีเช่นนี้เราใช้ชิปตัวแปลงอนุกรมกับขนานหรือ shift register ชิปทะเบียนกะรับข้อมูลจากบอร์ด UNO แบบอนุกรมและให้เอาต์พุตในการกำหนดค่าแบบขนาน 8 บิต
ส่วนประกอบที่จำเป็น
ฮาร์ดแวร์:บอร์ด Arduino uno, พินเชื่อมต่อ, ตัวต้านทาน220Ω, LED (แปดชิ้น), 74HC595 IC, บอร์ดขนมปัง
Sofware: Arduino ทุกคืน
แผนภาพวงจรและคำอธิบายการทำงาน
ที่นี่เราจะส่งข้อมูลในขนาดแปดบิตผ่านช่องทางเดียวเพื่อเปลี่ยนการลงทะเบียน shift register รับข้อมูลตามลำดับและเก็บข้อมูลนั้นไว้ในหน่วยความจำ เมื่อข้อมูลถูกส่งโดยคอนโทรลเลอร์เราจะส่งคำสั่งให้ shift register เพื่อแสดงข้อมูลที่เอาต์พุตด้วยคำสั่งนี้ shift register จะทำให้ข้อมูลขนานกัน
เอาต์พุตนี้แสดงโดย LED แปดดวงที่เชื่อมต่อที่เอาต์พุต
สำหรับการเชื่อมต่อ shift register กับ Arduino UNOเราต้องทำสองสิ่ง:
|
ก่อนอื่นเราต้องตั้งค่าขาสามขาของ UNO เป็นเอาต์พุต จากนั้นเราต้องเชื่อมต่อพินดิจิทัลพินนาฬิกาและสลักพินเข้ากับพินเอาต์พุตทั้งสามนี้ หลังจากนั้นเราต้องบอก UNO ว่าพินของชิปใดเชื่อมต่อกับพินบอร์ด UNO ทำได้โดยการเขียนคำสั่งง่ายๆ "
shiftOut(dataPin, clockPin, data);
" ข้อมูลที่นี่อาจเป็นเลขฐานสองหรือทศนิยมหรือฐานสิบหก ข้อมูลแปดบิตที่ต้องส่งจะถูกเขียนแทน "ข้อมูล"
ข้อมูลที่ส่งเสร็จสิ้นโดย:
ปิดการใช้งานสลักซึ่งจะบอกให้ชิปไม่แสดงเอาต์พุตในตอนนี้
เป็นเวลาแปดครั้งที่เราจะส่งข้อมูลด้วยนาฬิกาแบบอนุกรมดังนั้นนาฬิกาสูงข้อมูลต่ำนาฬิกาต่ำและอื่น ๆ
เปิดใช้งานสลักซึ่งจะบอกให้ชิปแสดงข้อมูลแปดบิต
การทำงานของARDUINO กับ SHIFT REGISTERอธิบายทีละขั้นตอนในรหัส C ที่ระบุด้านล่าง: