មេរៀន៖ Gas Sensor with micro:bit
• អានតម្លៃ Gas Sensor (Analog & Digital)
• បង្ហាញសញ្ញាព្រមានលើ micro:bit
• បញ្ជា Buzzer និង LED ពេលរកឃើញឧស្ម័ន
🔌 ការភ្ជាប់ឧបករណ៍
| Gas Sensor | micro:bit Pin | ពន្យល់ |
|---|---|---|
| VCC | 3V | ផ្គត់ផ្គង់អគ្គិសនី |
| GND | GND | ដី (Ground) |
| AO | P0 | អានតម្លៃ Analog Gas |
| DO | P1 | សញ្ញា Digital (Gas Detected) |
| Buzzer | P2 | សម្លេងព្រមាន |
| LED 1 | P8 | ភ្លើងព្រមាន |
| LED 2 | P9 | ភ្លើងព្រមាន |
💻 កូដ micro:bit (JavaScript)
let gasAnalog = 0
let gasDigital = 0
basic.forever(function () {
// Read gas sensor
gasAnalog = pins.analogReadPin(AnalogPin.P0)
gasDigital = pins.digitalReadPin(DigitalPin.P1)
// Send data to serial monitor
serial.writeValue("Gas_AO", gasAnalog)
serial.writeValue("Gas_DO", gasDigital)
// Condition: gas detected
if (gasAnalog > 400) {
basic.showIcon(IconNames.Skull)
for (let index = 0; index <= 5; index++) {
pins.digitalWritePin(DigitalPin.P2, 1)
basic.pause(100)
pins.digitalWritePin(DigitalPin.P2, 0)
basic.pause(100)
pins.digitalWritePin(DigitalPin.P8, 1)
basic.pause(100)
pins.digitalWritePin(DigitalPin.P8, 0)
basic.pause(100)
pins.digitalWritePin(DigitalPin.P9, 1)
basic.pause(100)
pins.digitalWritePin(DigitalPin.P9, 0)
basic.pause(100)
}
} else {
basic.showIcon(IconNames.Happy)
pins.digitalWritePin(DigitalPin.P2, 0)
pins.digitalWritePin(DigitalPin.P8, 0)
pins.digitalWritePin(DigitalPin.P9, 0)
}
basic.pause(500)
})
📊 ការបកស្រាយកូដ
- AnalogPin.P0 អានកម្រិតឧស្ម័ន (0–1023)
- DigitalPin.P1 បង្ហាញ 0 ឬ 1 ពេល Gas លើសកម្រិត
- តម្លៃ 400 ជា Threshold (អាចកែតម្រូវបាន)
- បង្ហាញ Skull ពេលមានគ្រោះថ្នាក់
- Buzzer និង LED ភ្លឺជាបន្តបន្ទាប់
🔥 មេរៀន៖ Flame Sensor with micro:bit
មេរៀននេះប្រើ Flame Sensor ដើម្បីចាប់សញ្ញាភ្លើង។ នៅពេលមានភ្លើង → micro:bit បង្ហាញ Icon និងបើក Buzzer។
📜 កូដ MakeCode (JavaScript)
let flame_value = 0 basic.forever(function () { // Read analog value from flame sensor flame_value = pins.analogReadPin(AnalogPin.P0) if (flame_value < 400) { // Flame detected basic.showIcon(IconNames.Skull) // Activate buzzer pins.digitalWritePin(DigitalPin.P1, 1) } else { basic.clearScreen() // Turn off buzzer pins.digitalWritePin(DigitalPin.P1, 0) } basic.pause(100) })
🔌 របៀបភ្ជាប់ឧបករណ៍
- Flame Sensor VCC → 3V (micro:bit)
- Flame Sensor GND → GND (micro:bit)
- Flame Sensor AO → P0 (micro:bit)
- Buzzer (+) → P1 (micro:bit)
- Buzzer (-) → GND (micro:bit)
🧠 ការពន្យល់កូដ
- analogReadPin(P0) អានតម្លៃពី Flame Sensor
- តម្លៃតូចជាង 400 មានន័យថា មានភ្លើង
- បង្ហាញ Icon ☠️ នៅលើ micro:bit LED
- បើក Buzzer ដោយ pin P1 = 1
- គ្មានភ្លើង → បិទ Buzzer និងលុបអេក្រង់
Khmer PC Knowledge – STEAM & Microcontroller Learning
===========================================================================================================================📡 មេរៀន៖ Sonar System with Micro:bit (Auto Door)
ប្រើ Sonar Sensor វាស់ចម្ងាយ ហើយបញ្ជា Servo Motor ឲ្យបើក/បិទទ្វារ ដោយស្វ័យប្រវត្តិ។
🔌 ការភ្ជាប់ឧបករណ៍
- Sonar Sensor
- VCC → 3V (Micro:bit)
- GND → GND
- TRIG → P1
- ECHO → P2
- Servo Motor
- Red → 5V / Battery +
- Brown / Black → GND
- Yellow / Orange → P0
💻 កូដ Micro:bit (JavaScript)
let distance = 0 // Close door at start pins.servoWritePin(AnalogPin.P0, 0) basic.forever(function () { // Measure distance in cm distance = sonar.ping( DigitalPin.P1, DigitalPin.P2, PingUnit.Centimeters ) // If someone is close, open the door if (distance > 0 && distance <= 15) { // Open door pins.servoWritePin(AnalogPin.P0, 90) basic.pause(3000) } else { // Close door pins.servoWritePin(AnalogPin.P0, 0) } basic.pause(200) })
🧠 សេចក្តីពន្យល់កូដ
- sonar.ping() ប្រើវាស់ចម្ងាយពី Sonar (cm)
- P1 = TRIG, P2 = ECHO
- ចម្ងាយ ≤ 15cm → Servo បើកទ្វារ 90°
- គ្មានវត្ថុ → Servo ត្រឡប់ទៅ 0°
មេរៀន៖ PIR Sensor ជាមួយ micro:bit
• រៀនប្រើ PIR Sensor ដើម្បីចាប់ចលនា
• បញ្ជា LED ឬ Buzzer ដោយ micro:bit
• អនុវត្ត JavaScript (MakeCode)
ឧបករណ៍ត្រូវការ
- micro:bit
- PIR Motion Sensor
- LED ឬ Buzzer
- Resistor 220Ω (ប្រសិនបើប្រើ LED)
- ខ្សែ Jumper
ការភ្ជាប់ឧបករណ៍
• VCC → 3V (micro:bit)
• GND → GND (micro:bit)
• OUT → P0
LED / Buzzer
• (+) → P1
• (–) → GND
កូដ micro:bit (JavaScript)
let motion = 0
basic.forever(function () {
motion = pins.digitalReadPin(DigitalPin.P0)
if (motion == 1) {
basic.showIcon(IconNames.Surprised)
// Turn ON buzzer/LED
pins.digitalWritePin(DigitalPin.P1, 1)
basic.pause(100)
// Turn OFF buzzer/LED
pins.digitalWritePin(DigitalPin.P1, 0)
basic.pause(100)
} else {
basic.clearScreen()
pins.digitalWritePin(DigitalPin.P1, 0)
basic.pause(100)
}
basic.pause(100)
})
ការពន្យល់កូដ
• PIR = 1 → មានចលនា → បង្ហាញ icon និងបើក LED/Buzzer
• PIR = 0 → គ្មានចលនា → បិទ LED/Buzzer
• P1 ប្រើសម្រាប់បញ្ជាឧបករណ៍ចេញ
លទ្ធផលដែលទទួលបាន
- មានចលនា → micro:bit បង្ហាញ Icon 😮 និងមានសំឡេង/ភ្លើង
- គ្មានចលនា → LED/Buzzer បិទ
មេរៀន៖ Control Stepper Motor 4 Buttons with micro:bit
មេរៀននេះបង្ហាញពីការបញ្ជា Stepper Motor 28BYJ-48 តាមរយៈ ULN2003 Driver ដោយប្រើ micro:bit និង ប៊ូតុង 4 ដើម្បីតំណាងជាជាន់ (Floor 1–4) ដូចជាជណ្តើរយន្ត (Elevator)។
📌 Micro:bit MakeCode (JavaScript)
function moveStepper (steps: number) { let direction = steps > 0 ? 1 : -1 steps = Math.abs(steps) for (let s = 0; s <= steps - 1; s++) { let idx = (s * direction) & 7 pins.digitalWritePin(IN1, stepSeq[idx][0]) pins.digitalWritePin(IN2, stepSeq[idx][1]) pins.digitalWritePin(IN3, stepSeq[idx][2]) pins.digitalWritePin(IN4, stepSeq[idx][3]) basic.pause(2) } } // Move elevator to a specific floor (1–4) function goToFloor (target: number) { if (target == currentFloor) { return } basic.showNumber(target) stepPerFloor = 500 move = (target - currentFloor) * stepPerFloor moveStepper(move) currentFloor = target } // -------------------------- // Elevator Control (4 Floors) // Stepper: 28BYJ-48 + ULN2003 // Buttons use Pull-Up // -------------------------- let move = 0 let stepPerFloor = 0 let currentFloor = 0 let stepSeq: number[][] = [] let IN1 = DigitalPin.P13 let IN2 = DigitalPin.P14 let IN3 = DigitalPin.P15 let IN4 = DigitalPin.P16 let BTN_F1 = DigitalPin.P0 let BTN_F2 = DigitalPin.P1 let BTN_F3 = DigitalPin.P2 let BTN_F4 = DigitalPin.P8 pins.setPull(BTN_F1, PinPullMode.PullUp) pins.setPull(BTN_F2, PinPullMode.PullUp) pins.setPull(BTN_F3, PinPullMode.PullUp) pins.setPull(BTN_F4, PinPullMode.PullUp) stepSeq = [ [1,0,0,0], [1,1,0,0], [0,1,0,0], [0,1,1,0], [0,0,1,0], [0,0,1,1], [0,0,0,1], [1,0,0,1] ] currentFloor = 1 basic.forever(function () { if (pins.digitalReadPin(BTN_F1) == 0) goToFloor(1) if (pins.digitalReadPin(BTN_F2) == 0) goToFloor(2) if (pins.digitalReadPin(BTN_F3) == 0) goToFloor(3) if (pins.digitalReadPin(BTN_F4) == 0) goToFloor(4) })
🔧 របៀបភ្ជាប់ឧបករណ៍ (Wiring)
1️⃣ Stepper Motor 28BYJ-48 + ULN2003
| ULN2003 | micro:bit |
|---|---|
| IN1 | P13 |
| IN2 | P14 |
| IN3 | P15 |
| IN4 | P16 |
| VCC | 5V (External Power) |
| GND | GND |
📌 ចំណាំ
-
Stepper Motor ត្រូវការថាមពល 5V ខាងក្រៅ
ត្រូវភ្ជាប់ GND របស់ Power Supply និង micro:bit ជាមួយគ្នា (Common Ground)
2️⃣ Button 4 (Pull-Up)
| Button (Floor) | micro:bit Pin |
|---|---|
| Floor 1 | P0 |
| Floor 2 | P1 |
| Floor 3 | P2 |
| Floor 4 | P8 |
🔹 Button មួយភ្ជាប់ទៅ GND
🔹 Button មួយភ្ជាប់ទៅ Pin (ប្រើ Pull-Up ក្នុង Code)
📘 សេចក្តីពន្យល់ខ្លី
-
Button នីមួយៗតំណាងឲ្យ ជាន់ (Floor)
-
ពេលចុច Button → micro:bit គណនាចំនួន Steps
-
Stepper Motor បង្វិលឡើង ឬចុះ ដូចជា ជណ្តើរយន្ត
-
stepPerFloorអាចកែប្រែតាម កម្ពស់ជាន់ពិតប្រាកដ
មេរៀន: Identify the pins of a 4-leg RGB LED with Microbit
🔧 របៀបភ្ជាប់ឧបករណ៍
- RGB LED (4-leg, Common Cathode)
- Micro:bit
- របៀបភ្ជាប់:
- Leg-Cathode (Longest leg) → GND on Micro:bit
- Red leg → P0
- Green leg → P1
- Blue leg → P2
💻 កូដ Microbit (MakeCode JavaScript / Blocks)
// RGB LED on pins P0, P1, P2 (Common Cathode)
function setColor(red: number, green: number, blue: number) {
pins.digitalWritePin(DigitalPin.P0, red)
pins.digitalWritePin(DigitalPin.P1, green)
pins.digitalWritePin(DigitalPin.P2, blue)
}
basic.forever(function () {
setColor(1, 0, 0) // Red
basic.pause(500)
setColor(0, 1, 0) // Green
basic.pause(500)
setColor(0, 0, 1) // Blue
basic.pause(500)
setColor(1, 1, 0) // Yellow
basic.pause(500)
setColor(0, 1, 1) // Cyan
basic.pause(500)
setColor(1, 0, 1) // Magenta
basic.pause(500)
setColor(1, 1, 1) // White
basic.pause(500)
})
មេរៀននេះបង្ហាញពីរបៀបប្រើ PIR Motion Sensor ជាមួយ BBC micro:bit ដើម្បីចាប់សញ្ញាចលនា និងបញ្ជា LED ឬ Buzzer។
| PIR Sensor | micro:bit | ពន្យល់ |
|---|---|---|
| VCC | 3V | ផ្គត់ផ្គង់អគ្គិសនី |
| GND | GND | ដី (Ground) |
| OUT | P0 | សញ្ញាចលនា (Digital Input) |
| ឧបករណ៍បន្ថែម | micro:bit | ពន្យល់ |
|---|---|---|
| LED / Buzzer (+) | P1 | បញ្ជា ON / OFF |
| LED / Buzzer (-) | GND | ដី (Ground) |
let motion = 0
basic.forever(function () {
motion = pins.digitalReadPin(DigitalPin.P0)
if (motion == 1) {
basic.showIcon(IconNames.Surprised)
// Turn ON buzzer/LED
pins.digitalWritePin(DigitalPin.P1, 1)
basic.pause(100)
// Turn OFF buzzer/LED
pins.digitalWritePin(DigitalPin.P1, 0)
basic.pause(100)
} else {
basic.clearScreen()
// Ensure buzzer/LED is OFF
pins.digitalWritePin(DigitalPin.P1, 0)
basic.pause(100)
}
basic.pause(100)
})
- DigitalPin.P0 – ទទួលសញ្ញាពី PIR Sensor
- បើមានចលនា (motion == 1) → បង្ហាញ Icon 😲 និងបើក LED/Buzzer
- បើគ្មានចលនា → បិទ LED/Buzzer និងលុបអេក្រង់
- DigitalPin.P1 – Output សម្រាប់ LED ឬ Buzzer
0 Comments