在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于XIAO SAMD21開發板的數字鍵盤制作方案

柴火創客空間 ? 來源:柴火創客空間 ? 2024-09-06 10:02 ? 次閱讀

今天小編給大家帶來了來自印度的Arnov Sharma 制作的基于XIAO SAMD21的數字鍵盤項目,該項目可以通過按鍵在電腦OLED的屏幕上輸入0-9的阿拉伯數字,可以當作一個數字副鍵盤來使用。

這個項目的核心是 XIAO SAMD21 開發板和 XIAO 擴展板配對,其中包含一個板載 OLED 顯示屏,我們在這個項目中使用它來顯示按鈕按下。擴展板固定在3D打印的特制外殼上。外殼內包含了 9個12x12 毫米的觸覺按鈕。這些按鈕由在Fusion360中建模的支架部件牢固地固定。

材料清單

XIAO SAMD21開發板

XIAO擴展板

3D打印零件

12x12mm 點動按鈕*9

第一步:代碼實現

由Seeed Studio制造的 XIAO SAMD21 微控制器和 XIAO 擴展板構成了該項目的核心。它配備了豐富的外設,包括 OLED、RTC、SD 卡 Sot、無源蜂鳴器、復位/用戶按鈕、5V 伺服連接器和 Grove 連接器,用于將多個 Grove 設備與 XIAO 配對。它還包含一個電池充電 IC,用于將此設置與鋰電池作為電源進行分級。

項目的第一步相當簡單:我們將測試代碼上傳到 XIAO SAMD21 ,并利用擴展板的板載按鈕(連接到 D1)用作輸入數字 1 的小鍵盤。


#include         //TEST SKETCH
int buttonPin = 1;  // Set a button to any pin          




          
void setup()          
{          
  pinMode(buttonPin, INPUT_PULLUP);  // Set the button as an input          
  digitalWrite(buttonPin, HIGH);  // Pull the button high          
}          




          
void loop()          
{          
  if (digitalRead(buttonPin) == 0)  // if the button goes low          
  {          
    Keyboard.write('1');  // send a '1' to the computer via Keyboard HID          
    delay(500);  // delay so there aren't a kajillion z's          
  }          
}        
  
 

測試結束后,我們可以準備更多的功能,比如從 9 個按鈕中獲取輸入,并通過 XIAO 內部 SAMD21 微控制器的 HID 協議輸出數字。

以下為鍵盤中使用的主要代碼


#include




          
#include
#include
#include




          
#define OLED_WIDTH 128          
#defineOLED_HEIGHT64
          
#define OLED_ADDR   0x3C          
Adafruit_SSD1306display(OLED_WIDTH,OLED_HEIGHT);
          
int buttonPin1 = 0;            
int buttonPin2 = 1;           
int buttonPin3 = 2;           
int buttonPin4 = 3;           
int buttonPin5 = 6;           
int buttonPin6 = 7;           
int buttonPin7 = 8;           
int buttonPin8 = 9;           
intbuttonPin9=10;


          
void setup()          
{          
  pinMode(buttonPin1, INPUT_PULLUP);  // Set the button as an input          
  digitalWrite(buttonPin1, HIGH);  // Pull the bu11tton high          




          
  pinMode(buttonPin2, INPUT_PULLUP);  // Set the button as an input          
  digitalWrite(buttonPin2, HIGH);  // Pull the bu11tton high          




          
  pinMode(buttonPin3, INPUT_PULLUP);  // Set the button as an input          
  digitalWrite(buttonPin3, HIGH);  // Pull the bu11tton high          




          
  pinMode(buttonPin4, INPUT_PULLUP);  // Set the button as an input          
  digitalWrite(buttonPin4, HIGH);  // Pull the bu11tton high          




          
  pinMode(buttonPin5, INPUT_PULLUP);  // Set the button as an input          
  digitalWrite(buttonPin5, HIGH);  // Pull the bu11tton high          




          
  pinMode(buttonPin6, INPUT_PULLUP);  // Set the button as an input          
  digitalWrite(buttonPin6, HIGH);  // Pull the bu11tton high          




          
  pinMode(buttonPin7, INPUT_PULLUP);  // Set the button as an input          
  digitalWrite(buttonPin7, HIGH);  // Pull the bu11tton high          




          
  pinMode(buttonPin8, INPUT_PULLUP);  // Set the button as an input          
  digitalWrite(buttonPin8, HIGH);  // Pull the bu11tton high          




          
  pinMode(buttonPin9, INPUT_PULLUP);  // Set the button as an input          
digitalWrite(buttonPin9,HIGH);//Pullthebu11ttonhigh
          
  display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);          
  display.clearDisplay();           
}          




          
void loop()          
{          
  if (digitalRead(buttonPin1) == 0) // 01          
  {          
    Keyboard.write('1');            
              
  display.clearDisplay();          
  display.setTextSize(4);          
  display.setTextColor(WHITE);          
  display.setCursor(55, 20);          
  display.println("1");          
  display.display();          
  delay(500);            
  }          
    display.clearDisplay();          




          
  if (digitalRead(buttonPin2) == 0) // 02          
  {          
    Keyboard.write('2');            
              
  display.clearDisplay();          
  display.setTextSize(4);          
  display.setTextColor(WHITE);          
  display.setCursor(55, 20);          
  display.println("2");          
  display.display();                
  delay(500);            
  }          




          
display.clearDisplay();          




          
  if (digitalRead(buttonPin3) == 0)  // 03           
  {          
    Keyboard.write('3');           
              
  display.clearDisplay();          
  display.setTextSize(4);          
  display.setTextColor(WHITE);          
  display.setCursor(55, 20);          
  display.println("3");          
  display.display();          
  delay(500);            
  }          




          
display.clearDisplay();          




          
  if (digitalRead(buttonPin4) == 0)  // 04           
  {          
    Keyboard.write('4');           
              
  display.clearDisplay();          
  display.setTextSize(4);          
  display.setTextColor(WHITE);          
  display.setCursor(55, 20);          
  display.println("4");          
  display.display();          
  delay(500);            
  }            




          
display.clearDisplay();          




          
  if (digitalRead(buttonPin5) == 0)  // 05           
  {          
    Keyboard.write('5');           
              
  display.clearDisplay();          
  display.setTextSize(4);          
  display.setTextColor(WHITE);          
  display.setCursor(55, 20);          
  display.println("5");          
  display.display();          
  delay(500);            
}
          
display.clearDisplay();          




          
  if (digitalRead(buttonPin6) == 0)  // 06           
  {          
    Keyboard.write('6');           
              
  display.clearDisplay();          
  display.setTextSize(4);          
  display.setTextColor(WHITE);          
  display.setCursor(55, 20);          
  display.println("6");          
  display.display();          
  delay(500);            
  }           




          
display.clearDisplay();          




          
  if (digitalRead(buttonPin7) == 0)  // 07          
  {          
    Keyboard.write('7');           
              
  display.clearDisplay();          
  display.setTextSize(4);          
  display.setTextColor(WHITE);          
  display.setCursor(55, 20);          
  display.println("7");          
  display.display();          
  delay(500);            
  }           




          
display.clearDisplay();          




          
  if (digitalRead(buttonPin8) == 0)  // 08          
  {          
    Keyboard.write('8');           
              
  display.clearDisplay();          
  display.setTextSize(4);          
  display.setTextColor(WHITE);          
  display.setCursor(55, 20);          
  display.println("8");          
  display.display();          
  delay(500);            
  }           




          
display.clearDisplay();          




          
  if (digitalRead(buttonPin9) == 0)  // 09          
  {          
    Keyboard.write('9');           
              
  display.clearDisplay();          
  display.setTextSize(4);          
  display.setTextColor(WHITE);          
  display.setCursor(55, 20);          
  display.println("9");          
  display.display();          
  delay(500);            
  }          
            
display.clearDisplay();             




          
}        
  
 

此代碼實質上充當一個簡單的鍵盤輸入系統,模擬在按下相應的物理按鈕時按鍵盤上的按鍵。此外,它還在OLED顯示屏上提供視覺反饋,以指示已按下哪個按鈕。

我們使用的是 Adafruit SSD1306 OLED 庫,您需要先下載并安裝該庫,然后再上傳此草圖。

第二步:外觀設計

該項目的第二步從外觀設計開始,它由首先創建的 XIAO 擴展板模型組成,該模型放置在一個矩形主體上,該主體從內部容納了九個按鈕。

XIAO擴展板使用四個M2螺釘從頂部安裝。

我們從外殼內部安裝了按鈕,并創建了九個方形開口來放置開關同時創造了一個開關支架,它用四個 M2 螺釘固定到位,以便將開關固定在原位。

此外,我們還創建了一個蓋子,可以從后面關閉設備。該設備通過蓋子上的矩形延伸部分從頂部抬高,使其有點傾斜。

設計完成后,我們導出了設計的所有網格文件,并使用帶有 0.4mm 噴嘴的 Ender 3 打印它們。

主體采用橙色PLA印刷,蓋子和開關支架均采用透明PLA印刷。

組裝過程:添加按鈕

對于開關,我們將使用 12mm x 12mm 方形觸覺按鈕。

首先,我們只需在主體內一次一個地將每個開關拾取并插入其指定位置,將它們全部放入插槽中。

接下來,我們將 3D 打印的開關支架添加到其位置,并使用四個 M2 螺釘使其靜止。該支架將保持所有開關完好無損地固定在原位。

接線方法

l每個開關的 GND 端子使用烙鐵和銀銅線相互連接。對于此階段,我們堅持使用提供的接線圖。

l接下來,我們在每個開關上放置連接線;該連接線將添加 XIAO 的數字引腳,用于開關輸入。

wKgaombaYvqAaGJ-AACVrTPbjfY458.jpg

XIAO 擴展板使用從頂部插入的四個 M2 螺釘安裝在其適當的位置。接下來,我們開始最后一個接線步驟,該步驟涉及根據提供的接線圖將 XIAO 上的數字引腳與每個開關上的連接線對齊。對于此過程,使用烙鐵。最后,我們將蓋子放在底部,并用六個 M2 螺釘將其固定到主體上。

該項目已完全組裝完成。

總結

這是這個簡單而實用的構建的結果:一個功能齊全的 HID 數字鍵盤,如果您的筆記本電腦缺少專用的數字鍵盤,您可以使用它來輸入數字。您還可以修改此項目,通過為每個按鈕分配字母或函數來代替數字來操作宏鍵盤。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7552

    瀏覽量

    151423
  • 鍵盤
    +關注

    關注

    4

    文章

    859

    瀏覽量

    39670
  • 開發板
    +關注

    關注

    25

    文章

    5050

    瀏覽量

    97471

原文標題:創客項目秀|基于XIAO SAMD21的HID數字鍵盤

文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創客空間】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    USB數字鍵盤的數據傳輸模式是什么?

    數字鍵盤 有一個健按下,傳輸是以什么傳至USB口進行數據通信,是直接以標準的鍵盤ASCII碼輸出嗎?
    發表于 04-27 10:03

    單機數值輸入控件,彈出數字鍵盤,單擊數字輸入值

    我想將觸摸屏用到電腦上,所以數值輸入不能用鍵盤,我需要一個vi,單擊數值輸入控件后彈出數字鍵盤,單擊數字鍵盤的值實現數值輸入。請問哪位大神給點意見
    發表于 03-10 09:12

    如何用TJC串口屏去做一個數字鍵盤

    如何用TJC串口屏去做一個數字鍵盤?遇到了哪些問題?怎樣去解決?
    發表于 10-25 07:15

    STM32F103ZET6數字鍵盤的代碼分享

    STM32F103ZET6數字鍵盤的代碼分享
    發表于 12-14 06:07

    LCD和數字鍵盤實現的人機交互式界面

    引言目前,以LCD和數字鍵盤實現的人機交互式界面在智能終端中廣泛采用。在不同的應用場合,對人機界面的要求也不同,一些情況下只要求簡單參數的顯示和選擇,而在一些信息終端中,還要求文字的輸入。 在
    發表于 12-22 06:09

    如何制作一個小數字鍵盤

    按鍵數量,按鍵功能,我這里制作一個小數字鍵盤,增加了Delete按鍵,使用的是紅軸機械按鍵,效果如下二、環境stm32f1keilwindow10三、正文我畫的原理圖如下pcb核心程序#include "stm32f10x.h"#i...
    發表于 01-25 07:41

    如何實現基于Arduino的HID數字鍵盤設計?

    如何實現基于Arduino的HID數字鍵盤設計?
    發表于 02-15 07:23

    如何利用HAL庫去制作一種u***數字鍵盤

    如何利用HAL庫去制作一種u***數字鍵盤呢?有哪些制作步驟?
    發表于 03-01 07:37

    如何利用CH549開發一款觸摸的數字鍵盤

    最近有個數字鍵盤的小項目要做,前段時間搜索了一些芯片發現CH549似乎可以單片即可實現。咨詢了下價格也非常優秀,就打了塊板子回來測試,今天搗鼓了半天才把下載的問題解決。網上買的這種下載,居然弄不了哎
    發表于 05-26 06:56

    如何切換筆記本小鍵盤

    在臺式電腦中都有設在右邊之專用數字鍵盤,而在筆記本中由于鍵盤容量問題,只有橫排之數字鍵盤,沒有專用數字鍵盤,但在筆記本之中間右側,有些字母鍵下方也標有
    發表于 10-08 15:25 ?2.4w次閱讀

    基于Raspberry Pi Pico實現的數字鍵盤設計方案

    今天,我將構建一個基于RaspberryPiPico的數字鍵盤。我將構建一個帶有20個開關的簡單正交數字鍵盤。然后我將介紹如何在其上安裝KMK固件。
    的頭像 發表于 04-06 15:37 ?3113次閱讀
    基于Raspberry Pi Pico實現的<b class='flag-5'>數字鍵盤</b>設計<b class='flag-5'>方案</b>

    減少數字鍵盤所需的引腳數量開源

    電子發燒友網站提供《減少數字鍵盤所需的引腳數量開源.zip》資料免費下載
    發表于 10-28 11:42 ?2次下載
    減少<b class='flag-5'>數字鍵盤</b>所需的引腳數量開源

    數字鍵盤開源硬件

    電子發燒友網站提供《數字鍵盤開源硬件.zip》資料免費下載
    發表于 01-29 16:51 ?0次下載
    <b class='flag-5'>數字鍵盤</b>開源硬件

    如何使用數字鍵盤控制7段顯示器

    電子發燒友網站提供《如何使用數字鍵盤控制7段顯示器.zip》資料免費下載
    發表于 02-03 14:03 ?0次下載
    如何使用<b class='flag-5'>數字鍵盤</b>控制7段顯示器

    使用SAMD21 ML評估套件進行手勢識別

    電子發燒友網站提供《使用SAMD21 ML評估套件進行手勢識別.zip》資料免費下載
    發表于 06-15 10:32 ?0次下載
    使用<b class='flag-5'>SAMD21</b> ML評估套件進行手勢識別
    主站蜘蛛池模板: 天天射网站| 91色在线播放| 午夜老司机福利| 国产高清一级在线观看| 国产亚洲精品久久久极品美女| 久久免费久久| 51精品国产| 色噜噜人体337p人体| 69堂在线观看国产成人| 午夜色视频| 国产免费成人在线视频| 午夜三级福利| 国产又粗又大又爽又免费| 国产高清在线精品一区| 四虎电影院| 毛片.com| 在线免费观看视频| 免费三级pq| 555夜色555亚洲夜色| 伊人久久大香线蕉综合电影 | 在线播放一区二区精品产| 色狠狠狠狠综合影视| 久久精品国产清自在天天线| 99精品免费视频| 69女poren18女| 日韩免费毛片全部不收费| 国产免费播放| 欧美性妇| 亚洲无色| 免费抓胸吻胸激烈视频网站| www.黄视频| 国产视频首页| 泰国一级毛片aaa下面毛多| 好看的一级毛片| 日日夜夜狠狠| 夜夜春宵翁熄性放纵30| 性欧美日韩| 丰满寡妇一级毛片| 狠狠干天天色| 伊人久久大香线蕉观看| 成年色黄大色黄大片 视频 |