精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>破解計(jì)算機(jī)并讓它變得智能

破解計(jì)算機(jī)并讓它變得智能

2022-11-14 | zip | 0.23 MB | 次下載 | 免費(fèi)

資料介紹

描述

你有沒(méi)有想過(guò)為什么智能手機(jī)被稱為智能手機(jī)?因?yàn)樗麄兒苈斆?,?duì)吧?他們會(huì)自動(dòng)、巧妙地完成一些工作。這是簡(jiǎn)短的答案。我在想,即使電腦比手機(jī)強(qiáng)大得多,為什么它們不聰明!比如手機(jī)有自動(dòng)亮度控制系統(tǒng),很方便,我一直都在用。但不知什么原因,電腦沒(méi)有自動(dòng)亮度控制系統(tǒng)。為了改變亮度,每次我都必須按一些按鈕(功能鍵)。在某些計(jì)算機(jī)中,一些組合鍵可以完成工作(通常是 fn+功能鍵)。我覺(jué)得這很煩人。所以我設(shè)計(jì)了一個(gè)簡(jiǎn)單的設(shè)備,可以連接到任何電腦上,電腦的亮度會(huì)自動(dòng)控制,就像我們的手機(jī)一樣。讓我們看看我是如何讓我的電腦變得智能的。

第 1 步:零件

電子產(chǎn)品 -

  • Arduino(我用的是 Pro Micro)-1x
  • LDR - 2x
  • 10 克朗 - 1 倍
  • 亮度控制器 PCB [鏈接] - 1x
  • 女頭

其他 -

  • USB 線(與 Arduino 板兼容)
  • 焊接工具
  • 還有一些刀具

而已。

第 2 步:原理 - 它是如何工作的?

在跳躍之前討論我們?cè)谧鍪裁纯偸呛玫摹?/font>一點(diǎn)理論就足以開(kāi)始。

我需要某種傳感器來(lái)檢測(cè)光強(qiáng)度。LDR 或光敏電阻最適合這種情況。LDR 將面向人(就像手機(jī)傳感器面向正面/人一樣)并獲取光強(qiáng)度數(shù)據(jù)。數(shù)據(jù)將由 Arduino 讀取。那是范圍從 0 到 1024 的模擬數(shù)據(jù)。

如果我們映射值(0 - 1024),我們可以控制亮度。我嘗試使用 Arduino 的“鍵盤(pán)”庫(kù)來(lái)使用 Arduino 按下功能按鈕。這不起作用,它還會(huì)凍結(jié)硬件鍵盤(pán)(因?yàn)殡娔X知道鍵盤(pán)已經(jīng)在工作)。

所以我將傳感器數(shù)據(jù)發(fā)送到在 PC 上運(yùn)行的 python 程序。其余的由 python 完成,我的意思是控制亮度。

現(xiàn)在,讓我們開(kāi)始制作吧。

第 3 步:制作和測(cè)試電路/概念

為了證明我的概念,我首先在面包板上制作了電路。并編寫(xiě)了一個(gè)簡(jiǎn)單的程序,通過(guò)Arduino的串行監(jiān)視器輸出傳感器數(shù)據(jù)(光強(qiáng)數(shù)據(jù))。

這是我編寫(xiě)的程序(從 gi??thub 下載)-

// define sensor pin
int sensor_pin = A3;

void setup() {
  // set things here
  Serial.begin(9600);  // init serial communication at 9600 bps
}

void loop() {
  // mainloop
  int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
  Serial.println(sensorValue);              // send data over serial
  
  delay(200);                               // a little delay to make things work better
}

我通過(guò)串行獲得了一些輸出數(shù)據(jù)。數(shù)據(jù)范圍從 0 到 1024(理論上)。但實(shí)際上,沒(méi)有 LDR 是完美的(即使在同一批次中也不行)。所以我得到了從 0 到 950 之類(lèi)的數(shù)據(jù)。仍然有效。在我的應(yīng)用程序中并不重要。

所以這是一個(gè)成功的測(cè)試,現(xiàn)在我可以繼續(xù)下一步了。

第 4 步:設(shè)計(jì)和制作 PCB

?
?
?
pYYBAGNxJIKATtV4AACk_rYk4Lw928.png
?
1 / 2
?

我在easyEDA上使用了相同的電路并設(shè)計(jì)了PCB(印刷電路板)。您可以看到我使用了兩個(gè)傳感器,實(shí)際上這只是出于設(shè)計(jì)目的。有兩個(gè) LDR,它看起來(lái)像一只蝸牛。LDR_L 是未使用的 LDR。

然后我從PCBWay.com制作了 PCB 。PCBWay 是最好的也是我最喜歡的 PCB 制造商之一。只需 5 美元,我就可以獲得 10 個(gè) PCB!無(wú)論如何,我使用了他們的快速訂購(gòu)頁(yè)面,然后是快速訂購(gòu) pcb部分,上傳了我的 PCB 并選擇了顏色。而已!我認(rèn)為快速訂購(gòu)部分對(duì)我們所有了解不多但只想完成它的人來(lái)說(shuō)是一種祝福。從這里獲取 PCB

我之前只用過(guò)黑色,它太亮了,這次我嘗試了啞光黑色。等了大約 3-4 天后,我得到了漂亮的 PCB。質(zhì)量一如既往地令人驚嘆。焊盤(pán)、阻焊層、絲網(wǎng)印刷盡可能完美。我想我愛(ài)上了啞光黑。

第 5 步:焊接 PCB 和完整的硬件

?
?
?
poYBAGNxJISATdO3AAElACB9jr4741.png
?
1 / 3
?

現(xiàn)在是時(shí)候?qū)|西焊接到位了。這很簡(jiǎn)單,因?yàn)槟抢餂](méi)有太多組件。焊接所有東西,確保我沒(méi)有吸入烙鐵的煙霧。

我使用女性頭,因?yàn)槲沂且粋€(gè)即插即用的人。您可以將 Arduino 板本身焊接在板上。

注意:不要吸入烙鐵煙霧!它可能會(huì)導(dǎo)致癌癥!

第 6 步:對(duì)電路板進(jìn)行編程(Arduino 代碼)

現(xiàn)在是時(shí)候上傳Arduino的程序了。Arduino 使用串行通信將數(shù)據(jù)發(fā)送到 PC。

首先,我定義了傳感器引腳,即傳感器輸入數(shù)據(jù)的 Arduino 引腳。

// define sensor pin
int sensor_pin = A3;

在設(shè)置功能中,我以 9600 的波特率開(kāi)始串行通信。每次為 Arduino 板供電時(shí),設(shè)置功能僅運(yùn)行一次。

void setup() {
  // set things here
  Serial.begin(9600);  // init serial communication at 9600 bps
}

然后在主循環(huán)中它獲取數(shù)據(jù)并通過(guò)串行發(fā)送。保持 200ms 的一點(diǎn)延遲以使其順利運(yùn)行。

void loop() {
  // mainloop
  int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
  Serial.println(sensorValue);              // send data over serial
  
  delay(200);                               // a little delay to make things work better
}

這是完整的代碼。從下面復(fù)制或從這里下載。

/*  Computer Hack! 
    Brightness Controller

    (C) License: GPL3-General Public License

    author: ashraf minhaj
    mail  : ashraf_minhaj@yahoo.com
*/

// define sensor pin
int sensor_pin = A3;

void setup() {
  // set things here
  Serial.begin(9600);  // init serial communication at 9600 bps
}

void loop() {
  // mainloop
  int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
  Serial.println(sensorValue);              // send data over serial
  
  delay(200);                               // a little delay to make things work better
}

打開(kāi) Arduino.ide 并將程序上傳到我的 Arduino 板。

第 7 步:Python 編程(PC 版)

正如我們之前討論的,Arduino 向 Arduino 發(fā)送數(shù)據(jù),其余的由 python 完成。所以我寫(xiě)了一個(gè)簡(jiǎn)單的python腳本。

無(wú)論如何,如果您沒(méi)有安裝 python,請(qǐng)從這里安裝最新版本。安裝時(shí)請(qǐng)確保您已選中“將 python 添加到環(huán)境變量路徑”框。

好的,然后我打開(kāi)終端并安裝了兩個(gè)庫(kù),Pyserialscreen-brightness-control使用這些命令($ 符號(hào)表示它們?yōu)榻K端命令,復(fù)制沒(méi)有它們) -

$ pip install pyserial
$ pip install screen-brightness-control

安裝后,我編寫(xiě)了整個(gè)代碼。但是,讓我們向你們解釋一下。

在這里,我導(dǎo)入庫(kù)以使用它們。需要“serial.tools.list_ports”來(lái)自動(dòng)檢測(cè)Arduino板。

# import necessary libraries
import serial                                     # for serial communication
import serial.tools.list_ports                    # to get Arduino port automatically
import screen_brightness_control as brightness    # to control brightness

然后我聲明 buad rate 和端口號(hào)。端口會(huì)自動(dòng)檢測(cè)到,所以我將其保留為空字符串。但對(duì)于我的董事會(huì),buad rate 是 9600

BUAD_RATE = 9600                                  # Pro Micro's buad rate is 9600 
PORT      = ""

本節(jié)自動(dòng)獲取 USB 端口并嘗試與 Arduino 連接

# get sender device port automatically
serial_ports = list(serial.tools.list_ports.comports())  # get list of ports
for s_port in serial_ports:                              # iterate through all ports
    if 'Arduino Micro' in s_port.description:            # look for Pro Micro board
        PORT = str(s_port[0])                            # select first found board and
        break                                            # proceed

# connect with sender device
sender = serial.Serial(PORT, BUAD_RATE)

這是將 Arduino 數(shù)據(jù)(從 0 到 1024)轉(zhuǎn)換為 %data - 從 0 到 100 的函數(shù)。它稱為映射。Python map 函數(shù)做了其他事情,所以我不得不寫(xiě)它(雖然從互聯(lián)網(wǎng)上得到了一些幫助)。

def map_value(value, in_min=0, in_max=1024, out_min=0, out_max=100):
    """ To map values. Arduio sends values from 0 to 1024. My goal
    is to make them in between 0 to 100."""
    return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

其余代碼只是確保亮度保持在光強(qiáng)度水平

# mainloop
while 1: 
    # convert byte data into string then integer
    sensor_value = int(sender.readline().decode("utf-8"))  # get data
    final_value = map_value(value=sensor_value)            # map value (brightness in percentage)
    #print(sensor_value)
    print(final_value)
    brightness.set_brightness(final_value)                 # set brightness

# close port properly so that others can use it
sender.close()

無(wú)論如何,最好關(guān)閉使用后打開(kāi)的東西,無(wú)論是對(duì)話還是端口。

現(xiàn)在,我打開(kāi)了我最喜歡的 python 編輯器并運(yùn)行了程序。從github下載完整的程序。

""" Computer Hack! 
    Brightness Controller

    (C) License: GPL3-General Public License

    author: ashraf minhaj
    mail  : ashraf_minhaj@yahoo.com
"""

""" libraries -
$ pip install pyserial
$ pip install screen-brightness-control
"""

# import necessary libraries
import serial                                     # for serial communication
import serial.tools.list_ports                    # to get Arduino port automatically
import screen_brightness_control as brightness    # to control brightness

# device buadrate (bit per second)
# (change buadrate according to your need)
BUAD_RATE = 9600                                  # Pro Micro's buad rate is 9600 
PORT      = ""

# get sender device port automatically
serial_ports = list(serial.tools.list_ports.comports())  # get list of ports
for s_port in serial_ports:                              # iterate through all ports
    if 'Arduino Micro' in s_port.description:            # look for Pro Micro board
        PORT = str(s_port[0])                            # select first found board and
        break                                            # proceed

# connect with sender device
sender = serial.Serial(PORT, BUAD_RATE)

def map_value(value, in_min=0, in_max=1024, out_min=0, out_max=100):
    """ To map values. Arduio sends values from 0 to 1024. My goal
    is to make them in between 0 to 100."""
    return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

# mainloop
while 1: 
    # convert byte data into string then integer
    sensor_value = int(sender.readline().decode("utf-8"))  # get data
    final_value = map_value(value=sensor_value)            # map value (brightness in percentage)
    #print(sensor_value)
    print(final_value)
    brightness.set_brightness(final_value)                 # set brightness

# close port properly so that others can use it
sender.close()

第 8 步:即插即用!

最后,我用 USB 電纜將開(kāi)發(fā)板連接到我的 PC。然后運(yùn)行python程序。您可以在視頻中看到其余的內(nèi)容。它就像一個(gè)魅力!我以前從未對(duì)自己的工作如此滿意。

現(xiàn)在我的電腦有點(diǎn)智能了。

制作快樂(lè)?。?!

?

提示:為了節(jié)省電量,您可能需要削減 arduino LED 燈的痕跡。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)