Mục lục:

Đăng ký Shift 74HC164 và Arduino của bạn: 9 bước
Đăng ký Shift 74HC164 và Arduino của bạn: 9 bước

Video: Đăng ký Shift 74HC164 và Arduino của bạn: 9 bước

Video: Đăng ký Shift 74HC164 và Arduino của bạn: 9 bước
Video: The Basic Starter Arduino UNO #2. Blink 2024, Tháng mười một
Anonim
Đăng ký Shift 74HC164 và Arduino của bạn
Đăng ký Shift 74HC164 và Arduino của bạn
Đăng ký Shift 74HC164 và Arduino của bạn
Đăng ký Shift 74HC164 và Arduino của bạn

Thanh ghi dịch chuyển là một phần rất quan trọng của logic kỹ thuật số, chúng hoạt động như chất kết dính giữa thế giới song song và nối tiếp. Chúng giảm số lượng dây, sử dụng pin và thậm chí giúp giảm tải cho cpu của bạn bằng cách có thể lưu trữ dữ liệu của chúng. Cái mà tôi sẽ thảo luận hôm nay là 74HC164 8 bit, nối tiếp song song, không chốt, thanh ghi dịch chuyển. Đối với một người, nó là một trong những thanh ghi dịch chuyển cơ bản nhất hiện có, giúp tìm hiểu về nó dễ dàng hơn, nhưng nó chỉ tình cờ là cái duy nhất tôi có (lol!) Hướng dẫn này bao gồm cách thức hoạt động của con chip này, cách nối dây. và giao diện nó với một arduino bao gồm một số bản phác thảo mẫu và mạch dẫn. Tôi hy vọng tất cả các bạn sẽ thích!

Bước 1: Vậy, Thanh ghi Shift là gì?

Vậy, Thanh ghi Shift là gì?
Vậy, Thanh ghi Shift là gì?

Như đã đề cập trước đó, chúng có tất cả các hương vị khác nhau và tôi cũng đã đề cập rằng tôi đang sử dụng 74HC164 8 bit, nối tiếp song song, không chốt, thanh ghi dịch chuyển, vậy tất cả điều đó có nghĩa là gì?!? Đầu tiên, tên 74 - có nghĩa là một phần của họ logic 74xx, và vì logic của nó không thể điều khiển trực tiếp rất nhiều dòng điện (16-20ma cho toàn bộ chip là phổ biến), nó chỉ truyền tín hiệu xung quanh, nhưng điều đó không có nghĩa tín hiệu đó sẽ không đến bóng bán dẫn có thể chuyển tải dòng điện cao hơn. HC có nghĩa là thiết bị cmos tốc độ cao của nó, bạn có thể đọc về điều đó trên liên kết bên dưới, nhưng những gì bạn cơ bản cần biết về điều đó là nó thấp thiết bị điện và sẽ chạy từ 2 đến 5 volt (vì vậy nếu bạn sử dụng arduino 3,3 volt thì vẫn ổn) Ngoài ra nó có thể hoạt động bình thường ở tốc độ cao con chip cụ thể này có tốc độ điển hình là 78mhz, nhưng bạn có thể đi chậm hoặc nhanh (cho đến khi nó bắt đầu hoạt động) như bạn muốn. Một thanh ghi shift được tạo thành từ các mạch flip flop, một flip flop là 1 bit bộ nhớ, cái này ha s 8 (hoặc 1 byte bộ nhớ). Vì nó là bộ nhớ, nếu bạn không cần cập nhật thanh ghi, bạn có thể ngừng "nói chuyện" với nó và nó sẽ vẫn ở trạng thái bất kỳ bạn đã để nó, cho đến khi bạn "nói chuyện" với nó một lần nữa hoặc thiết lập lại nguồn. Các thanh ghi dịch chuyển chuỗi logic 7400 khác có thể đi song song tối đa 16 bit nối tiếp Điều này có nghĩa là arduino của bạn sẽ gửi dữ liệu nối tiếp (bật tắt từng xung) và thanh ghi shift đặt từng bit vào đúng chân đầu ra. Mô hình này chỉ yêu cầu 2 dây để điều khiển, vì vậy bạn có thể sử dụng 2 chân kỹ thuật số trên arduino và ngắt 2 chân đó ra 8 đầu ra kỹ thuật số khác. (ví dụ: gamepad NES) không được chốt Đây có thể là lỗi của chip này nếu bạn cần. Khi dữ liệu đi vào thanh ghi dịch chuyển qua nối tiếp, nó sẽ hiển thị trên chân đầu ra đầu tiên, khi xung đồng hồ đi vào, bit đầu tiên sẽ dịch chuyển qua 1 nơi, tạo ra hiệu ứng cuộn trên các đầu ra, ví dụ: 00000001 sẽ hiển thị trên các đầu ra như 101001000100001000001000000100000001Nếu bạn nói chuyện với các thiết bị logic khác đang chia sẻ cùng một đồng hồ và không mong đợi điều này, nó có thể gây ra sự cố. Các thanh ghi dịch chuyển đã chốt có thêm một bộ nhớ, vì vậy khi dữ liệu được nhập xong vào thanh ghi, bạn có thể lật một công tắc và hiển thị kết quả đầu ra, nhưng nó sẽ thêm một dây, phần mềm và những thứ khác để theo kịp. chúng tôi đang điều khiển màn hình LED, hiệu ứng cuộn xảy ra nhanh đến mức bạn không thể nhìn thấy nó (ngoại trừ khi bạn bật chip lần đầu tiên) và khi byte nằm trong thanh ghi dịch chuyển thì không còn cuộn nữa. và ma trận điểm 16LED 4x4 với chip này và phần mềm trên arduino chỉ sử dụng 2 chân kỹ thuật số (+ nguồn và mặt đất)

Bước 2: Đấu dây và vận hành cơ bản

Hệ thống dây điện và vận hành cơ bản
Hệ thống dây điện và vận hành cơ bản
Hệ thống dây điện và vận hành cơ bản
Hệ thống dây điện và vận hành cơ bản

Hệ thống dây điện 74HC164 là một chip 14 chân, nó có 4 chân đầu vào, 8 chân đầu ra, nguồn và đất, vì vậy hãy bắt đầu từ trên cùng. Chân 1 và 2 đều là đầu vào nối tiếp, chúng được thiết lập như một cổng AND logic, có nghĩa là cả hai đều phải ở mức logic cao (tức là 5 vôn) để bit được xem là 1, trạng thái thấp (0 vôn) trên một trong hai sẽ được đọc là số không. Chúng tôi không thực sự cần điều này và nó dễ xử lý hơn trong phần mềm, vì vậy hãy chọn một cái và gắn nó với V + để nó luôn có giá trị cao. Tôi chọn sử dụng một jumper từ chân 1 đến chân 14 (V +) vì bạn chỉ có thể bật một jumper trên breadboard qua chip. Một đầu vào nối tiếp còn lại (chân 2 trong sơ đồ của tôi) sẽ chuyển đến chân kỹ thuật số 2 của arduino. Chân 3, 4, 5 và 6 của 74HC164 là 4 byte đầu tiên của đầu ra. Pin 7 kết nối với đất là chân đồng hồ, đây là cách thanh ghi shift biết bit nối tiếp tiếp theo đã sẵn sàng để nó đọc, nó phải được kết nối với chân kỹ thuật số 3 trên arduino., bạn có tùy chọn để sử dụng nó, nhưng không có gì trong điều này không thể hiểu được, vì vậy hãy buộc nó vào V + chân 10, 11 12 và 13 là 4 byte cuối cùng của chân ra 14 là năng lượng của chip Hoạt động Đầu tiên bạn cần đặt đầu vào nối tiếp của thanh ghi (chân số 2 trên arduino) cao hay thấp, tiếp theo bạn cần lật chân đồng hồ (chân số 3) từ thấp lên cao, thanh ghi shift sẽ đọc dữ liệu trên đầu vào nối tiếp và dịch chuyển các chân đầu ra bằng cách 1, lặp lại 8 lần và bạn đã đặt tất cả 8 đầu ra. Điều này có thể được thực hiện bằng tay với vòng lặp for và ghi kỹ thuật số trong arduino IDE, nhưng kể từ khi t của anh ấy là một giao tiếp cấp phần cứng (SPI) rất phổ biến, chúng có một chức năng duy nhất thực hiện điều đó cho bạn. shiftOut (dataPin, clockPin, bitOrder, value) Chỉ cần cho nó biết nơi dữ liệu và chân đồng hồ được kết nối với arduino, cách nào để gửi dữ liệu và gửi cái gì, và nó sẽ được chăm sóc cho bạn (tiện dụng)

Bước 3: Dự án

Dự án
Dự án

Được rồi, đủ bài giảng và lý thuyết, hãy làm một số nội dung thú vị với con chip này! Có 3 dự án để thử trong tài liệu hướng dẫn này, 2 dự án đầu tiên rất dễ dàng và có thể hoàn thành trong giây lát. Loại thứ ba, ma trận LED 4x4, đòi hỏi nhiều thời gian và suy nghĩ hơn để xây dựng, do hệ thống dây dẫn dẫn. tương thích (5v) 1 * 330 ohm 1/4 watt điện trở 8 * đầu ra bình thường dây nhảy 12 * của đèn LED màu đỏ Dự án 2: Bộ điều khiển hiển thị '2 Wire' 7 đoạn 1 * 74HC164 Thanh ghi dịch chuyển1 * breadboard không hàn1 * arduino hoặc tương thích với arduino (5v) 1 * 330 ohm 1/4 watt điện trở 1 * cathode chung hiển thị 7 đoạn Điện trở 1/4 watt 8 * 1Kohm Điện trở 1/8 watt (hoặc lớn hơn) bóng bán dẫn 8 * NpN (2n3904 trở lên) Đèn LED đỏ đầu ra bình thường 16 * là phương tiện để xây dựng nó và điều chỉnh công suất 5 volt có thể xử lý 160 + ma (bạn có thể bật tất cả các đèn LED cùng một lúc như đèn phanh)

Bước 4: Dự án 1 [pt 1]: Phần cứng bộ điều khiển màn hình LED Bargraph '2 dây'

Dự án 1 [pt 1]: Phần cứng bộ điều khiển màn hình LED Bargraph '2 dây'
Dự án 1 [pt 1]: Phần cứng bộ điều khiển màn hình LED Bargraph '2 dây'
Dự án 1 [pt 1]: Phần cứng bộ điều khiển màn hình LED Bargraph '2 dây'
Dự án 1 [pt 1]: Phần cứng bộ điều khiển màn hình LED Bargraph '2 dây'

Kết nối arduino và thanh ghi shift theo sơ đồ, tôi đã có một màn hình hiển thị vạch 10 đoạn sẵn sàng để sử dụng breadboard và đó là những gì bạn sẽ thấy trong hình ảnh, nhưng bạn có thể làm điều tương tự với từng đèn LED trên trang thứ hai Tôi đã tuyên bố rằng đây không phải là thiết bị điều khiển, mà chúng là thiết bị logic, với một lượng nhỏ dòng điện có thể đi qua chúng. Để chạy 8 đèn LED, đồng thời giữ cho mạch đơn giản và không nấu thanh ghi ca, đòi hỏi chúng ta phải hạn chế dòng điện khá nhiều. đất cung cấp chúng cần phải đi qua một điện trở 330 ohm, giới hạn tổng lượng dòng điện mà tất cả đèn LED có thể sử dụng ở mức 10ma (ở 5 vôn) Điều này khiến đèn LED ở trạng thái trông ốm yếu nhưng chúng sáng lên và do đó phục vụ cho ví dụ này, để điều khiển đèn LED ở dòng điện thích hợp của chúng, bạn sẽ cần phải lắp một bóng bán dẫn vào nơi thanh ghi shift có thể bật / tắt nguồn dòng cao hơn (xem dự án 3) Chân dữ liệu của thanh ghi shift (chân 2) cần để kết nối với chân kỹ thuật số arduino # 2 Chân đồng hồ của thanh ghi shift (chân 8) cần kết nối với chân kỹ thuật số arduino # 3

Bước 5: Dự án 1 [pt 2]: Phần mềm điều khiển màn hình LED Bargraph '2 dây'

Dự án 1 [pt 2]: Phần mềm điều khiển màn hình LED Bargraph '2 dây'
Dự án 1 [pt 2]: Phần mềm điều khiển màn hình LED Bargraph '2 dây'
Dự án 1 [pt 2]: Phần mềm điều khiển màn hình LED Bargraph '2 dây'
Dự án 1 [pt 2]: Phần mềm điều khiển màn hình LED Bargraph '2 dây'

Ví dụ 1: Mở tệp "_164_bas_ex.pde" Bên trong arduino IDE, Đây là một bản phác thảo đơn giản chỉ cho phép bạn xác định bật hoặc tắt đèn LED trong màn hình vạch 2 dòng đầu tiên xác định các số pin mà chúng tôi sẽ sử dụng cho dữ liệu và đồng hồ, tôi dùng #define over const integer, tôi thấy dễ nhớ hơn, và không có lợi thế cho cái này hay cái kia khi đã biên dịch dữ liệu #define 2 # định nghĩa xung nhịp 3 tiếp theo là hàm void setup, nó chỉ chạy một lần nên arduino quay trên, đặt sổ đăng ký ca và không có gì khác để làm. Bên trong hàm void setup, chúng tôi đặt đồng hồ và chân dữ liệu làm chân OUTPUT, sau đó sử dụng hàm shiftOut, chúng tôi gửi dữ liệu đến thanh ghi shift void setup () {pinMode (clock, OUTPUT); // làm cho chân đồng hồ trở thành pinMode đầu ra (data, OUTPUT); // làm cho chân dữ liệu trở thành một đầu ra shiftOut (data, clock, LSBFIRST, B10101010); // gửi giá trị nhị phân này đến thanh ghi shift} Trong hàm shiftOut, bạn có thể thấy dữ liệu đối số của nó là chân dữ liệu, đồng hồ là chân đồng hồ LSBFIRST đề cập đến thứ tự của nó, khi viết nó ra bằng ký hiệu nhị phân (Bxxxxxxxx) thứ 7 phần tử vượt qua B là Bit ít tín hiệu nhất Đầu tiên, phần tử này được nạp vào đầu tiên để nó kết thúc ở đầu ra cuối cùng khi tất cả 8 bit được đưa vào B10101010 là giá trị Nhị phân được gửi đến thanh ghi dịch chuyển và nó sẽ bật sáng mọi đèn lẻ, hãy thử chơi với các giá trị khác nhau để bật hoặc tắt các mẫu khác nhau và cuối cùng là một vòng lặp rỗng rỗng (bởi vì bạn cần một vòng lặp ngay cả khi bạn không sử dụng nó) void loop () {} // vòng lặp trống cho bây giờ Ví dụ 2: 8 dòng đầu tiên là giống như 8 dòng đầu tiên của ví dụ đầu tiên, trên thực tế chúng sẽ không thay đổi đối với bất kỳ dự án nào khác, vì vậy #define data 2 # define clock 3void setup () {pinMode (clock, OUTPUT); // làm cho chân đồng hồ trở thành pinMode đầu ra (data, OUTPUT); // làm cho chân dữ liệu trở thành đầu ra Nhưng bây giờ trong thiết lập void có vòng lặp for đếm 8, nó lấy một byte trống và dịch chuyển 1 bit vào cùng một lúc bắt đầu từ bit ngoài cùng bên trái và di chuyển sang phải. Điều này ngược lại so với ví dụ đầu tiên khi chúng tôi bắt đầu từ bit ngoài cùng bên phải và làm việc bên trái, nhưng sử dụng MSBFIRST, hàm shift out sẽ gửi dữ liệu theo cách chính xác Ngoài ra, chúng tôi thêm độ trễ trong vòng lặp for để nó chậm lại đủ để có thể nhìn thấy được. for (int i = 0; i <8; ++ i) // for 0 - 7 do {shiftOut (data, clock, MSBFIRST, 1 << i); // bit dịch chuyển một giá trị logic cao (1) bởi i delay (100); // trì hoãn 100ms hoặc bạn sẽ không thể nhìn thấy nó}} void loop () {} // vòng lặp trống để tải tập lệnh lên và bây giờ bạn sẽ thấy thanh biểu đồ sáng lên từng đèn một

Bước 6: Dự án 2: Bộ điều khiển hiển thị phân đoạn '2 dây' 7

Dự án 2: Bộ điều khiển hiển thị phân đoạn '2 dây' 7
Dự án 2: Bộ điều khiển hiển thị phân đoạn '2 dây' 7
Dự án 2: Bộ điều khiển hiển thị phân đoạn '2 dây' 7
Dự án 2: Bộ điều khiển hiển thị phân đoạn '2 dây' 7

Nhìn vào sơ đồ chân của màn hình 7 đoạn của bạn (tôi chỉ có một cái kép nhưng chỉ sử dụng một nửa) và sử dụng hình vẽ bên dưới để kết nối mỗi đoạn với đúng bit trên thanh ghi dịch chuyển bit 1 = chân 3bit 2 = chân 4bit 3 = chân 5bit 4 = chân 6bit 5 = chân 10bit 6 = chân 11bit 7 = chân 12bit 8 = chân 13 (nếu bạn muốn sử dụng dấu thập phân) Và cực âm của màn hình thông qua điện trở 330ohm và để cấp nguồn, hãy mở bảy_seg_demo.pde trong arduino ID Đầu tiên bạn thấy nơi chúng tôi xác định dữ liệu và các chân đồng hồ # xác định dữ liệu 2 # xác định đồng hồ 3 Tiếp theo, chúng tôi đặt tất cả các mẫu charater ở dạng nhị phân, điều này khá dễ dàng, hãy nhìn vào hình vẽ bên dưới, nếu bạn cần phân đoạn giữa nhập một cái, tiếp theo bạn có cần phân đoạn trên cùng không, nếu vậy hãy nhập một phân đoạn khác, hãy tiếp tục làm điều này cho đến khi bạn bao gồm tất cả 8 phân đoạn, lưu ý rằng bit ngoài cùng bên phải của tôi (bit 8) luôn là 0, vì tôi không bao giờ bật số thập phân chỉ trỏ. byte 0 = B01111110; byte một = B00000110; byte hai = B11011010; byte ba = B11010110; byte bốn = B10100110; byte năm = B11110100; byte sáu = B11111100; byte bảy = B01000110; byte tám = B11111110; byte chín = B11110110; tiếp theo trong thiết lập void, chúng tôi đặt dữ liệu và chân đồng hồ của chúng tôi thành đầu ra void setup () {pinMode (clock, OUTPUT); // làm cho chân đồng hồ trở thành pinMode đầu ra (data, OUTPUT); // đặt chân dữ liệu thành output3} thì trong vòng lặp void, chúng ta sử dụng shiftOut để hiển thị mỗi mẫu (số) đợi 1/2 giây và hiển thị tiếp theo, 0 đến 9, vì nó được thực hiện trong hàm void loop nên nó sẽ được tính 0-9 và lặp lại mãi mãi. void loop () {shiftOut (data, clock, LSBFIRST, zero); chậm trễ (500); shiftOut (dữ liệu, đồng hồ, LSBFIRST, một); chậm trễ (500); shiftOut (dữ liệu, đồng hồ, LSBFIRST, hai); chậm trễ (500); shiftOut (dữ liệu, đồng hồ, LSBFIRST, ba); chậm trễ (500); shiftOut (dữ liệu, đồng hồ, LSBFIRST, bốn); chậm trễ (500); shiftOut (dữ liệu, đồng hồ, LSBFIRST, năm); chậm trễ (500); shiftOut (dữ liệu, đồng hồ, LSBFIRST, sáu); chậm trễ (500); shiftOut (dữ liệu, đồng hồ, LSBFIRST, bảy); chậm trễ (500); shiftOut (dữ liệu, đồng hồ, LSBFIRST, tám); chậm trễ (500); shiftOut (dữ liệu, đồng hồ, LSBFIRST, chín); trì hoãn (500);}

Bước 7: Dự án 3 [pt 1]: Màn hình ma trận Led 4x4 '2 dây'

Dự án 3 [pt 1]: Màn hình ma trận LED 4x4 '2 dây'
Dự án 3 [pt 1]: Màn hình ma trận LED 4x4 '2 dây'
Dự án 3 [pt 1]: Màn hình ma trận LED 4x4 '2 dây'
Dự án 3 [pt 1]: Màn hình ma trận LED 4x4 '2 dây'

Dự án ma trận LED 4x4 khá phức tạp hơn một chút, nhưng nó gần như là tất cả trong quá trình xây dựng, tôi chọn làm cho tôi hàn trên perfboard, nhưng nó sẽ có thể tái tạo trên breadboard, chỉ cần cách xa hơn rất nhiều. khác ở chỗ thanh ghi dịch chuyển không trực tiếp điều khiển đèn led, thay vào đó các đầu ra thanh ghi dịch chuyển được gửi qua điện trở 1Kohm đến chân đế của bóng bán dẫn NpN, khi đầu ra của bit cao, nó cho phép đủ dòng điện và điện áp đi vào bóng bán dẫn để chuyển đổi kết nối giữa bộ thu và bộ phát, các bộ thu được gắn với một điện áp 5 volt được điều chỉnh "chắc chắn". Các bộ phát của bóng bán dẫn được kết nối với điện trở 150 ohm và các điện trở được gắn với các thông báo của 4 đèn led liên tiếp và giới hạn hàng ở mức 20ma, mặc dù khi vẽ hình ảnh trên màn hình, chỉ có 1 đèn LED được bật tại một thời điểm và do đó ở gần độ sáng đầy đủ (gần becu vì chúng bật và tắt rất nhanh để tạo nên toàn bộ hình ảnh) Có 4 hàng và 4 cột, mỗi hàng có một điện trở và một bóng bán dẫn, trên mỗi cột, các cực âm của đèn LED được gắn với nhau, chạy vào bộ thu của bóng bán dẫn, mà cơ sở của nó cũng được điều khiển bởi thanh ghi dịch chuyển, và cuối cùng là nối đất. Phiên bản lớn của schematic www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

Bước 8: Dự án 3 [pt 2]: Màn hình ma trận LED '2 dây' 4x4

Dự án 3 [pt 2]: Màn hình ma trận LED '2 dây' 4x4
Dự án 3 [pt 2]: Màn hình ma trận LED '2 dây' 4x4
Dự án 3 [pt 2]: Màn hình ma trận LED 4x4 '2 dây'
Dự án 3 [pt 2]: Màn hình ma trận LED 4x4 '2 dây'
Dự án 3 [pt 2]: Màn hình ma trận LED '2 dây' 4x4
Dự án 3 [pt 2]: Màn hình ma trận LED '2 dây' 4x4

Thanh ghi dịch chuyển điều khiển cả cực dương và cực âm của đèn LED ở định dạng YX, hãy xem bit 1 = cột 1 (ngoài cùng bên phải) bit 2 = cột 2 bit 3 = cột 3 bit 4 = cột 4 bit 5 = hàng 1 (trên cùng) bit 6 = hàng 2bit 7 = hàng 3bit 8 = hàng 4 Để tạo một hình ảnh, hãy vẽ một hình vuông 4x4 trên giấy kẻ ô vuông và điền vào những ô bạn muốn hiển thị, tiếp theo hãy tạo một bảng YX. Dưới đây, bạn sẽ thấy một ánh xạ cho một mô phỏng, cũng như một bản đồ tốt nhất có thể làm trên 4x4 "pixel" Đối với mỗi phần được điền vào, tôi viết nó ở cột (Y) nào, sau đó nó nằm ở hàng nào (X) Bây giờ hãy mở ra tệp _4x4.pde trong arduino IDE, bạn sẽ thấy 2 người bạn cũ của chúng tôi #define data 2 # define clock 3 rồi đến một mảng các số nguyên int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; Nếu bạn nhìn nó chỉ là một danh sách các tọa độ YX được viết ra của tôi, sẽ rất khó khăn khi chuyển đổi các giá trị đó bằng tay và chúng ta có một máy tính … hãy làm điều đó! Tiếp tục là thiết lập void nơi chúng ta thực hiện đồng hồ và chân dữ liệu OUTPUTS void setup () {pinMode (clock, OUTPUT); // làm cho chân đồng hồ trở thành pinMode đầu ra (data, OUTPUT); // tạo chân dữ liệu thành output3} Và một vòng lặp void có vẻ khó hiểu, để bắt đầu mọi thứ, chúng ta cần khai báo một số biến cục bộ void loop () {int Y; int X; byte ra; Sau đó, một vòng lặp for, vòng lặp này cần phải dài bằng số lượng mục nhập trong mảng img, đối với hình ảnh này, tôi chỉ sử dụng 6 pixel, do đó tạo thành 12 tọa độ YX. Tôi làm cho nó bỏ qua mọi số khác bằng cách sử dụng i + = 2, vì chúng tôi đọc 2 tọa độ trên mỗi vòng lặp for (int i = 0; i <12; i + = 2) // số điểm trong mảng img, trường hợp này là 12 {Bây giờ chúng ta đọc truy vấn Y tại trong mảng và trừ một giá trị khỏi giá trị của nó, bởi vì các byte không bắt đầu từ một, chúng bắt đầu từ 0, nhưng chúng tôi đã đếm từ 1 // lấy cặp dây YX đầu tiên Y = (img - 1); // trừ đi một vì số bit bắt đầu từ 0 Tiếp theo, chúng ta đọc truy vấn X tại [i + 1] trong mảng và trừ một truy vấn khỏi giá trị của nó, vì lý do tương tự X = (img [i + 1] - 1); Sau khi chúng ta có các giá trị YX của pixel, chúng ta thực hiện một số phép toán hoặc bitwise và dịch chuyển sang trái. và thêm 4 nó là bit 8 (MSB), nhìn lại biểu đồ… bit 1 = cột 1 (ngoài cùng bên phải) bit 2 = cột 2bit 3 = cột 3bit 4 = cột 4bit 5 = hàng 1 (trên cùng) bit 6 = hàng 2bit 7 = row 3bit 8 = row 4Bit 8 là hàng cuối cùng Tiếp theo giá trị Y cũng được chuyển sang trái, lần này chỉ là tự nó, không có gì được thêm vào. Cuối cùng cả hai được hoặc ghép lại thành 1 byte thay vì 2 nửa byte (nibbles), sử dụng bitwise hoặc (ký hiệu |) lấy hai byte và về cơ bản cộng chúng lại với nhau, giả sử X = 10000000Y = 00000001 -------------------- HOẶC = 10000001row 4 cột 1 out = 1 << (X + 4) | 1 << Y; Và cuối cùng shiftOut để hiển thị hình ảnh hiện tại và tiếp tục làm điều đó cho đến khi chúng ta không còn dữ liệu nào nữa trong mảng… hãy trì hoãn một chút và lặp lại mãi mãi, vì chúng ta đang chuyển dữ liệu sang bên trái và chúng ta cần MSB ở chân đầu ra cuối cùng của sổ đăng ký ca gửi nó ra trước. shiftOut (dữ liệu, đồng hồ, MSBFIRST, out); // chuyển byte ra khỏi thanh ghi delay (1); // delay nó abit để nó có cơ hội để lại một đốm sáng trong mắt bạn Hãy thoải mái tạo hình ảnh và hiệu ứng của riêng bạn, Có 3 tệp mẫu, hình mặt cười và bàn cờ (trông giống sọc hơn), và cuối cùng là một nhà sản xuất lấp lánh ngẫu nhiên

Bước 9: Kết luận

Phần kết luận
Phần kết luận
Phần kết luận
Phần kết luận
Phần kết luận
Phần kết luận

Trên tất cả, đây là một con chip nhỏ khá tiện dụng và tôi rất vui vì đã loại bỏ nó khỏi một thiết bị điện tử cũ bỏ vào thùng rác. Điều gì đang xảy ra cực kỳ hữu ích cho những người có tư duy hình ảnh như tôi. Cũng xin thứ lỗi cho mã của tôi, tôi mới chỉ có arduino kể từ tuần thứ ba của tháng 10, và đó là một khóa học khá lớn. Nhưng đó là điều tuyệt vời của hệ thống, nếu bạn ngồi xuống và làm việc với nó, đầy đủ các tính năng gọn gàng của nó giúp việc kiểm soát thế giới bằng vi điều khiển 8 bit trở nên khá dễ dàng. đọc, tôi hy vọng bạn đã học được rất nhiều

Đề xuất: