知識(shí)點(diǎn):什么是掌控板?
掌控板是一塊普及STEAM創(chuàng)客教育、人工智能教育、機(jī)器人編程教育的開源智能硬件。它集成ESP-32高性能雙核芯片,支持WiFi和藍(lán)牙雙模通信,可作為物聯(lián)網(wǎng)節(jié)點(diǎn),實(shí)現(xiàn)物聯(lián)網(wǎng)應(yīng)用。同時(shí)掌控板上集成了OLED顯示屏、RGB燈、加速度計(jì)、麥克風(fēng)、光線傳感器、蜂鳴器、按鍵開關(guān)、觸摸開關(guān)、金手指外部拓展接口,支持圖形化及MicroPython代碼編程,可實(shí)現(xiàn)智能機(jī)器人、創(chuàng)客智造作品等智能控制類應(yīng)用。
掌控板硬件特性:
ESP-32主控
處理器:Tensilica LX6雙核處理器(一核處理高速連接;一核獨(dú)立應(yīng)用開發(fā))
主頻:高達(dá)240MHz的時(shí)鐘頻率
SRAM:520KB
Flash:8MB
Wi-Fi標(biāo)準(zhǔn):FCC/CE/TELEC/KCC
Wi-Fi協(xié)議:802.11 b/g/n/d/e/i/k/r (802.11n,速度高達(dá)150 Mbps),A-MPDU和A-MSDU聚合,支持0.4us防護(hù)間隔
頻率范圍:2.4~2.5 GHz
藍(lán)牙協(xié)議:符合藍(lán)牙v4.2 BR/EDR和BLE標(biāo)準(zhǔn)
藍(lán)牙音頻:CVSD和SBC音頻低功耗:10uA
供電方式:Micro USB供電
工作電壓:3.3V
最大工作電流:200mA
最大負(fù)載電流:1000mA
掌控板載
三軸加速度計(jì)MSA300,測(cè)量范圍:±2/4/8/16G
地磁傳感器MMC5983MA,測(cè)量范圍:±8 Gauss;精度0.4mGz,電子羅盤誤差±0.5°
光線傳感器
麥克風(fēng)
3 顆全彩ws2812燈珠
1.3英寸OLED顯示屏,支持16*16字符顯示,分辨率128x64
無(wú)源蜂鳴器
支持2個(gè)物理按鍵(A/B)、6個(gè)觸摸按鍵
支持1路鱷魚夾接口,可方便接入各種阻性傳感器
拓展接口
20通道數(shù)字I/O, (其中支持12路PWM,6路觸摸輸入)
5通道12bit模擬輸入ADC,P0~P4
1路的外部輸入鱷魚夾接口:EXT/GND
支持I2C、UART、SPI通訊協(xié)議
6、RGB藍(lán)色呼吸燈
i = None
from mpython import *
import time
while True:
for i in range(256):
rgb.fill( (int(0), int(0), int(i)) )
rgb.write()
time.sleep_ms(1)
time.sleep_ms(20)
for i in range(255, -1, -1):
rgb.fill( (int(0), int(0), int(i)) )
rgb.write()
time.sleep_ms(1)
time.sleep_ms(20)
注解:
for…in…循環(huán)語(yǔ)句(簡(jiǎn)稱為for循環(huán))
for語(yǔ)句是microPython中的一個(gè)循環(huán)控制語(yǔ)句,任何有序的序列對(duì)象內(nèi)的元素都可以遍歷,比如字符串、列表list、元組等等。
簡(jiǎn)單的for循環(huán)代碼格式:
for i in [1,2,3,4,5]:
print(i*5)
遍歷列表[1,2,3,4,5],滿足就循環(huán)執(zhí)行i*5;
不要忘記for語(yǔ)句后面的英文冒號(hào);
不要忘記print()函數(shù)前面的縮進(jìn)。
12345
上述代碼可這樣理解:
1. 一群人在排隊(duì)辦理業(yè)務(wù),也就是列表[1,2,3,4,5];
2. 它們中的每一個(gè)被叫到號(hào)的時(shí)候(for i in),就輪流進(jìn)去一個(gè)空房間 i 辦業(yè)務(wù);
3. 每一個(gè)數(shù)字進(jìn)去房間之后,都對(duì)計(jì)算機(jī)說(shuō):“我要辦這個(gè)業(yè)務(wù)”,也就是print(i),然后計(jì)算機(jī)為每一個(gè)數(shù)字提供了打印服務(wù),將1,2,3,4,5都打印在了屏幕上。
for循環(huán)的3個(gè)要點(diǎn)即是:1.空房間;2.一群等著辦業(yè)務(wù)的人;3.業(yè)務(wù)流程
for循環(huán):空房間
上面代碼中的i就是空房間,學(xué)名叫元素(item),你可以把它當(dāng)成是一個(gè)變量。給房間取一個(gè)名字,也就是“變量名”。
for循環(huán):一群排隊(duì)辦業(yè)務(wù)的人
列表、字典和字符串這類數(shù)據(jù)類型往往可理解為“一群排隊(duì)辦業(yè)務(wù)的人”,而整數(shù)、浮點(diǎn)數(shù)不行。這個(gè)過(guò)程,在Python中的學(xué)名就叫做遍歷。
mPthon 圖形編程
7、板載三位變幻RGB彩虹燈
#MicroPython動(dòng)手做(13)——掌控板之RGB三色燈
#板載三位變幻RGB彩虹燈
from mpython import *
import neopixel
import time
my_rgb = neopixel.NeoPixel(Pin(Pin.P7), n=3, bpp=3, timing=1)
def make_rainbow(_neopixel, _num, _bright, _offset):
_rgb = ((255,0,0), (255,127,0), (255,255,0), (0,255,0), (0,255,255), (0,0,255), (136,0,255), (255,0,0))
for i in range(_num):
t = 7 * i / _num
t0 = int(t)
r = round((_rgb[t0][0] + (t-t0)*(_rgb[t0+1][0]-_rgb[t0][0]))*_bright)>>8
g = round((_rgb[t0][1] + (t-t0)*(_rgb[t0+1][1]-_rgb[t0][1]))*_bright)>>8
b = round((_rgb[t0][2] + (t-t0)*(_rgb[t0+1][2]-_rgb[t0][2]))*_bright)>>8
_neopixel[(i + _offset) % _num] = (r, g, b)
offset = 0
while True:
make_rainbow(my_rgb, 3, 10, offset)
offset = offset + 1
my_rgb.write()
time.sleep_ms(100)
mPythonX 圖形編程
8、外接八位RGB彩虹燈環(huán)
#MicroPython動(dòng)手做(13)——掌控板之RGB三色燈
#外接八位RGB彩虹燈環(huán)
from mpython import *
import neopixel
import time
my_rgb = neopixel.NeoPixel(Pin(Pin.P8), n=8, bpp=3, timing=1)
def make_rainbow(_neopixel, _num, _bright, _offset):
_rgb = ((255,0,0), (255,127,0), (255,255,0), (0,255,0), (0,255,255), (0,0,255), (136,0,255), (255,0,0))
for i in range(_num):
t = 7 * i / _num
t0 = int(t)
r = round((_rgb[t0][0] + (t-t0)*(_rgb[t0+1][0]-_rgb[t0][0]))*_bright)>>8
g = round((_rgb[t0][1] + (t-t0)*(_rgb[t0+1][1]-_rgb[t0][1]))*_bright)>>8
b = round((_rgb[t0][2] + (t-t0)*(_rgb[t0+1][2]-_rgb[t0][2]))*_bright)>>8
_neopixel[(i + _offset) % _num] = (r, g, b)
offset = 0
while True:
make_rainbow(my_rgb, 8, 6, offset)
offset = offset + 1
my_rgb.write()
time.sleep_ms(100)
mPython X 圖形編程
9、24位流動(dòng)RGB彩虹燈環(huán)
#MicroPython動(dòng)手做(13)——掌控板之RGB三色燈
#24位流動(dòng)RGB彩虹燈環(huán)
from mpython import *
import neopixel
import time
my_rgb = neopixel.NeoPixel(Pin(Pin.P8), n=24, bpp=3, timing=1)
def make_rainbow(_neopixel, _num, _bright, _offset):
_rgb = ((255,0,0), (255,127,0), (255,255,0), (0,255,0), (0,255,255), (0,0,255), (136,0,255), (255,0,0))
for i in range(_num):
t = 7 * i / _num
t0 = int(t)
r = round((_rgb[t0][0] + (t-t0)*(_rgb[t0+1][0]-_rgb[t0][0]))*_bright)>>8
g = round((_rgb[t0][1] + (t-t0)*(_rgb[t0+1][1]-_rgb[t0][1]))*_bright)>>8
b = round((_rgb[t0][2] + (t-t0)*(_rgb[t0+1][2]-_rgb[t0][2]))*_bright)>>8
_neopixel[(i + _offset) % _num] = (r, g, b)
offset = 0
while True:
make_rainbow(my_rgb, 24, 10, offset)
offset = offset + 1
my_rgb.write()
time.sleep_ms(100)
mPython X 圖形編程
10、neopixel — WS2812 燈(環(huán))帶
NeoPixels也被稱為WS2812 LED彩帶(環(huán)),是連接在一起的全彩色led燈串。你可以設(shè)置他它們的紅色,綠色和藍(lán)色值, 在0到255之間。neopixel模塊可通過(guò)精確的時(shí)間控制,生成WS2812控制信號(hào)。
構(gòu)建對(duì)象
class NeoPixel(pin, n, bpp=3, timing=0, brightness=1.0)
pin :輸出引腳,可使用引腳見下文
n ED燈的個(gè)數(shù)
bpp:
3:默認(rèn)為3元組RGB
4:對(duì)于具有3種以上顏色的LED,例如RGBW像素或RGBY像素,采用4元組RGBY或RGBY像素
timing:默認(rèn)等于0,為400KHz速率;等于1,為800KHz速率
brightness:亮度調(diào)節(jié),范圍0~1,默認(rèn)為1.0
注意
NeoPixel可使用的pin引腳有掌控板的P5,P6,P7(板上RGB),P8,P9,P11,P13,P14,P15,P16,P19,P20,–實(shí)驗(yàn)接在P8
方法
NeoPixel.write(),
把數(shù)據(jù)寫入LED中。
示例:
np[0] = (255, 255, 255) # 設(shè)置第一個(gè)LED像素為白色
np.write()
NeoPixel.fill(rgb_buf)
填充所有LED像素。
rgb_buf :rgb
顏色
示例:
np.fill( (255, 255, 255) )
NeoPixel.brightness(brightness)
亮度調(diào)節(jié),范圍0~1.0
本實(shí)驗(yàn)場(chǎng)景圖文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-615976.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-615976.html
到了這里,關(guān)于【雕爺學(xué)編程】MicroPython動(dòng)手做(13)——掌控板之RGB三色燈2的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!