Micro:bit Sensorer

Sensorkort för BBC micro:bit där du kan läsa av temperatur, ljud-, och ljusnivå.

Funktioner
3V och GND-anslutningar kan göras från båda sidor och låter dig driva ett andra kort, t.ex. Relä för micro:bit eller Högtalare micro:bit.
LED-indikator "Power On"
Omvänd polaritetsskydd
Alla tre sensorerna är analoga och kan anslutas till stiften P0, P1 och P2 med hjälp av krokodilklämmor.

Innehåll:
Sensorkort

Observera att du även behöver en micro:bit och ledningskabel med krokodilklämmor.

Anslut till din micro:bit

Du behöver bara ansluta de sensorer som du faktiskt använder, men du kan ansluta alla sensorer som visas nedan.

Ljud med JavaScript Blocks Editor


Här är ett exempel på hur man kan använda sensorkortet för att indikera ljudnivå på LED-matrisen. Klicka på bilden nedan för att prova den. Att göra ett ljud i mikrofonen gör att lysdioderna rör sig.

Termometer med JAVASCRIPT BLOCKS EDITOR

Här är ett exempel på hur man kan använda sensorkortet för att visa temperatur. Prova att sätta fingret på temperatursensorn för att värma upp den. Du kan köra exemplet nedan genom att klicka på det. 

Ljus med JAVASCRIPT BLOCKS EDITOR


Här är ett exempel på hur man kan använda sensorkortet för att visa ljusintensitet i ett stapeldiagram på LED-matrisen. Klicka på bilden nedan för att testa. Sätt fingret över ljussensorn för att göra det mörkt eller lys med en ficklampa för att få fler LED-lampor att tändas.

Python


Klistra in nedanstående kod i Python window och ladda sedan ned filen och för över den till din BBC micro:bit.  

from microbit import *
from math import log

class AnalogSensor:

    def __init__(self, mb_pin):
        self.mb_pin = mb_pin

        

    def value(self):
        # analog input on mb_pin
        return self.mb_pin.read_analog()
    
class SoundSensor(AnalogSensor):

    def __init__(self, mb_pin, dc_offset, scaled_max):
        super().__init__(mb_pin)
        self.dc_offset, self.scaled_max = dc_offset, scaled_max

    def level(self, samples=20, period=5):
        most_neg = 0
        for i in range (0, samples):
            reading = self.dc_offset - self.value()
            if reading > most_neg:
                most_neg = reading
            sleep(period)
        return most_neg * self.scaled_max / self.dc_offset
    
    def sample(self):
        return self.value()
    
    
class LightSensor(AnalogSensor):
        
    def __init__(self, mb_pin, min_value, max_value, scaled_max):
        super().__init__(mb_pin)
        self.min_value, self.max_value, self.scaled_max = min_value, max_value, scaled_max
        self.range = max_value - min_value
        

    def read(self):
        return (self.value() - self.min_value) * self.scaled_max / self.range

    
    
class TemperatureSensor(AnalogSensor):
    

    def __init__(self, mb_pin, r0, r2, b):
        super().__init__(mb_pin)
        self.r0, self.r2, self.b = r0, r2, b

        
    def read_c(self):
        v33 = 1 # actually result is independent of this value so use 1
        V = self.value() * v33 / 1023
        R = self.r2 * (v33 - V) / V
        t0 = 273.15     # 0 deg C in K
        t25 = t0 + 25.0 # 25 deg C in K
        # Steinhart-Hart equation - Google it
        inv_T = 1/t25 + 1/self.b * log(R/self.r0)
        T = (1/inv_T - t0)
        return T

    
    def read_f(self):
        return self.read_c() * 9/5 + 32

sound_sensor = SoundSensor(pin0, 340, 100)
temperature_sensor = TemperatureSensor(pin1, 100000, 100000, 4275)
light_sensor = LightSensor(pin2, 0, 980, 100)

while True:
    print("Light: " + str(light_sensor.read()))
    print("Sound: " + str(sound_sensor.level()))
    print("temp: " + str(temperature_sensor.read_c()))
    print()
    sleep(1000)

Tipsa en vän
Art.nr: 25-024
Antal i lager: 67
89,00 SEK

Tipsa en vän


Copyright Hands-On Science AB