Có thể nhấn một nút từ Arduino và máy tính của tôi sẽ nhận được một sự kiện quan trọng?


7

Ý tưởng của tôi có vẻ dễ dàng:

Tôi kết nối một nút với arduino, sau đó viết một số mã và tải nó lên arduino. Sau đó, tôi mở notepad (hoặc bất kỳ trình soạn thảo nào khác) trên máy tính của mình. Khi tôi nhấn nút, sẽ có một ký tự "A" được hiển thị trong notepad.

Tôi đã thử với Arduino uno của mình và sử dụng Serial.write/printchức năng để gửi một Acổng nối tiếp 9600, nhưng có vẻ như ký tự Achỉ hiển thị trong GUI màn hình nối tiếp.

Câu hỏi của tôi là:

  1. "Arduino uno" có ổn để thực hiện điều này không?
  2. Nếu không, tôi nên sử dụng bảng nào khác?
  3. Serial.write/printchức năng chính xác?
  4. Hoặc tôi sẽ sử dụng Keyboard.???chức năng?
  5. Tôi có phải viết một ứng dụng chạy trên máy tính và lắng nghe cổng nối tiếp và phát ra một sự kiện quan trọng không? (buồn quá)

Câu trả lời:


9

Uno không phải là hội đồng tốt nhất cho việc này. Bạn có thể có được một nơi nào đó với dự án Virtual USB nhưng có một vài bảng phù hợp hơn cho việc này.

Đó là Arduino Leonardo, Micro và Do. Trong đó, bạn có thể sử dụng Thư viện Bàn phím giống như bạn đang sử dụng thư viện Nối tiếp. Trang này có một ví dụ rất giống với dự án của bạn:

void setup() {
  // make pin 2 an input and turn on the 
  // pullup resistor so it goes high unless
  // connected to ground:
  pinMode(2, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  //if the button is pressed
  if(digitalRead(2)==LOW){
    //Send the message
    Keyboard.print("Hello!");
  }
}

4

Có một micro được thiết kế đặc biệt hơn cho mô phỏng bàn phím, tôi chưa thực hiện thử nghiệm nào với nó, nhưng nó rất phổ biến trong thế giới giả lập chuyến bay nơi các micro này được lắp đặt với các nút và công tắc và bộ mã hóa quay để mô phỏng buồng lái . Những đầu vào này được chuyển đổi thành đầu vào bàn phím (theo như tôi có thể thấy).

Có một số dự án chung ở đây: https://www.pjrc.com/teensy/projects.html

Một số nội dung cụ thể hơn về bàn phím: https://www.pjrc.com/teensy/usb_keyboard.html

Thông tin thêm về thanh thiếu niên trong môi trường arduino: https://www.pjrc.com/teensy/teensyduino.html

Cụ thể hơn về những gì bạn đang tìm kiếm, điều này có thể khá hữu ích: https://www.pjrc.com/teensy/td_keyboard.html

Tôi không đuổi bạn ra khỏi Arduino, nó chỉ là thứ khác để xem xét


1
Đi cho Tusky thực sự. Chúng nhỏ, rẻ và có thể được sử dụng giống như Arduinos 'chính thức'. Bạn có thể tiếp tục sử dụng trình soạn thảo của Arduino, vì vậy ngoài bảng sẽ không có gì thay đổi. Bạn không chỉ nhận được mô phỏng bàn phím, bạn cũng có thể giả vờ bạn là một con chuột, giao diện MIDI và nhiều thứ khác.
Tom

1

Ví dụ của bạn mô tả việc thu thập văn bản - điều đó có đáp ứng mục tiêu của bạn không hoặc bạn có cần tạo bất kỳ loại sự kiện quan trọng nào không? Nếu bạn không cần tạo các sự kiện hệ thống, bất kỳ trình giả lập thiết bị đầu cuối nào (không chỉ Arduino IDE) sẽ có thể nghe cùng một cổng đó và ghi nhật ký bất cứ điều gì nó nhận được vào một tệp.


Tôi cần nó là một số loại sự kiện quan trọng. Mục tiêu cuối cùng của tôi là tạo ra một bàn phím tùy chỉnh bằng arduino
Freewind

0

Kiểm tra video này, Arduino UNO dưới dạng bàn phím USB (thiết bị HID) [Bất cứ thứ gì Arduino] (ep 6) , vì tôi nghĩ đây là thứ bạn đang tìm kiếm.

Từ video youtube, bạn có thể nhận được các liên kết đến trang web thư viện và sơ đồ.

Bạn cần phải xây dựng một giao diện nhỏ để kết nối Arduino của bạn với PC. Tôi đã nhận nó cho Uno và Micro, nhưng các Arduinos khác với phần sụn mới nhất sẽ ổn.


1
Khi bạn liên kết với một nguồn bên ngoài, nó sẽ giúp ích nếu bạn tóm tắt liên kết (video trong trường hợp này) là gì hoặc cách nó giúp giải quyết vấn đề. Điều này đặc biệt hữu ích nếu liên kết "thối". Chúng tôi đang cố gắng xây dựng một nguồn tài nguyên lâu bền ở đây, cố gắng suy nghĩ lâu dài trong câu trả lời của bạn.
dlu

Nếu bạn có thể chỉnh sửa câu trả lời của mình để cung cấp các liên kết trong câu trả lời của bạn thì đó cũng là một ý tưởng tốt, cũng như một bản sao của sơ đồ, trích dẫn nguồn, nếu bản quyền cho phép điều đó, trong trường hợp video bị xóa.
Greenonline

-1

Tôi nghĩ bạn cũng cần phải cài đặt processing.

Xem liên kết này

Nó cho phép bạn lập trình phía máy tính của ứng dụng.


Ý bạn là tôi phải sử dụng một số ngôn ngữ lập trình để viết chương trình chạy bên phía máy tính? Tôi có phải sử dụng ngôn ngữ "xử lý" không? Tôi thấy nó thú vị, nhưng tôi chắc tại sao nó đặc biệt với Arduino?
Freewind

3
Xử lý, trong khi một bổ sung có giá trị cho kho vũ khí của bạn khi sử dụng Arduino, không cần thiết cho mục đích của bạn. Thay vào đó, nó sẽ làm cho mọi thứ quá phức tạp, nếu không nói là không thể.
Tom

-2

Tôi có một vấn đề tương tự Tôi đã xây dựng bàn phím 12 nút với Arduino và nó hoạt động rất tốt với USB. Bây giờ tôi cần sử dụng mô-đun bluetooth thay vì USB, nhưng tôi không thể tìm thấy một số mã cho phép tôi gửi báo chí từ Arduino đến PC của tôi .

Đây là mã của tôi mà tôi cần thay đổi cho mô-đun bluetooth CH-6 của mình, cảm ơn bạn đã giúp đỡ.

#include <Keyboard.h>
#include <Keypad.h>




const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the kpd
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the kpd

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

unsigned long loopCount;
unsigned long startTime;

void setup() {
    Serial.begin(9600);
    loopCount = 0;
    startTime = millis();

}


void loop() {

    loopCount++;
    if ( (millis()-startTime)>5000 ) {
        startTime = millis();
        loopCount = 0;
    }

    // Fills kpd.key[ ] array with up-to 10 active keys.
    // Returns true if there are ANY active keys.
    if (kpd.getKeys())
    {
        for (int i=0; i<LIST_MAX; i++)   // Scan the whole key list.
        {
            if ( kpd.key[i].stateChanged )   // Only find keys that have changed state.
            {
                switch (kpd.key[i].kstate) {  // Report active key state : IDLE, PRESSED, HOLD, or RELEASED
                    case PRESSED:
                    Keyboard.write(kpd.key[i].kchar);  



                    //Serial.print(kpd.key[i].kchar); //active keys number
                break;
                }
            }
        }
    }
}  // End loop

2
@MichelKeijzers Câu trả lời này đã được bỏ phiếu để xóa, không được chỉnh sửa và xóa khỏi hàng đợi LQP.
gre_gor

@gre_gor Bạn hoàn toàn đúng, tôi đã chỉnh sửa nó và sau đó đặt nó để xóa (một lần nữa).
Michel Keijzers
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.