概述
在本課程中,您將學(xué)習(xí)如何將micro:bit連接到無焊面包板,以及如何打開和關(guān)閉LED,控制其亮度以及如何使用三個(gè)LED發(fā)出交通信號。
您將首先使單個(gè)LED閃爍,然后控制LED的亮度,最后再添加兩個(gè)LED以使交通信號如上所示。
部分
要關(guān)注本課程中的所有活動(dòng),您將需要以下部分。您還需要一個(gè)微型USB導(dǎo)線將micro:bit連接到計(jì)算機(jī)。
》 BBC micro:bit
產(chǎn)品ID:3530
英國入侵就在這里!不,不是音樂。..微控制器!美國的新手是學(xué)習(xí)編程和電子技術(shù)的最新,最簡單的方法-BBC 。..
$ 14.95
庫存中
添加到購物車
半尺寸面包板
產(chǎn)品編號:64
這是一個(gè)可愛的半尺寸面包板,適用于小型項(xiàng)目。它是2.2英寸x 3.4英寸(5.5厘米x 8.5厘米),中間有一個(gè)標(biāo)準(zhǔn)的雙條帶,兩個(gè)上都有兩個(gè)電源導(dǎo)軌。..
庫存
缺貨
小鱷魚夾至公跳線束-12件
產(chǎn)品ID:3255
這些電纜用于具有非標(biāo)頭友好型表面的面包板將成為您最好的朋友!您將不再有長長的短吻鱷皮夾了。..
$ 7.95
入庫價(jià)
div》
添加到購物車
超級明亮的5mm紅色LED(25個(gè)裝)
產(chǎn)品ID:297
需要一些真正的LED嗎?我們是這些紅色紅色LED的忠實(shí)擁護(hù)者,實(shí)際上我們只在套件中使用它們。它們非常明亮,并具有約20度的LED光束。他們?nèi)ァ?.
$ 8.00
入庫
添加到購物車
超亮黃色5mm LED(25件裝)
產(chǎn)品ID:2700
需要一些真正亮的LED嗎?我們是這些黃色透明LED的忠實(shí)擁護(hù)者,實(shí)際上,我們僅在套件中使用它們。它們非常明亮!它們很容易進(jìn)入面包板并。..
$ 4.95
入庫存
添加到購物車
超亮綠色5mm LED(25件裝)
產(chǎn)品編號:300
需要一些真正明亮的LED嗎?我們是這些透明綠色LED的忠實(shí)擁護(hù)者,實(shí)際上我們只在套件中使用它們。它們非常明亮,并具有約20度的LED光束。他們?nèi)ァ?.
$ 8.00
入庫
添加到購物車
直通電阻-470 ohm 5%1/4W-每包25個(gè)
產(chǎn)品ID:2781
ΩMG!您將無法抵抗這些方便的電阻器包!那么,從軸向上看,它們可以為您提供所有的抵抗力!這是25包。..
$ 0.75
存貨
添加到購物車
面包板布局
如下圖所示連接電阻和LED。確保LED的較長引線(正極引線)在左側(cè)。
將micro:bit連接到面包板時(shí),最好將鱷魚夾垂直放入micro:bit的墊板上的孔中,否則夾可能會滑落或意外
無焊面包板的工作方式是在您戳入組件引線的孔的后面找到一個(gè)金屬夾。
p》
將micro:bit的pin0連接到面包板第3行的紅色引線實(shí)際上將引線連接到該行的每個(gè)孔位置(至少對于左行的5行而言)。然后,電阻器的右側(cè)連接到右側(cè)排第3行下方的線夾,從而連接到LED的正極。
面包板兩側(cè)的長列的工作方式不同從面包板中央?yún)^(qū)域的主要連接排開始。這些長列中的每一個(gè)都由一個(gè)通常用于供電的長夾子組成。在這種情況下,右列(旁邊有一條藍(lán)線)連接到micro:bit的GND連接,也連接到LED的負(fù)極。
電阻是必要的,以限制流過LED的電流。不允許從micro:bit的數(shù)字輸出汲取超過3mA的電流。 470Ω電阻器將LED電流限制在3mA以下。
閃爍LED
首先,讓我們的LED閃爍。使LED閃爍的方法是一遍又一遍地遵循以下代碼說明序列:
打開LED
延遲一段時(shí)間
關(guān)閉LED
延遲一段時(shí)間
此代碼取決于您選擇使用的編程平臺。
JavaScript塊代碼
JavaScript塊代碼編輯器直接嵌入在下面的此頁面中。在編輯器中,您可以單擊“下載”按鈕(右下方),然后將下載的文件復(fù)制到您的micro:bit?;蛘撸梢詥螕舸颂幵趩为?dú)的瀏覽器選項(xiàng)卡中打開編輯器。
要安裝程序,請將十六進(jìn)制文件復(fù)制到您的micro:bit 。請參閱本指南以開始使用Javascript塊。
Forever 塊將重復(fù)運(yùn)行該塊中包含的所有代碼。
MicroPython
要運(yùn)行MicroPython版本代碼中,請?jiān)诖颂幋蜷_在線Python編輯器,并將以下代碼粘貼到編輯器窗口中。
下載:文件
復(fù)制代碼
from microbit import *
while True:
pin0.write_digital(1) # turn pin0 (and the LED) on
sleep(500) # delay for half a second (500 milliseconds)
pin0.write_digital(0) # turn pin0 (and the LED) off
sleep(500) # delay for half a second from microbit import *
while True:
pin0.write_digital(1) # turn pin0 (and the LED) on
sleep(500) # delay for half a second (500 milliseconds)
pin0.write_digital(0) # turn pin0 (and the LED) off
sleep(500) # delay for half a second
程序首先導(dǎo)入 microbit 包含用于控制引腳開和關(guān)所需的 write_digital 函數(shù)的庫。
while 循環(huán)將重復(fù)其中包含的命令,直到您拔出微型插頭。 :位這些命令首先打開該引腳,延遲半秒鐘,然后將其關(guān)閉,然后再次延遲。
請按照本指南確保已為micro:bit設(shè)置了Arduino環(huán)境。
現(xiàn)在通過單擊 File 菜單和 New 來啟動(dòng)新的Sketch。然后將以下代碼粘貼到編輯器窗口中。
下載:文件
復(fù)制代碼
// define a constant for the LED pin
const int ledPin = 0;
// setup is run just once when the micro:bit starts up
void setup() {
pinMode(ledPin, OUTPUT); // set the ledPin (pin0) to be an output
}
void loop() {
digitalWrite(ledPin, HIGH); // turn the ledPin (and LED) on
delay(500); // delay for half a second (500 milliseconds)
digitalWrite(ledPin, LOW); // turn the ledPin (and LED) off
delay(500); // delay for half a second
} // define a constant for the LED pin
const int ledPin = 0;
// setup is run just once when the micro:bit starts up
void setup() {
pinMode(ledPin, OUTPUT); // set the ledPin (pin0) to be an output
}
void loop() {
digitalWrite(ledPin, HIGH); // turn the ledPin (and LED) on
delay(500); // delay for half a second (500 milliseconds)
digitalWrite(ledPin, LOW); // turn the ledPin (and LED) off
delay(500); // delay for half a second
}
保存文件,然后將其上傳到您的micro:bit。
Arduino版本該代碼的代碼與MicroPython和JavaScript Blocks代碼略有不同,因?yàn)槭褂肁rduino時(shí),您必須指定該引腳用作輸出,而對于其他語言,這是在您第一次將該引腳用作引腳時(shí)自動(dòng)發(fā)生的。輸出。
交通信號
此該示例使用三個(gè)LED制作模型交通信號燈。如果愿意,可以使用所有紅色LED,但是如果使用紅色,黃色和綠色,則更現(xiàn)實(shí)。
LED依次以紅色,黃色,綠色,黃色循環(huán),然后再次變回紅色。
要添加額外的LED和電阻器,請按照以下面包板布局所示進(jìn)行布線。
請確保LED正確定位,并且較長的正極引線(陽極)向左。
JavaScript塊代碼
JavaScript塊代碼編輯器直接嵌入在下面的此頁面中。在編輯器中,您可以單擊“下載”按鈕(右下方),然后將下載的文件復(fù)制到您的micro:bit。或者,您可以單擊此處在單獨(dú)的瀏覽器選項(xiàng)卡中打開編輯器。
MicroPython代碼
下面列出了MicroPython代碼。
下載:文件
復(fù)制代碼
from microbit import *
red_pin = pin0 # giving the LED pins names by using variables
amber_pin = pin1 # makes it easier to see how the program works
green_pin = pin2
while True:
# red - turn amber LED off and red LED on
amber_pin.write_digital(0)
red_pin.write_digital(1)
sleep(4000) # delay 4 seconds
# amber - turn red LED off and amber LED on
red_pin.write_digital(0)
amber_pin.write_digital(1)
sleep(1000)
# green - turn amber LED off and green LED on
amber_pin.write_digital(0)
green_pin.write_digital(1)
sleep(4000)
# amber - turn green LED off and amber LED on
green_pin.write_digital(0)
amber_pin.write_digital(1)
sleep(1000) from microbit import *
red_pin = pin0 # giving the LED pins names by using variables
amber_pin = pin1 # makes it easier to see how the program works
green_pin = pin2
while True:
# red - turn amber LED off and red LED on
amber_pin.write_digital(0)
red_pin.write_digital(1)
sleep(4000) # delay 4 seconds
# amber - turn red LED off and amber LED on
red_pin.write_digital(0)
amber_pin.write_digital(1)
sleep(1000)
# green - turn amber LED off and green LED on
amber_pin.write_digital(0)
green_pin.write_digital(1)
sleep(4000)
# amber - turn green LED off and amber LED on
green_pin.write_digital(0)
amber_pin.write_digital(1)
sleep(1000)
Arduino代碼
該程序的Arduino版本與其他兩個(gè)版本非常相似。
下載:文件
復(fù)制代碼
// define constants for each LED pin
const int redPin = 0;
const int amberPin = 1;
const int greenPin = 2;
void setup() {
// set all three pins to act as digital outputs
pinMode(redPin, OUTPUT);
pinMode(amberPin, OUTPUT);
pinMode(greenPin, OUTPUT);
}
void loop() {
// red - turn amber LED off and red LED on
digitalWrite(amberPin, LOW);
digitalWrite(redPin, HIGH);
delay(4000); // delay 4 seconds
// amber - turn red LED off and amber LED on
digitalWrite(redPin, LOW);
digitalWrite(amberPin, HIGH);
delay(1000);
// green - turn amber LED off and green LED on
digitalWrite(amberPin, LOW);
digitalWrite(greenPin, HIGH);
delay(4000);
// amber - turn green LED off and amber LED on
digitalWrite(greenPin, LOW);
digitalWrite(amberPin, HIGH);
delay(1000);
} // define constants for each LED pin
const int redPin = 0;
const int amberPin = 1;
const int greenPin = 2;
void setup() {
// set all three pins to act as digital outputs
pinMode(redPin, OUTPUT);
pinMode(amberPin, OUTPUT);
pinMode(greenPin, OUTPUT);
}
void loop() {
// red - turn amber LED off and red LED on
digitalWrite(amberPin, LOW);
digitalWrite(redPin, HIGH);
delay(4000); // delay 4 seconds
// amber - turn red LED off and amber LED on
digitalWrite(redPin, LOW);
digitalWrite(amberPin, HIGH);
delay(1000);
// green - turn amber LED off and green LED on
digitalWrite(amberPin, LOW);
digitalWrite(greenPin, HIGH);
delay(4000);
// amber - turn green LED off and amber LED on
digitalWrite(greenPin, LOW);
digitalWrite(amberPin, HIGH);
delay(1000);
}
LED亮度控制
除了打開和關(guān)閉LED之外,還可以使用它來控制LED的亮度。
在在此示例中,A按鈕將使LED調(diào)光器變亮,而B按鈕將使它變亮。同時(shí),micro:bits內(nèi)置的LED顯示屏將顯示0到9之間的數(shù)字,指示亮度級別。
JavaScript阻止代碼
要在單獨(dú)的標(biāo)簽中打開JavaScript阻止代碼,請單擊此處。
實(shí)際上,這里發(fā)生了很多事情。讓我們以開始時(shí)的 塊開始。當(dāng)micro:bit啟動(dòng)時(shí),此塊僅運(yùn)行一次,它定義了四個(gè)變量:
min_power-當(dāng)0熄滅且1023為最大亮度時(shí),LED的最小輸出水平
max_power-LED的最大輸出電平。這兩個(gè)變量允許您設(shè)置亮度的可能范圍。
power_step-亮度將以10步變化,因此此值是根據(jù)最小值和最大值計(jì)算的。
亮度-亮度級別,介于0到10之間的一個(gè)數(shù)字。
永遠(yuǎn)重復(fù)運(yùn)行的 forever 循環(huán)設(shè)置名為 power 根據(jù)亮度級別。
要增加和減少亮度,使用了兩個(gè)處理程序。這些響應(yīng)按下按鈕A或按鈕B,然后顯示亮度級別并使用 analog write 塊在 pin0 上設(shè)置輸出級別。
MicroPython
這是MicroPython代碼
下載:文件
復(fù)制代碼
from microbit import *
min_power = 50
max_power = 1023
power_step = (max_power - min_power) / 9
brightness = 0
def set_power(brightness):
display.show(str(brightness))
if brightness == 0:
pin0.write_analog(0)
else:
pin0.write_analog(brightness * power_step + min_power)
set_power(brightness)
while True:
if button_a.was_pressed():
brightness -= 1
if brightness 《 0:
brightness = 0
set_power(brightness)
elif button_b.was_pressed():
brightness += 1
if brightness 》 9:
brightness = 9
set_power(brightness)
sleep(100) from microbit import *
min_power = 50
max_power = 1023
power_step = (max_power - min_power) / 9
brightness = 0
def set_power(brightness):
display.show(str(brightness))
if brightness == 0:
pin0.write_analog(0)
else:
pin0.write_analog(brightness * power_step + min_power)
set_power(brightness)
while True:
if button_a.was_pressed():
brightness -= 1
if brightness 《 0:
brightness = 0
set_power(brightness)
elif button_b.was_pressed():
brightness += 1
if brightness 》 9:
brightness = 9
set_power(brightness)
sleep(100)
Arduino代碼
使用micro:bit顯示器的Arduino代碼有所不同,因?yàn)樗褂昧?a target="_blank">Adafruit GFX庫。
下載:文件
復(fù)制代碼
#include
const int ledPin = 0;
const int minPower = 50;
const int maxPower = 255;
const int powerStep = (maxPower - minPower) / 9;
int brightness = 0;
Adafruit_Microbit_Matrix microbit;
void setup() {
pinMode(ledPin, OUTPUT);
microbit.begin();
pinMode(PIN_BUTTON_A, INPUT);
pinMode(PIN_BUTTON_B, INPUT);
setPower(brightness);
}
void loop() {
if (digitalRead(PIN_BUTTON_A) == LOW) {
brightness --;
if (brightness 《 0) {
brightness = 0;
}
setPower(brightness);
delay(200);
}
else if (digitalRead(PIN_BUTTON_B) == LOW) {
brightness ++;
if (brightness 》 9) {
brightness = 9;
}
setPower(brightness);
delay(200);
}
}
void setPower(int brightness) {
microbit.print(brightness);
if (brightness == 0) {
analogWrite(ledPin, 0);
}
else {
analogWrite(ledPin, brightness * powerStep + minPower);
}
} #include
const int ledPin = 0;
const int minPower = 50;
const int maxPower = 255;
const int powerStep = (maxPower - minPower) / 9;
int brightness = 0;
Adafruit_Microbit_Matrix microbit;
void setup() {
pinMode(ledPin, OUTPUT);
microbit.begin();
pinMode(PIN_BUTTON_A, INPUT);
pinMode(PIN_BUTTON_B, INPUT);
setPower(brightness);
}
void loop() {
if (digitalRead(PIN_BUTTON_A) == LOW) {
brightness --;
if (brightness 《 0) {
brightness = 0;
}
setPower(brightness);
delay(200);
}
else if (digitalRead(PIN_BUTTON_B) == LOW) {
brightness ++;
if (brightness 》 9) {
brightness = 9;
}
setPower(brightness);
delay(200);
}
}
void setPower(int brightness) {
microbit.print(brightness);
if (brightness == 0) {
analogWrite(ledPin, 0);
}
else {
analogWrite(ledPin, brightness * powerStep + minPower);
}
}
其他要做的事情
使用最喜歡的micro:bit編程語言,嘗試修改 blink 或流量信號代碼來更改LED的計(jì)時(shí)。
對于交通信號項(xiàng)目,您還可以嘗試更改代碼,使其表現(xiàn)得像人行橫道,并且燈光會根據(jù)您的需求而變化按下按鈕A。
責(zé)任編輯:wv
-
led
+關(guān)注
關(guān)注
240文章
23062瀏覽量
657049 -
面包板
+關(guān)注
關(guān)注
3文章
298瀏覽量
17529
發(fā)布評論請先 登錄
相關(guān)推薦
評論