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

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

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

3天內不再提示

如何使用Arduino Nano構建一個手勢控制的電梯原型

科技觀察員 ? 來源:circuitdigest ? 作者:Ashish Choudhary ? 2022-08-08 16:53 ? 次閱讀

在新冠病毒大流行的這段時間,電梯已成為每個人都觸摸相同按鈕的高風險場所。在許多地方,人們發現了防止接觸電梯按鈕的技巧,例如使用抽紙、牙簽或衛生紙來按下電梯按鈕。

因此,為了延續我們之前的 Corona 安全項目,如 自動消毒機、非接觸式溫度監測和社交距離檢測器,我們將在這里使用Arduino Nano構建一個手勢控制的電梯原型。

這款非接觸式電梯使用 Arduino Nano、APDS9960 手勢傳感器OLED 顯示模塊。使用這個基于手勢的控制面板,您可以通過手勢輕松控制您的 Lift。APDS9960 傳感器用于讀取手勢。UP和DOWN手勢用于設置樓層號,左側手勢關閉電梯門并根據樓層號移動電梯,右側手勢用于開門。

所需組件

Arduino納米

OLED顯示模塊

APDS9960 RGB & 手勢傳感器

面包板

跳線

APDS9960 RGB & 手勢傳感器

APDS9960 RGB 和手勢檢測模塊是一款小型分線板,配有內置 APDS-9960 傳感器、UV 和 IR 阻擋濾光片、四個對不同方向敏感的獨立二極管以及 I2C 兼容接口。該傳感器可用于環境光和顏色測量、接近檢測和非接觸式手勢感應。它的手勢檢測范圍為 10 到 20 厘米,可用于控制微控制器機器人和許多其他項目。

pYYBAGLwziCAYdftAAOvngC9cOE434.png

特征:

工作電壓:2.4V 至 3.6V

操作范圍:4-8 英寸(10-20 厘米)。

I2C 接口(I2C 地址:0x39)。

環境光和 RGB 顏色感應、接近

光學模塊中的傳感和手勢檢測

I2C 總線快速模式兼容接口,數據速率高達 400 kHz。

電路原理

下面給出了使用 APDS9960 的非接觸式電梯的電路圖。

poYBAGLwzheAKhmrAAGvC5XUUSE248.png

我們正在將 Arduino Nano 與 APDS9960 傳感器和 OLED 顯示器連接起來。APDS9960 Sensor 和 OLED Display 的 VCC 和 GND 引腳連接到 Arduino 的 3.3V 和 GND。而 APDS9960 Sensor 和 OLED Display 的 SCL 和 SDA 引腳分別連接到 Arduino 的 A5 和 A4 引腳。

poYBAGLwzhKAXmaXAAANrDDMOK4176.png

這是使用 Arduino 的手勢控制電梯的完整設置的外觀:

poYBAGLwzg6AQj29AAUGBpH2HO8348.png

代碼說明

使用 APDS9960 的非接觸式電梯的完整代碼在頁面末尾給出。在這里,我們將解釋代碼的一些重要部分。在這個程序中,我們將使用 APDS9960 和Adafruit_SH1106 庫。可以從 Arduino IDE 下載 APDS9960 庫。要下載庫,請轉到Sketch > Library Manager > Search,然后輸入Arduino APDS9960。而Adafruit_SH1106 庫可以從這里下載。

因此,像往常一樣通過包含所有必需的庫來啟動代碼。Adafruit_SH1106.h是原始 Adafruit 庫的修改版本。

#include 
#include 
#include 
#include 

在接下來的幾行中,定義變量以存儲用戶想要去的當前樓層和樓層號。

整數樓層數=0;
詮釋當前地板=0;

之后,輸入向上箭頭、向下箭頭、開門和關門圖片的位圖。可以使用Image2cpp 之類的轉換器生成圖像的 HEX 代碼。要了解有關如何使用Image2cpp 的更多信息,請遵循此Arduino 二維碼生成器教程

const unsigned char up [] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,…………………………………………………… …………………………………………..
};
const unsigned char down [] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,…………………………………………………… …………………………………………..
};
const unsigned char dooropen [] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xe0, ,……………………………………………… ………………………………………………..
};

在setup()函數中,以 9600 的波特率初始化串行監視器以進行調試。然后在接下來的幾行中,使用begin()方法初始化 OLED 顯示器和 APDS9960 傳感器,如下所示:

序列號.開始(9600);
  如果(!APDS.begin()){
    Serial.println("初始化 APDS9960 傳感器時出錯!");
  }
Serial.println("檢測手勢...");
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);

初始化顯示器和傳感器后,使用clearDisplay()方法清除顯示緩沖區,并使用display.setTextSize()和display.setTextColor()方法設置字體大小和顏色。

  display.setTextSize(2);
  display.setTextColor(白色);
  display.clearDisplay();
  顯示.顯示();

在void loop()內部,不斷檢查是否做出任何手勢。如果是,則讀取手勢值并檢查它是哪個手勢(上、下、右、左)并在串行監視器上打印相應的讀數。UP 和 DOWN 手勢用于設置用戶想去的樓層。左手勢是關閉電梯門并根據樓層號移動電梯,而右手勢用于開門。

如果(APDS.gestureAvailable()){
    int 手勢 = APDS.readGesture();
    切換(手勢){
      案例 GESTURE_UP:
        Serial.println("檢測到向上手勢");
        display.clearDisplay();
        樓數++;
        首頁1();
        休息;
      案例 GESTURE_DOWN:
        Serial.println("檢測到向下手勢");
        display.clearDisplay();
        地板號碼——;
        首頁1();
        休息;
      案例 GESTURE_LEFT:
         Serial.println("檢測到左手勢");
         display.clearDisplay();
         開始();
         休息;
     案例 GESTURE_RIGHT:
        Serial.println("檢測到正確的手勢");
        display.clearDisplay();
        首頁1();
        休息;
        默認:
        休息;
    }

home1()函數用于繪制電梯的主頁顯示。這包括向上箭頭、向下箭頭、開門、關門標志和當前樓層號。drawBitmap()函數用于在 OLED 顯示器上繪制圖像。drawBitmap()函數的語法如下:

drawBitmap(int16_t x, int16_t y, 位圖, int16_t w, int16_t h, colour);

在哪里:

int16_t x, int16_t y是OLED顯示屏的X和Y坐標

位圖是位圖的名稱

int16_t w, int16_t h是圖像的高度和重量。

無效的 home1()
{
  display.setCursor(101,23);
  display.println(floornum);
  display.drawBitmap(23, 0, uparrow, 40, 18, WHITE);
  display.drawBitmap(26, 46, downarrow, 40, 18, WHITE);
  display.drawBitmap(0, 15, dooropen, 29, 30, WHITE);
  display.drawBitmap(60, 15, closedoor, 29, 30, WHITE);
  顯示.顯示();
}

start()函數用于向上或向下移動電梯。為此,將當前樓層號與用戶想去的樓層號進行比較。如果樓層號大于當前樓層號。如果樓層號小于當前樓層號,則電梯將向上移動。然后電梯將向下移動。當兩個當前樓層都沒有時,電梯將停止。和樓層號。是相同的。

無效的開始()
{
      而(地板編號>當前地板){
      Serial.println("向上");
      當前樓層++;
      display.drawBitmap(0, 0, up, 100, 64, WHITE);
      display.setCursor(101,23);
      display.println(currentfloor);
      顯示.顯示();
      display.clearDisplay();
      延遲(2000);
       }
   而(地板編號<當前地板){
      Serial.println("往下走");
      當前樓層——;
      display.drawBitmap(0, 0, down, 100, 64, WHITE);
      display.setCursor(101,23);
      display.println(currentfloor);
      顯示.顯示();
      display.clearDisplay();
      延遲(2000);
       }
   如果(地板編號== 當前地板){
        Serial.println("到達");
        display.clearDisplay();
        首頁1();
        Serial.print(當前樓層);
      }
  }

測試手勢控制的非接觸式升降機

硬件和代碼準備就緒后,將 Arduino Nano 連接到筆記本電腦并上傳下面給出的完整代碼。如您所見,默認情況下 OLED 將顯示電梯用戶界面。

pYYBAGLwzgSADGv8AAF3bxpwxOQ749.png

現在向上或向下揮動你的手,如下面的視頻所示,設置你想去的地板。然后做出確認電梯到該樓層的向左手勢。如果您想停止電梯,請用手做出正確的手勢。

#include

#include

#include

#include

#define OLED_RESET -1

Adafruit_SH1106 顯示器(OLED_RESET);

整數樓層數=0;

詮釋當前地板=0;

//在這里粘貼你的位圖

const unsigned char up [] PROGMEM = {

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x0f, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf0,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfc, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x03, 0xff, 0xc7, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x07, 0xff, 0x81, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00,

0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x3f, 0xf8, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x07, 0xff, 0x80, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00,

0x00, 0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x7f,

0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00,

0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,

0x03, 0xff, 0xc0, 0x00, 0x38, 0x00, 0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00,

0x00, 0x7c, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x01, 0xff, 0x00,

0x00, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x03, 0xff, 0x80, 0x00, 0x3f, 0xfc,

0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x0f, 0xff, 0xe0, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00,

0x03, 0xff, 0xc0, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x07, 0xff, 0x80,

0x00, 0x7f, 0xff, 0xfc, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0xff, 0xff,

0xfe, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x03, 0xff, 0xc7, 0xff, 0x80, 0x00,

0x3f, 0xf8, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x07, 0xff, 0x81, 0xff, 0xc0, 0x00, 0x1f, 0xfe, 0x00,

0x01, 0xff, 0xe0, 0x00, 0x1f, 0xfe, 0x00, 0xff, 0xf0, 0x00, 0x07, 0xff, 0x00, 0x07, 0xff, 0x80,

0x00, 0x3f, 0xfc, 0x00, 0x3f, 0xf8, 0x00, 0x03, 0xff, 0xc0, 0x0f, 0xfe, 0x00, 0x00, 0xff, 0xf0,

0x00, 0x1f, 0xfe, 0x00, 0x00, 0xff, 0xe0, 0x3f, 0xfc, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x07, 0xff,

0x00, 0x00, 0x7f, 0xf0, 0x1f, 0xf0, 0x00, 0x07, 0xff, 0x80, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x1f,

0xf0, 0x0f, 0xe0, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x0f, 0xe0, 0x03, 0xc0,

0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x03, 0x80, 0x01, 0x00, 0x00, 0x7f, 0xf8,

0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00,

0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80,

0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00,

0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8,

0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x00,

0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,

0xff, 0x80, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00,

0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x3f, 0xfc,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x07, 0xff, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff,

0xc0, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe0, 0x3f, 0xfc,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x0f, 0xe0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x03, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

};

const unsigned char down [] PROGMEM = {

// '向下, 105x64px

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xe0,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x03, 0xf8, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x07, 0xf0, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x1f, 0xf0, 0x03, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x01,

0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x7f, 0xf0, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x1f, 0xfe, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00,

0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x00, 0xff,

0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00,

0x00, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,

0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00,

0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00,

0x00, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8,

0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00,

0x0f, 0xff, 0x00, 0x00, 0x40, 0x00, 0xe0, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00,

0x01, 0xe0, 0x03, 0xf8, 0x00, 0x03, 0xff, 0x80, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x03, 0xf0, 0x0f,

0xfc, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x07, 0xf0, 0x0f, 0xff, 0x00, 0x00,

0x7f, 0xf0, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x1f, 0xf0, 0x03, 0xff, 0x80, 0x00, 0x3f, 0xfc, 0x00,

0x07, 0xff, 0x80, 0x00, 0x3f, 0xf0, 0x01, 0xff, 0xe0, 0x00, 0x0f, 0xfe, 0x00, 0x1f, 0xfe, 0x00,

0x00, 0xff, 0xf0, 0x00, 0x7f, 0xf0, 0x00, 0x07, 0xff, 0x80, 0x3f, 0xfc, 0x00, 0x03, 0xff, 0xc0,

0x00, 0x3f, 0xfc, 0x00, 0x01, 0xff, 0xc0, 0xff, 0xf0, 0x00, 0x07, 0xff, 0x80, 0x00, 0x0f, 0xfe,

0x00, 0x00, 0xff, 0xf1, 0xff, 0xe0, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x3f,

0xff, 0xff, 0x80, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x1f, 0xff, 0xff, 0x00,

0x00, 0xff, 0xf0, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x07, 0xff, 0xfc, 0x00, 0x01, 0xff, 0xe0,

0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x03, 0xff, 0xf8, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00,

0x1f, 0xfe, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00,

0x00, 0x7f, 0xc0, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x1f, 0x00,

0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x0e, 0x00, 0x01, 0xff, 0xe0,

0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00,

0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,

0xff, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x80, 0x00,

0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, 0xff, 0xf0,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x0f, 0xfe, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,

0x80, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xc0, 0xff, 0xf0,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, 0xff, 0xe0, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x07, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf8,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

};

const unsigned char uparrow [] PROGMEM = {

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00,

0xff, 0xc0, 0x00, 0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x03, 0xff, 0xf8, 0x00, 0x00, 0x07, 0xff,

0xfc, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x00, 0x3f, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xff,

0xc0, 0x01, 0xff, 0xff, 0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xf8,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

};

const unsigned char downarrow [] PROGMEM = {

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x1f,

0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff,

0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff,

0xc0, 0x00, 0x00, 0x0f, 0xff, 0x80, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00,

0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

};

const unsigned char dooropen [] PROGMEM = {

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xe0,

0x3f, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0xf0, 0x38, 0x00, 0x00, 0xf0, 0x38, 0x00, 0x00, 0xf0,

0x38, 0x00, 0x00, 0xf0, 0x38, 0x04, 0x80, 0xf0, 0x38, 0x1c, 0xc0, 0xf0, 0x38, 0x3c, 0xf0, 0xf0,

0x38, 0x7c, 0xf8, 0xf0, 0x39, 0xfc, 0xfc, 0xf0, 0x3b, 0xfc, 0xfe, 0xf0, 0x3b, 0xfc, 0xfe, 0xf0,

0x38, 0xfc, 0xfc, 0xf0, 0x38, 0x7c, 0xf8, 0xf0, 0x38, 0x3c, 0xf0, 0xf0, 0x38, 0x1c, 0xc0, 0xf0,

0x38, 0x04, 0x80, 0xf0, 0x38, 0x00, 0x00, 0xf0, 0x38, 0x00, 0x00, 0xf0, 0x38, 0x00, 0x00, 0xf0,

0x3c, 0x00, 0x00, 0xf0, 0x3f, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0xff, 0xc0,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

};

const unsigned char closedoor [] PROGMEM = {

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x0f, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xff, 0xc0, 0x08, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x03, 0x40,

0x0b, 0x80, 0x07, 0x40, 0x0b, 0xc0, 0x0f, 0x40, 0x0b, 0xe0, 0x1f, 0x40, 0x0b, 0xf0, 0x3f, 0x40,

0x0b, 0xf8, 0x7f, 0x40, 0x0b, 0xfc, 0xff, 0x40, 0x0b, 0xff, 0xff, 0x40, 0x0b, 0xff, 0xff, 0x40,

0x0b, 0xfe, 0xff, 0x40, 0x0b, 0xf8, 0x7f, 0x40, 0x0b, 0xf0, 0x3f, 0x40, 0x0b, 0xe0, 0x1f, 0x40,

0x0b, 0xc0, 0x0f, 0x40, 0x0b, 0x80, 0x07, 0x40, 0x0b, 0x00, 0x03, 0x40, 0x08, 0x00, 0x01, 0x40,

0x0f, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

};

無效設置(){

序列號.開始(9600);

如果(!APDS.begin()){

Serial.println("初始化 APDS9960 傳感器時出錯!");

}

Serial.println("檢測手勢...");

display.begin(SH1106_SWITCHCAPVCC, 0x3C);

display.setTextSize(2);

display.setTextColor(白色);

display.clearDisplay();

顯示.顯示();

首頁1();

}

無效循環(){

display.clearDisplay();

如果(APDS.gestureAvailable()){

int 手勢 = APDS.readGesture();

切換(手勢){

案例 GESTURE_UP:

Serial.println("檢測到向上手勢");

display.clearDisplay();

樓數++;

首頁1();

休息;

案例 GESTURE_DOWN:

Serial.println("檢測到向下手勢");

display.clearDisplay();

地板號碼——;

首頁1();

休息;

案例 GESTURE_LEFT:

Serial.println("檢測到左手勢");

display.clearDisplay();

開始();

休息;

案例 GESTURE_RIGHT:

Serial.println("檢測到正確的手勢");

display.clearDisplay();

首頁1();

休息;

默認:

休息;

}

}

}

無效的 home1()

{

display.setCursor(101,23);

display.println(floornum);

display.drawBitmap(23, 0, uparrow, 40, 18, WHITE);

display.drawBitmap(26, 46, downarrow, 40, 18, WHITE);

display.drawBitmap(0, 15, dooropen, 29, 30, WHITE);

display.drawBitmap(60, 15, closedoor, 29, 30, WHITE);

顯示.顯示();

}

無效的開始()

{

而(地板編號>當前地板){

Serial.println("向上");

當前樓層++;

display.drawBitmap(0, 0, up, 100, 64, WHITE);

display.setCursor(101,23);

display.println(currentfloor);

顯示.顯示();

display.clearDisplay();

延遲(2000);

}

而(地板編號<當前地板){

Serial.println("往下走");

當前樓層——;

display.drawBitmap(0, 0, down, 100, 64, WHITE);

display.setCursor(101,23);

display.println(currentfloor);

顯示.顯示();

display.clearDisplay();

延遲(2000);

}

如果(地板編號== 當前地板){

Serial.println("到達");

display.clearDisplay();

首頁1();

Serial.print(當前樓層);

}

}

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

    關注

    0

    文章

    78

    瀏覽量

    14315
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    188029
  • 手勢控制
    +關注

    關注

    4

    文章

    44

    瀏覽量

    21860
收藏 人收藏

    評論

    相關推薦

    如何使用Arduino Nano構建金屬探測器

    在這個項目中,我們將使用線圈和電容器來檢測金屬。在這里,我們使用Arduino Nano構建這個金屬探測器項目。對于所有電子愛好者來說
    的頭像 發表于 11-22 17:15 ?3780次閱讀
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b><b class='flag-5'>構建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>金屬探測器

    Arduino手勢控制手套源代碼共享,隔空操控電腦

    很有趣的帖子和資料手勢控制手套的核心是Arduino。只要輕輕移動手指,你就可以用熟悉的T9鍵盤隔空打字了。你可以將它作為研發基礎,為
    發表于 09-23 15:12

    如何構建Arduino官方開發環境

    本系列教程將向大家講述,在自己的計算機上構建完善的嵌入式系統開發環境的方法。本文將向大家講述構建Arduino官方開發環境的方法。Arduino簡介:
    發表于 12-24 06:44

    基于Arduino設計的手勢控制機器人

    描述如何在家制作 DIY Arduino 手勢控制機器人接收器(坦克)所需的零件:1) 機器人坦克底盤 2) Arduino Nano V3
    發表于 06-20 09:21

    基于Arduino創建手勢控制

    描述如何制作手勢控制機器人|| #MadeWithArduino(發射器)嘿,歡迎回到新項目。所以今天我們將學習使用Arduino創建
    發表于 06-22 06:55

    arduino手勢控制小車

    描述arduino手勢控制
    發表于 08-09 06:51

    基于arduino設計的手勢控制小車

    基于arduino手勢控制小車
    發表于 09-25 06:06

    dfrobot Arduino Nano控制板介紹

    DFRduino Nano(兼容Arduino NANO)是款開源的控制板,非常適合愛好電子制作的朋友制作互動作品,但對于
    的頭像 發表于 12-26 09:50 ?6003次閱讀
    dfrobot <b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b><b class='flag-5'>控制</b>板介紹

    如何使用Arduino Leonardo和MPU6050制作有線的手勢控制

    本文將向你展示如何使用Arduino Leonardo和MPU6050加速計/陀螺儀模塊來制作類似于任天堂Wii控制器的手勢
    的頭像 發表于 04-03 17:02 ?3092次閱讀
    如何使用<b class='flag-5'>Arduino</b> Leonardo和MPU6050制作<b class='flag-5'>一</b><b class='flag-5'>個</b>有線的<b class='flag-5'>手勢</b><b class='flag-5'>控制</b>器

    如何使用Arduino Nano控制紅綠燈

    本文將介紹如何基于簡單PCB洞洞板制作紅綠燈,并通過Arduino Nano R3對它進行控制
    的頭像 發表于 04-08 15:19 ?5483次閱讀
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b><b class='flag-5'>控制</b>紅綠燈

    arduino手勢控制

    電子發燒友網站提供《arduino手勢控制車.zip》資料免費下載
    發表于 07-26 10:29 ?1次下載
    <b class='flag-5'>arduino</b><b class='flag-5'>手勢</b><b class='flag-5'>控制</b>車

    使用Open cv python(手勢)和arduino控制Led

    電子發燒友網站提供《使用Open cv python(手勢)和arduino控制Led.zip》資料免費下載
    發表于 10-28 10:19 ?6次下載
    使用Open cv python(<b class='flag-5'>手勢</b>)和<b class='flag-5'>arduino</b><b class='flag-5'>控制</b>Led

    Arduino Nano構建SN76489 USB MIDI合成器

    電子發燒友網站提供《用Arduino Nano構建SN76489 USB MIDI合成器.zip》資料免費下載
    發表于 11-10 14:24 ?3次下載
    用<b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b><b class='flag-5'>構建</b><b class='flag-5'>一</b><b class='flag-5'>個</b>SN76489 USB MIDI合成器

    Arduino手勢控制LED亮度

    電子發燒友網站提供《Arduino手勢控制LED亮度.zip》資料免費下載
    發表于 01-31 14:47 ?1次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>手勢</b><b class='flag-5'>控制</b>LED亮度

    Arduino Nano控制的激光測量

    電子發燒友網站提供《Arduino Nano控制的激光測量.zip》資料免費下載
    發表于 06-19 16:33 ?0次下載
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b><b class='flag-5'>控制</b>的激光測量
    主站蜘蛛池模板: 国产精品大全 | 国产内地激情精品毛片在线一 | 欧美色图网站 | 韩国十八禁毛片无遮挡 | 亚洲欧美强伦一区二区另类 | 日韩中文电影 | 色老头久久久久久久久久 | 亚洲欧美一区二区三区麻豆 | 色多多视频在线 | 99久久精品国产免费 | 直接看的黄色网址 | 亚洲无线视频 | 欧美性黄色 | 国产成人毛片视频不卡在线 | 四虎www成人影院观看 | 日本午夜影院 | 不卡免费在线视频 | 久久成人亚洲 | 香蕉视频黄色片 | 欧美激情αv一区二区三区 欧美激情第一欧美在线 | 天堂网在线资源www最新版 | 四虎影院永久在线观看 | 日本成人视屏 | 久久青草精品一区二区三区 | 天天草天天操 | 又长又大又粗又硬3p免费视 | 天天舔 | 亚洲三级在线免费观看 | 国产精品资源在线观看 | 日本超黄视频 | 亚洲久久在线 | 日本一二线不卡在线观看 | 在线观看中文字幕第一页 | 伊人成伊人成综合网2222 | 人人射人人插 | vip影院在线观看 | 日本一区视频 | www.久艹| 日韩视频 中文字幕 视频一区 | 特黄特黄aaaa级毛片免费看 | 精品伊人久久大香线蕉网站 |