Câu trả lời:
Bạn đã sử dụng hết tất cả các chân tương tự của bạn là tốt? Chúng cũng có thể được sử dụng làm đầu vào / đầu ra kỹ thuật số bằng cách chỉ gọi chúng là chân kỹ thuật số chân 14 đến 19.
Sau khi bạn sử dụng tất cả chúng, bạn có thể cân nhắc sử dụng IC đăng ký thay đổi. Những con chip này sẽ chuyển đổi dữ liệu nối tiếp thành dữ liệu song song. Các phiên bản 8 bit sẽ lấy dữ liệu nối tiếp trên ba chân và xuất dữ liệu song song trên 8 chân, cung cấp cho bạn thêm 5 chân. Một lời giải thích rất hay được thực hiện bởi Dave Clausen tại NYC Resistor .
Thực sự có khả năng làm quá tải arduino của bạn. Không phải bằng cách sử dụng quá nhiều chân, mà bằng cách rút quá nhiều dòng điện từ các chân, bằng cách nối quá nhiều thứ vào chân của bạn. Bảng dữ liệu Atmega168 nói rằng các chân có dòng điện tối đa tuyệt đối là 40mA. Điều này sẽ tương đương với hai đèn LED song song. Bất cứ điều gì nhiều hơn một đèn LED (20mA) nên được chuyển qua một bóng bán dẫn hoặc mảng bóng bán dẫn. Điều này cũng được giải thích trong video được đề cập ở trên và bởi Tom Igoe .
Sparkfun bán một bộ ghép kênh kỹ thuật số / analog cho phép 16 chân được điều khiển bởi năm trên Arduino. Nó là hai chiều nên bạn cũng có thể sử dụng nó cho đầu vào.
Tôi đã từng đùa giỡn với việc sử dụng ... http://www.neufeld.newton.ks.us/electronics/?p=241 Mở rộng Arduino I / O bằng I2C. Trông có vẻ hứa hẹn thực sự, tôi chưa đi đặt hàng chip. Đây cũng là một hướng dẫn thực sự tốt về việc sử dụng I2C.
Nếu bạn cuối cùng nhận được một vi điều khiển khác, tôi thích sanguino vì ít nhất bốn lý do:
Arduino Mega không có nhiều chân PWM - 14, nhưng tôi không nghĩ rằng bạn muốn multiplex những.
-
* Sanguino dường như có giá 25 đô la, Arduino với giá 30 đô la, mặc dù bạn sẽ cần cáp USB-to-TTL 20 đô la nếu bạn cần sử dụng cổng USB để lập trình nó, nơi Arduino có USB tích hợp.
Tôi đã viết một thư viện để điều khiển các công tắc 1 dây DS2406.
Với một trong số này, bạn có thể sử dụng một pin duy nhất để chuyển đổi số lượng thiết bị lớn hơn nhiều. Tất nhiên, nó sẽ chậm hơn so với việc lật trực tiếp chân IO và nó sẽ sử dụng nhiều bộ nhớ hơn vì bạn phải giải quyết các thiết bị qua cổng đó (điều này có thể được trao đổi với tốc độ nhanh hơn nếu bạn muốn).
Có nhiều tùy chọn để mở rộng số lượng đầu vào và đầu ra bạn có sẵn. Đối với đầu vào tương tự, người ta thường sử dụng bộ ghép kênh tương tự (như 4051 , có sẵn như 74HC4051 và CD4051) cho phép bạn chuyển đổi giữa 8 nguồn tương tự bằng 3 đường kỹ thuật số và 1 đầu vào analog.
Một tùy chọn thường được sử dụng cho IO kỹ thuật số là thêm các thanh ghi dịch chuyển TTL (hoặc CMOS). Các thanh ghi thay đổi có hai loại chính là "nối tiếp, song song" (như 74HC595 ) rất hữu ích để mở rộng số lượng đầu ra kỹ thuật số mà dự án của bạn có và "song song, nối tiếp" (như 74HC165 ) cho phép bạn để thêm nhiều đầu vào kỹ thuật số.
Tom Igeo có một bài viết hay về Kiểm soát nhiều đầu ra từ một vi điều khiển
Bạn có thể quá tải đầu ra của Arduino bằng cách cố gắng 'fanout' quá xa. Mỗi IC bạn kết nối với một đầu ra sẽ lấy dòng điện từ đầu ra đó. Nếu bạn tải nhiều IC vào cùng một đầu ra (hoặc bộ đầu ra), chúng có thể cố gắng vẽ nhiều hơn đầu ra của Arduino có thể xử lý. Để khắc phục vấn đề này, bạn có thể đặt các chip đệm không đảo ngược (như 74LS07) giữa một số IC.
Nếu bạn đang lái LEDS, bạn có thể nhìn vào charlieplexing.
Sản phẩm này là một cách đơn giản và rẻ tiền để thêm chân vào Arduino của bạn. Có một thư viện mã nguồn mở dễ sử dụng để truy cập các chân mới: