• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    做一個(gè)會(huì)“變臉”的小寵物

    2017-02-24 04:00:55龔瑩瑜謝作如
    中國(guó)信息技術(shù)教育 2017年1期
    關(guān)鍵詞:變臉二進(jìn)制賦值

    龔瑩瑜 謝作如

    川劇變臉是川劇的特技之一,演員在舞臺(tái)上的一抬手一提足,臉上的面具都可能發(fā)生翻天覆地的變化,滿滿的神秘感、震撼的舞臺(tái)效果,都給了觀眾不一樣的體驗(yàn)。

    偶然間看到DFRobot社區(qū)的一個(gè)表白神器——跳動(dòng)的心(如圖1),一個(gè)火柴盒大小的點(diǎn)陣屏,非常適合作為送給女友的小禮物、小伙伴的愛(ài)心玩具等。這個(gè)創(chuàng)意讓我心動(dòng),也引發(fā)了我的思考:點(diǎn)陣屏能夠畫(huà)出愛(ài)心,那能不能繪制出臉譜呢?

    ● 器材和原理

    創(chuàng)客空間剛好有盛思的Duinoplus box實(shí)驗(yàn)箱,這款教學(xué)套件整合了8×8的點(diǎn)陣屏(如圖2),很適合做變臉的研究。所謂的8×8是指點(diǎn)陣屏由8行8列的LED組成,共有64個(gè)點(diǎn)組成,可以顯示簡(jiǎn)單的圖形。

    這款點(diǎn)陣屏不僅可以用X、Y來(lái)定位,精確控制某一個(gè)LED的狀態(tài),也可以用行、列賦值的方法,給某一行寫(xiě)一個(gè)參數(shù),以點(diǎn)亮相應(yīng)的LED。行賦值的代碼以二進(jìn)制為基礎(chǔ),每一行對(duì)應(yīng)的是8位二進(jìn)制,左邊的位高,右邊的位低(如圖3),賦的值是該行所有亮的點(diǎn)對(duì)應(yīng)值之和。如果給第一行賦值1(十進(jìn)制),則最右邊的LED亮,其他都暗;賦值255,則所有的LED亮。因?yàn)槭M(jìn)制的1對(duì)應(yīng)的二進(jìn)制數(shù)為“00000001”,255對(duì)應(yīng)的則是“11111111”。

    為了更好地理解行賦值,需要先學(xué)習(xí)二進(jìn)制。二進(jìn)制是逢2進(jìn)位的進(jìn)位制。0、1是基本算符。二進(jìn)制數(shù)據(jù)也是采用位置計(jì)數(shù)法,其位權(quán)是以2為底的冪。最后一位是2的0次冪,倒數(shù)第二位是2的1次冪,以此類(lèi)推。

    所以把二進(jìn)制化成十進(jìn)制只需要將數(shù)值乘以2的冪次相加即可。例如,把二進(jìn)制11111111轉(zhuǎn)化為十進(jìn)制,*1+*1+*1+*1+*1+*1+ *1+*1+*1=255。

    知道了如何點(diǎn)亮點(diǎn)陣屏后,又一個(gè)問(wèn)題來(lái)了——如何用點(diǎn)陣屏顯示圖片呢?其實(shí)位圖都是由像素點(diǎn)組成的,只是平時(shí)我們看到的圖片像素點(diǎn)很多,而且像素點(diǎn)又很小,所有我們看圖片的時(shí)候很難發(fā)現(xiàn)。如果把圖片一直放大,就能發(fā)現(xiàn)圖片上出現(xiàn)了馬賽克一樣的方格,這就是像素點(diǎn)。所以點(diǎn)陣屏上的這64個(gè)點(diǎn)就相當(dāng)于“像素點(diǎn)”,而我們要做的就是利用這些像素點(diǎn)繪制出不同的臉譜。

    ● 繪制臉譜

    知道了點(diǎn)陣屏的點(diǎn)亮方法和繪圖的原理之后,接下來(lái)我們就可以在點(diǎn)陣屏上開(kāi)始繪制臉譜了。

    打開(kāi)Excel,模擬點(diǎn)陣屏的排布建立一個(gè)8×8的表格。然后,在表格中確定圖案所對(duì)應(yīng)的單元格位置,然后求出每行所對(duì)應(yīng)的值。如圖4中畫(huà)出的是一張笑臉。

    觀察圖4可知:

    第0行:*0+*0+*0+*0+*0+*0+ *0+*0+*0=0。

    第1行:*0+*1+*0+*0+*0+*0+ *0+*6+*0=66。

    第2行:*1+*0+*0+*1+*0+*0+ *1+*0+*1=165。

    第3行:*0+*0+*0+*0+*0+*0+ *0+*0+*0=0。

    第4行:*0+*0+*0+*0+*0+*0+ *0+*0+*0=0。

    第5行:*0+*0+*1+*0+*0+*1+ *0+*0+*0=36。

    第6行:*0+*0+*0+*1+*1+*0+ *0+*0+*0=24。

    第7行:*0+*0+*0+*0+*0+*0+ *0+*0+*0=0。

    確定了每行所對(duì)應(yīng)的值后,就可以開(kāi)始點(diǎn)亮點(diǎn)陣屏了。每個(gè)臉譜都由8行點(diǎn)陣組成,為了讓代碼能簡(jiǎn)潔明了,我們用8個(gè)長(zhǎng)度的數(shù)組來(lái)存儲(chǔ)點(diǎn)陣屏中每行所對(duì)應(yīng)的值。然后,利用循環(huán)語(yǔ)句對(duì)數(shù)組中的各個(gè)值進(jìn)行讀取,把這些值賦給對(duì)應(yīng)的行,讓點(diǎn)陣屏上顯示笑臉。同理可以繪制其他的臉譜,如圖5所示的三組數(shù)字,分別代表笑臉、哭臉和無(wú)表情的臉。

    ● 實(shí)現(xiàn)變臉

    準(zhǔn)備工作完成了,接下來(lái)我們開(kāi)始編寫(xiě)代碼,以便控制點(diǎn)陣屏實(shí)現(xiàn)“變臉”的過(guò)程?!白兡槨钡墓ぷ髁鞒倘缦拢寒?dāng)程序開(kāi)始運(yùn)行的時(shí)候,點(diǎn)陣屏上顯示一種臉譜;當(dāng)左、中、右按鈕被按下的時(shí)候,分別出現(xiàn)不同的臉譜。相對(duì)來(lái)說(shuō),代碼的編寫(xiě)倒最簡(jiǎn)單。當(dāng)按鈕按下時(shí)是高電位,也就是1電位,松開(kāi)時(shí)是低電位,也就是0電位,可以用邏輯模塊中的等于節(jié)點(diǎn)進(jìn)行編程,也可以把按鈕模塊作為條件,因?yàn)闆](méi)有說(shuō)明時(shí),就是默認(rèn)條件是高電位。完整的代碼如圖6所示,效果圖如圖7所示。

    ● 拓展升級(jí)

    利用實(shí)驗(yàn)箱制作的作品僅僅是原型,不夠美觀,也不好展示。我們的最終作品應(yīng)該利用體積較小的Arduino板子和點(diǎn)陣屏模塊,結(jié)合3D打印合,呈現(xiàn)各種有趣的作品形態(tài),如會(huì)變臉的小寵物、鑰匙掛墜等。圖8所示的作品,是不是很酷炫?

    如果對(duì)相關(guān)內(nèi)容感興趣,請(qǐng)關(guān)注主持人博客。

    猜你喜歡
    變臉二進(jìn)制賦值
    關(guān)于1 1/2 … 1/n的一類(lèi)初等對(duì)稱(chēng)函數(shù)的2-adic賦值
    L-代數(shù)上的賦值
    用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
    有趣的進(jìn)度
    二進(jìn)制在競(jìng)賽題中的應(yīng)用
    強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
    杜特爾特回國(guó)后“變臉”了嗎?(社評(píng))
    土耳其的“變臉”幅度才是關(guān)鍵
    利用賦值法解決抽象函數(shù)相關(guān)問(wèn)題オ
    希拉里緣何“變臉”
    南方周末(2015-10-15)2015-10-15 00:41:19
    搜索| 寿光市| 壤塘县| 丹寨县| 尚志市| 新丰县| 武义县| 凤凰县| 南岸区| 温宿县| 武冈市| 嘉禾县| 宜昌市| 偃师市| 杨浦区| 临澧县| 沂水县| 内乡县| 广昌县| 云安县| 亳州市| 胶南市| 万州区| 新津县| 临澧县| 江华| 家居| 卓尼县| 察雅县| 海丰县| 措美县| 沅陵县| 乌兰浩特市| 汤阴县| 玉树县| 城口县| 新沂市| 布尔津县| 台南市| 安阳县| 东明县|