Nhập từ bàn phím

Một phần của tài liệu Hướng dẫn lập trình PIC với arduino (Trang 66 - 71)

Bàn phím ma trận có thể được sử dụng làm thiết bị đầu vào, cho phép bật hoặc tắt đầu ra PLC khi các phím cụ thể được nhấn. Để minh họa khái niệm, một bàn phím màng tiêu chuẩn sẽ được sử dụng, cùng với thư viện bàn phím có thể tải xuống miễn phí , để thúc đẩy một loạt các đầu ra LED được chốt.

Hình 22. Mạch thử nghiệm và bản phác thảo, với đầu vào bàn phím và đầu ra LED được

chốt.

Lưu ý: Trước khi thử các ví dụ, bạn cần tải xuống và cài đặt thư viện Bàn phím

Arduino. Các các tệp ví dụ về bàn phím có sẵn với Phiên bản 0.6 trở lên của phần mềm plcLib .

8.1 Kết nối phần cứng

Chúng tôi sẽ sử dụng bảng mạch chính Arduino Uno cho các ví dụ, mà phần mềm plcLib định nghĩa là có bốn đầu vào (X0 – X3) và bốn đầu ra (Y0 – Y3). Bàn phím được chọn là bàn phím màng Adafruit với 12 phím, được sắp xếp dưới dạng ma trận với bốn hàng và ba cột, do đó yêu cầu thêm bảy chân IO .Tổng cộng. Hình ảnh sau đây cho thấy

Hình 23. Cấp phát IO cho Arduino Uno và bàn phím màng.

Một cách sắp xếp hệ thống dây bảng nguyên mẫu có thể được hiển thị bên dưới (được vẽ bằng cách sử dụng Fritzing ) .

Hình 25. Các kết nối bàn phím và đèn LED (bên trái), chi tiết hệ thống dây dẫn của bảng

8.2 Phần mềm

Danh sách sau sử dụng chương trình nhập bàn phím khá tiêu chuẩn và sử

dụng latchKey () tùy chỉnh chức năng bật hoặc tắt một bit đầu ra dựa trên các lần nhấn tạm thời của Đặt và Đặt lại được phân bổ chìa khóa.

/* Programmable Logic Controller Library for the Arduino and Compatibles

Matrix Keypad with On/Of Control of Latched LED Outputs Arduino Uno Pin Connections:

Input X0 - unused (Arduino pin A0) Input X1 - unused (Arduino pin A1) Input X2 - unused (Arduino pin A2) Input X3 - unused (Arduino pin A3)

Output - LED connected to output Y0 (Arduino pin 3) Output - LED connected to output Y1 (Arduino pin 5) Output - LED connected to output Y2 (Arduino pin 6) Output - LED connected to output Y3 (Arduino pin 9)

4X3 Matrix Keypad Connections: ROW1 - Arduino pin 8

ROW2 - Arduino pin 7 ROW3 - Arduino pin 4 ROW4 - Arduino pin 2 COL1 - Arduino pin 12 COL2 - Arduino pin 11 COL3 - Arduino pin 10

Software and Documentation:

http://www.electronics-micros.com/software-hardware/plclib-arduino/

*/

#include <Keypad.h> // Include the Keypad library #include <plcLib.h> // Include the plcLib library

char keyPress = 0; // Holds the currently pressed key value (if any) const byte ROWS = 4; // Keypad has four rows const byte COLS = 3; // Keypad has three columns

// Define the Keymap char keys[ROWS][COLS] = {

{'1','2','3'}, {'4','5','6'},

{'7','8','9'}, {'*','0','#'} };

// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins. byte rowPins[ROWS] = { 8, 7, 4, 2 };

// Connect keypad COL0, COL1 and COL2 to these Arduino pins. byte colPins[COLS] = { 12, 11, 10 };

// Create the Keypad

void setup() {

setupPLC(); // Define input / output pins }

void loop() {

keyPress = kpd.getKey(); // Read key pressed (if any)

latchKey('1', '2', Y0); // Keyboard latch, Set = '1', Reset = '2', // output = Y0 (pin 3)

latchKey('3', '4', Y1); // Keyboard latch, Set = '3', Reset = '4', // output = Y1 (pin 5)

latchKey('5', '6', Y2); // Keyboard latch, Set = '5', Reset = '6', // output = Y2 (pin 6)

latchKey('7', '8', Y3); // Keyboard latch, Set = '7', Reset = '8', // output = Y3 (pin 9)

}

// Keypad-based Set-Reset latch, outputting to a pin. unsigned int latchKey(char en, char dis, int outPin) { if(keyPress) {

if (keyPress == en) { digitalWrite(outPin, HIGH); }

if (keyPress == dis) { digitalWrite(outPin, LOW); }

} }

Liệt kê 11. Bàn phím ma trận với Điều khiển Bật / Tắt các đầu ra LED được chốt (Nguồn:

Tệp> Ví dụ> plcLib> Bàn phím> LedOnOff)

Tác dụng tổng thể của bốn lệnh latchKey () trong bản phác thảo trên là kích hoạt các đèn LED được kết nối với đầu ra Y0 , Y1 , Y2 hoặc Y3 khi các phím '1', '3', '5' hoặc '7' được nhấn, với các phím '2', '4', '6' và '8' xoay đầu ra tương ứng lại tắt.

Một thay đổi nhỏ đối với phân bổ công tắc cho phép một phím đầu vào duy nhất hoạt động như một thiết lập lại chính, như được hiển thị trong

phần trích sau.

void loop() {

keyPress = kpd.getKey(); // Read key pressed (if any)

latchKey('1', '*', Y0); // Keyboard latch, Set = '1', Reset = '*', // output = Y0 (pin 3)

latchKey('2', '*', Y1); // Keyboard latch, Set = '2', Reset = '*', // output = Y1 (pin 5)

latchKey('3', '*', Y2); // Keyboard latch, Set = '3', Reset = '*', // output = Y2 (pin 6)

latchKey('4', '*', Y3); // Keyboard latch, Set = '4', Reset = '*', // output = Y3 (pin 9) }

Liệt kê 12. Sửa đổi khóa đặt lại chính (Nguồn: Tệp> Ví dụ> plcLib> Bàn phím> LedStop)

Cũng có thể lưu trữ bit đầu ra chốt trong một biến do người dùng xác định, thay vì gửi trực tiếp đến một chân đầu ra. Một ví dụ dựa trên cách tiếp cận này được đưa ra trong bản phác thảo ví dụ LedVariable , trong khi cách tiếp cận cơ bản được thảo luận trong phần Sử dụng biến trong chương trình .

Một phần của tài liệu Hướng dẫn lập trình PIC với arduino (Trang 66 - 71)

Tải bản đầy đủ (DOCX)

(137 trang)
w