日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Arduino制作自己的自定義快捷按鈕

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-03 16:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

不起眼的Arduino可以做很多事情,但是您知道它可以模擬USB鍵盤嗎?通過這種簡單的電路,您可以將那些難以記住的長鍵盤快捷鍵組合到單個自定義快捷鍵中。最終結(jié)果如下:

以前從未使用過Arduino嗎?首先查看我們的入門指南。

您需要什么

這里是制作此項目所需的條件:

1 x Arduino Pro Micro。

瞬時按鈕或鍵盤按鈕。

10K歐姆電阻器

各種連接線。

1 x 220歐姆電阻器。

1 x 5mm(0.197英寸)LED。

1 x 5mm LED支架。

您將需要這個項目的一個非常特定的Arduino。我使用的是Pro Micro,因為它們又小又便宜,因此您需要一個在處理器(Atmega32u4)中內(nèi)置USB串行接口的Arduino??梢耘c其他Arduino(例如UNO或Nano)一起構(gòu)建此項目,但是要重新刷新BIOS并擺弄東西才能工作需要大量的工作。其他Arduino模型的克隆通常根本無法工作,但是Pro Micro克隆也可以。

您將需要一個瞬時按鈕,一個10K歐姆電阻器,以及您想要的每個按鈕合適的連接線。使用。我使用的是Cherry MX機(jī)械鍵盤開關(guān)作為實(shí)際的快捷鍵,盡管 any 開關(guān)可以使用,但只要它是瞬時的且不會閂鎖即可。

您可能還需要一些其他物品取決于您如何構(gòu)建它。如果要對其進(jìn)行原型制作,則需要一個無焊面包板。將錢花在一個好的錢上是值得的-它們有時可能非常不可靠。如果您想將其裝箱,則需要購買一些剝離板。

構(gòu)建計劃

這是它的工作方式。 Arduino將被編程為像USB鍵盤一樣工作-就您的計算機(jī)而言。連接到Arduino的多個按鈕會將鍵盤命令發(fā)送到您的計算機(jī)。例如,您只需按一個按鈕,但計算機(jī)會認(rèn)為您已按 Alt 》 F4 。

選擇開關(guān)

MX系列開關(guān)有多種變體。該網(wǎng)站提供了出色的介紹,但是本質(zhì)上歸結(jié)為噪音和壓力。一些型號需要更大的壓力才能按下,而某些型號在按下時會發(fā)出機(jī)械的“喀噠”聲。我使用了Cherry MX Browns,按下時不會發(fā)出聲音。它們的尺寸都是相同的,因此請放心選擇任何喜歡的模型(或混合搭配)。

當(dāng)然,您還需要購買一些按鍵蓋,并且那里有大量的定制設(shè)計可供選擇—我們從英國的KeyboardCo購買

保護(hù)套

我已經(jīng)3D打印了此保護(hù)套,您可以下載 .STL 文件來自Thingiverse。如果您沒有3D打印機(jī),請不要擔(dān)心,您仍然可以構(gòu)建它。許多網(wǎng)站提供3D打印服務(wù),例如3D集線器或Shapeways。另外,這是一個非常簡單的案例,您可以用塑膠,有機(jī)玻璃,木材甚至紙板制成自己的東西。如果您想節(jié)儉,Cherry MX可以在Amazon(UK)上出售一套開關(guān)測試儀/采樣器。您將需要4個M5 x 35mm螺栓和4個M5螺母。當(dāng)然,您也可以用它們替代合適的替代品。

如果您要制作自己的手機(jī)殼,則需要了解一個重要的細(xì)節(jié):Cherry MX開關(guān)可推入其安裝孔。它們需要一個14 x 14mm(0.551英寸)的方形安裝孔,且板的厚度不得超過1.5mm(0.059英寸)。偏離這些尺寸的距離太遠(yuǎn),您的開關(guān)可能無法正確安裝。

3D打印盒分為上下兩部分。將Cherry MX開關(guān)推入方孔:

確保正確安裝開關(guān)。頂部帶有“ CHERRY”字樣,而底部則帶有一個小凹口。將3mm LED插入此小插槽中:

您可能會發(fā)現(xiàn)LED看起來最好“倒置”安裝。我使用的鍵帽就是這種情況,它根本不影響開關(guān)。

您現(xiàn)在應(yīng)該有9個帶9個LED的開關(guān)。不需要將這些部件粘在一起。焊料將固定LED,摩擦將固定開關(guān)。

下一步,擰入LED支架(暫時卸下LED)。電路構(gòu)建完成后,您將在以后完成外殼的組裝。

電路

此電路構(gòu)建在剝離板上。這對于構(gòu)建半永久性電路非常有用,而無需花費(fèi)印刷電路板(PCB)的成本。它只是一塊玻璃纖維,銅軌在一個方向上平行延伸。這些走線可以焊接和切割??梢允褂脤S霉ぞ呋蛐°@頭切割軌道。

對焊接不是很自信嗎?首先看一下這些簡單的項目。

以下是剝離板布局(不包括尾隨引線):

制作確保您在電阻器和Arduino上剪下了走線。由于很難讀取剝離板電路,因此下面是面包板版本:

它非常適合將所有組件擠壓到如此小的空間中。如下剪切剪切板的角:

這應(yīng)該恰好適合案例的底部:

確保軌道垂直運(yùn)行。

將LED的陽極(長腳,正極)連接到200歐姆電阻,然后至+5V。將陰極(短管,負(fù)極)接地。用熱縮套管覆蓋腿,然后將其推入LED支架。不需要任何膠水,但是您的LED支架可能不是推入配合的,因此您可能需要修改這些說明。

您可能希望在這里使用雙色LED代替-這將允許您設(shè)置兩個或更多的開關(guān)組,每個組具有不同的彩色狀態(tài)LED。

現(xiàn)在是時候焊接所有的LED了。鍵帽。它們僅用于使鍵發(fā)光,因此您可以根據(jù)需要跳過它們,并且不必將它們連接到數(shù)字引腳,只需接通電源即可。將所有陽極連接在一起,并將所有陰極連接在一起。從我的錯誤中吸取教訓(xùn)-在連接開關(guān)之前這樣做要容易得多!通過220歐姆電阻將陽極連接至+5 V,將陰極接地。這些LED并聯(lián)連接。這是這些LED的電路:

使用一小段熱縮管覆蓋LED和Arduino之間的連接:

打開Arduino的電源以測試所有LED的工作情況。您不需要上傳任何代碼。如果任何LED均不起作用,請仔細(xì)檢查接線。

現(xiàn)在,將開關(guān)連接好。這些必須通過10k電阻器連接,否則Arduino將會死亡。這被稱為完全短路— +5 V直接進(jìn)入地面,而Arduino上剩下的全部將是一團(tuán)煙霧(相信我,我已經(jīng)殺了一個人,所以您不必這樣做)。這是一個開關(guān)的電路:

所有9個開關(guān)的電路均相同。將開關(guān)連接到數(shù)字引腳2到10,每個引腳都有自己的10K電阻接地。小心焊接Cherry MX開關(guān),它們可能會有些脆弱,我有幾個針腳折斷了。您可能希望將它們直接焊接到更多的剝離板上,但是仍然可以使用拖曳引線。

就是這樣用于布線。您可能希望安裝USB B型母插座,但是其上的細(xì)小引腳通常很難焊接。如果您不希望這樣做,請不要擔(dān)心。 Arduino上的Micro USB連接器恰好適合機(jī)箱上的孔。如果您對不同的USB類型有些困惑,請確保您了解它們之間的差異。

最后,再次檢查電路是否正確。短路很容易破壞Arduino,并且可以很容易地使用Stripboard。

代碼

現(xiàn)在測試電路是否正確。在繼續(xù)操作之前,最好先執(zhí)行此操作,以便您現(xiàn)在就可以解決所有問題。上載此測試代碼(不要忘記從工具》 電路板和工具》 端口菜單):

const int buttons[] = {2,3,4,5,6,7,8,9,10}; // array of all button pins

void setup() {

// put your setup code here, to run once:

Serial.begin(9600);

pinMode(2, INPUT);

pinMode(3, INPUT);

pinMode(4, INPUT);

pinMode(5, INPUT);

pinMode(6, INPUT);

pinMode(7, INPUT);

pinMode(8, INPUT);

pinMode(9, INPUT);

pinMode(10, INPUT);

}

void loop() {

// put your main code here, to run repeatedly:

for(int i = 2; i 《 11; ++i) {

if(digitalRead(i) == HIGH) {

// software de-bounce improves accuracy

delay(10);

if(digitalRead(i) == HIGH) {

// check switches

Serial.print (“input”);

Serial.println(i);

delay(250);

}

}

}

}

如果您修改了電路,則可能需要更改引腳。

上傳后,打開串行監(jiān)視器(右上方》 串行監(jiān)視器)。逐一按下每個按鈕。您應(yīng)該看到串行監(jiān)視器顯示您按下的按鈕的編號。就像指示燈一樣,如果您的計算機(jī)抱怨消耗過多電流,或者當(dāng)您按下按鈕時指示燈熄滅,請立即斷開連接!您的電路中某處短路,請仔細(xì)檢查電路是否正確,連接之間是否沒有短路。

如果一切正常,請繼續(xù)進(jìn)行操作,然后將電路放入盒子中。您可能需要使用一點(diǎn)膠將電路固定在適當(dāng)?shù)奈恢茫ūM管電線可以很好地固定?。?。

要使Arduino看起來像鍵盤,這很簡單。如果您使用的是Nano或UNO,則將使用設(shè)備固件更新(DFU)重新編程Arduino。通常用于將新固件刷新到Arduino。您將使用它通過新固件刷新Arduino,使它像鍵盤一樣工作。由于這是一項非常復(fù)雜的任務(wù),因此這里將不介紹。 Arduino網(wǎng)站上有一個很好的教程。

Arduino Pro Micro使這一步驟非常容易。仿真USB鍵盤所需的邏輯已經(jīng)內(nèi)置在處理器中,因此就像編寫一些代碼一樣簡單!

首先,設(shè)置按鍵:

int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};

這是一個包含按鈕連接到的所有引腳的數(shù)組。如果您使用了更多或更少的按鈕或使用了不同的引腳,請在此處更改值。

數(shù)組是由志同道合的事物組成的集合。計算機(jī)可以優(yōu)化您的代碼以快速訪問它們,從而加快了代碼編寫過程。

現(xiàn)在將所有引腳初始化為輸入:

void setup() {

// put your setup code here, to run once:

Keyboard.begin(); // setup keyboard

for (int i = 2; i 《 11; ++i) {

// initilize pins

pinMode(i, INPUT);

}

}

這告訴Arduino,陣列中的所有引腳都是輸入。循環(huán)是用來執(zhí)行此操作的,因此不必編寫9次 pinMode(2,INPUT),而只需編寫一次即可。這也稱為 Keyboard.begin 。這將建立一個內(nèi)置于Arduino庫的函數(shù),該函數(shù)專門用于模擬鍵盤。

創(chuàng)建一個名為 readButton :

boolean readButton(int pin) {

// check and debounce buttons

if (digitalRead(pin) == HIGH) {

delay(10);

if (digitalRead(pin) == HIGH) {

return true;

}

}

return false;

}

這需要一個大頭針,并檢查是否已按下它。它只是返回 TRUE 或 FALSE 。它還包含一些軟件反跳-一個簡單的延遲,然后重新檢查開關(guān)以確保確實(shí)按下了按鈕。

現(xiàn)在,在 void內(nèi)稱為另一個for循環(huán)loop():

void loop() {

// put your main code here, to run repeatedly:

for (int i = 2; i 《 11; ++i) {

// check buttons

if(readButton(i)) {

doAction(i);

}

}

}

同樣,它遍歷數(shù)組中的每個元素并檢查是否已按下。它通過調(diào)用您先前創(chuàng)建的 readButton 方法來實(shí)現(xiàn)。如果按下了一個按鈕,它將那個引腳號傳遞給另一個稱為 doAction 的方法:

void doAction(int pin) {

// perform tasks

switch (pin) {

case 2:

Keyboard.println(“drive.google.com”);

break;

case 3:

Keyboard.println(“makeuseof.com”);

break;

case 4:

// CMD + T (new tab, Chrome)

Keyboard.press(KEY_LEFT_GUI);

Keyboard.press(‘t’);

delay(100);

Keyboard.releaseAll();

break;

case 5:

// your task here

break;

case 6:

// your task here

break;

case 7:

// your task here

break;

case 8:

// your task here

break;

case 9:

// your task here

break;

}

}

這會使用檢查引腳號》 switch 語句。 Switch語句(有時稱為 switch case )與 if 語句相似,但是它們對于檢查一件事(在這種情況下為引腳號)是否等于一個值很有用。幾種不同的結(jié)果。從本質(zhì)上講,它們的計算速度要快得多。

主要組件位于此switch語句內(nèi)。 Keyboard.println 將文本寫入計算機(jī),就像您實(shí)際鍵入每個鍵一樣。 Keyboard.press 按住一個鍵。不要忘了在短暫的延遲后使用 Keyboard.releaseAll 釋放它們!

以下是完整代碼:

int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};

void setup() {

// put your setup code here, to run once:

Keyboard.begin(); // setup keyboard

for (int i = 2; i 《 11; ++i) {

// initilize pins

pinMode(i, INPUT);

}

}

void loop() {

// put your main code here, to run repeatedly:

for (int i = 2; i 《 11; ++i) {

// check buttons

if(readButton(i)) {

doAction(i);

}

}

}

boolean readButton(int pin) {

// check and debounce buttons

if (digitalRead(pin) == HIGH) {

delay(10);

if (digitalRead(pin) == HIGH) {

return true;

}

}

return false;

}

void doAction(int pin) {

// perform tasks

switch (pin) {

case 2:

Keyboard.println(“drive.google.com”);

break;

case 3:

Keyboard.println(“makeuseof.com”);

break;

case 4:

// CMD + T (new tab, Chrome)

Keyboard.press(KEY_LEFT_GUI);

Keyboard.press(‘t’);

delay(100);

Keyboard.releaseAll();

break;

case 5:

// your task here

break;

case 6:

// your task here

break;

case 7:

// your task here

break;

case 8:

// your task here

break;

case 9:

// your task here

break;

}

}

除了所有數(shù)字和字母鍵之外,Arduino還可以按稱為 Keyboard Modifiers 的大多數(shù)特殊鍵。這些對于按鍵盤快捷鍵特別有用。 Arduino網(wǎng)站上有一個有用的列表。

現(xiàn)在剩下的就是創(chuàng)建一些快捷方式。您可以將其映射到現(xiàn)有的快捷方式,例如 Alt + F4 (Windows中的關(guān)閉程序)或 Cmd + Q (退出程序macOS)。另外,請確保您閱讀了最終的鍵盤快捷鍵指南,如何創(chuàng)建Windows快捷鍵以及每個Chromebook快捷鍵,以開始制作自己的快捷鍵。

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 按鈕
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    13499
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6527

    瀏覽量

    197530
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用Python/MyHDL創(chuàng)建自定義FPGA IP

    使用 Python/MyHDL 創(chuàng)建自定義 FPGA IP,與 Vivado 集成,并通過 PYNQ 進(jìn)行控制——實(shí)現(xiàn)軟件上的簡單硬件設(shè)計。
    的頭像 發(fā)表于 04-09 09:53 ?323次閱讀
    使用Python/MyHDL創(chuàng)建<b class='flag-5'>自定義</b>FPGA IP

    MCUXpresso SDK創(chuàng)建自定義清單

    概述 MCUXpresso SDK 24.12 介紹塞德恩漢CED支持自定義清單,使開發(fā)人員能夠精確定義其工作區(qū)中包含哪些組件、驅(qū)動程序、中間件和板支持包。此功能在極簡主義、可重復(fù)性和 CI/CD
    發(fā)表于 04-07 07:11

    極海APM32F427如何實(shí)現(xiàn)自定義USB HID設(shè)備與PC進(jìn)行通信

    最近需要使用到 APM32F427 枚舉成Custom HID設(shè)備進(jìn)行用戶自定義通信,但是官方的例程只有提供的HID枚舉為鼠標(biāo)或者鍵盤類型的設(shè)備。這里記錄一下,怎么使用Geehy官方的USB中間件,實(shí)現(xiàn)自定義的USB HID設(shè)備進(jìn)行用戶通信。
    的頭像 發(fā)表于 03-30 09:30 ?2810次閱讀
    極海APM32F427如何實(shí)現(xiàn)<b class='flag-5'>自定義</b>USB HID設(shè)備與PC進(jìn)行通信

    如何為 Vision Five 2 編譯自定義 Linux 內(nèi)核?

    Vision Five 2 的 Debian 用戶指南只提供了半頁關(guān)于如何編譯自己的內(nèi)核的相當(dāng)稀疏的內(nèi)容。僅從該文檔中,我無法制作我的自定義內(nèi)核。那里的信息似乎相當(dāng)不完整。如果有人能提供一些
    發(fā)表于 02-24 07:44

    電能質(zhì)量監(jiān)測裝置可自定義監(jiān)測時段嗎?

    電能質(zhì)量監(jiān)測裝置普遍支持自定義監(jiān)測時段,現(xiàn)代中高端裝置還具備分時差異化監(jiān)測與靈活觸發(fā)能力,可按時間、事件或混合策略定制采集與存儲,兼顧精度、效率與存儲成本。 一、自定義監(jiān)測時段的核心實(shí)現(xiàn)方式 1.
    的頭像 發(fā)表于 12-10 16:49 ?1188次閱讀

    電能質(zhì)量在線監(jiān)測裝置的自定義監(jiān)測時段功能有哪些應(yīng)用場景?

    電能質(zhì)量在線監(jiān)測裝置的 自定義監(jiān)測時段功能 ,核心價值是通過 “按需配置監(jiān)測時間、采樣頻率和數(shù)據(jù)策略”,實(shí)現(xiàn)精準(zhǔn)監(jiān)測、資源優(yōu)化與數(shù)據(jù)針對性分析,其應(yīng)用場景覆蓋工業(yè)生產(chǎn)、商業(yè)運(yùn)營、電網(wǎng)運(yùn)維、特殊保障等
    的頭像 發(fā)表于 12-10 14:01 ?553次閱讀
    電能質(zhì)量在線監(jiān)測裝置的<b class='flag-5'>自定義</b>監(jiān)測時段功能有哪些應(yīng)用場景?

    無圖形界面模式下自定義檢查工具的應(yīng)用

    此前文章已介紹 ANSA 中的自定義檢查工具。本文將探討該功能在無圖形界面(No-GUI)模式下的應(yīng)用,旨在滿足標(biāo)準(zhǔn)化工作流程的需求,適用于需要高度自動化的前處理場景。通過集成自定義檢查,用戶可實(shí)現(xiàn)工作流程的高效自動化運(yùn)行。
    的頭像 發(fā)表于 11-30 14:13 ?812次閱讀
    無圖形界面模式下<b class='flag-5'>自定義</b>檢查工具的應(yīng)用

    采用匯編指示符來使用自定義指令

    具體實(shí)現(xiàn) 1、采用.word .half .dword等匯編指示符直接插入自定義指令,這種方法需要自己指定寄存器。其中.word為插入一個字的數(shù)據(jù)即32位,.half為插入半字即16位
    發(fā)表于 10-28 06:02

    如何使用SDK進(jìn)行自定義音頻播放功能

    在上一篇文章安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發(fā)篇】自定義音頻替換失敗過程中,簡要概述了res_build_tool.py 文件, 其主要的作用就是將音頻文件進(jìn)行轉(zhuǎn)換,從而使編譯固件的時候能夠?qū)⒁纛l文件編譯到BIN中,然后在各項事件觸發(fā)的時候?qū)崿F(xiàn)播放。
    的頭像 發(fā)表于 09-25 15:52 ?4493次閱讀
    如何使用SDK進(jìn)行<b class='flag-5'>自定義</b>音頻播放功能

    華秋DFM軟件丨操作教程——自定義快捷鍵篇

    ,關(guān)于 華秋DFM軟件的快捷鍵要如何自定義設(shè)置和應(yīng)用 。讓你徹底擺脫此類沖突困擾,沉浸式體驗華秋DFM的操作流程?!镜谝徊健咳A秋DFM軟件的快捷鍵功能設(shè)置入口:在 菜單欄點(diǎn)擊“設(shè)置-快捷
    發(fā)表于 08-13 16:29

    LOTO示波器自定義解碼功能—CANFD解碼

    LOTO示波器軟件更新了自定義解碼功能,并在bilibili上傳了演示視頻,視頻鏈接: https://www.bilibili.com/video/BV1wq3ezjEjQ
    的頭像 發(fā)表于 07-11 10:34 ?1231次閱讀
    LOTO示波器<b class='flag-5'>自定義</b>解碼功能—CANFD解碼

    大彩講堂:VisualTFT軟件如何自定義圓形進(jìn)度條

    VisualTFT軟件如何自定義圓形進(jìn)度條
    的頭像 發(fā)表于 07-07 17:10 ?2012次閱讀
    大彩講堂:VisualTFT軟件如何<b class='flag-5'>自定義</b>圓形進(jìn)度條

    KiCad 中的自定義規(guī)則(KiCon 演講)

    “ ?Seth Hillbrand 在 KiCon US 2025 上為大家介紹了 KiCad 的規(guī)則系統(tǒng),并詳細(xì)講解了自定義規(guī)則的設(shè)計與實(shí)例。? ” ? 演講主要圍繞 加強(qiáng) KiCad 中的自定義
    的頭像 發(fā)表于 06-16 11:17 ?2640次閱讀
    KiCad 中的<b class='flag-5'>自定義</b>規(guī)則(KiCon 演講)

    HarmonyOS應(yīng)用自定義鍵盤解決方案

    自定義鍵盤是一種替換系統(tǒng)默認(rèn)鍵盤的解決方案,可實(shí)現(xiàn)鍵盤個性化交互。允許用戶結(jié)合業(yè)務(wù)需求與操作習(xí)慣,對按鍵布局進(jìn)行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護(hù)層面,自定義鍵盤可以
    的頭像 發(fā)表于 06-05 14:19 ?2685次閱讀

    如何使用自定義設(shè)置回調(diào)函數(shù)?

    你好,我正在嘗試編寫自己自定義設(shè)置回調(diào)函數(shù),并使用 fastEnum=false。 是否有任何代碼示例或資料可供我參考? void CyU3PUsbRegisterSetupCallback
    發(fā)表于 05-21 06:11
    潢川县| 香港| 哈尔滨市| 汝南县| 合作市| 同仁县| 始兴县| 施甸县| 玉龙| 曲阜市| 宜川县| 尚志市| 隆安县| 永兴县| 清新县| 伊金霍洛旗| 隆德县| 青田县| 玛沁县| 万州区| 化州市| 奉新县| 赤壁市| 友谊县| 区。| 奉新县| 凯里市| 亚东县| 民权县| 通州区| 密山市| 绥棱县| 通榆县| 凤山市| 沾益县| 安乡县| 渝北区| 黄浦区| 玉溪市| 香格里拉县| 吉隆县|