Infračervené snímače robota AlphaBot2

Pozdravujem fanúšikov robotiky a programovania, ktorí netrpezlivo čakajú na ukážku, čoho všetkého sú infračervené (skratka IR) snímače robota AlphaBot2 s výučbovým mikropočítačom micro:bit schopné. Musím priznať, že ma prekvapila nadštandardná výbava snímačov vyhýbania sa prekážkam uvedeného robota. Zatiaľ som videl v praxi na tento účel používať len snímač vzdialenosti Ultrasonic, avšak o to viac sa teším na vyskúšanie IR snímačov vyhýbania sa prekážkam.

Pre osvieženie pamäte, chcem len poznamenať, že robot Alphabot2 disponuje dvomi IR snímačmi vyhýbania sa prekážkam a piatimi IR snímačmi čiary. Na sledovanie čiary bežne postačujú dva snímače, avšak výrobca tohto robota si povedal, že s piatimi snímačmi bude jeho výrobok viac ‚cool‘.

Na ďalších riadkoch sa dočítate viac o dvoch mojich programoch, ktoré zapojili do hry nasledovné vybavenie spomínaného robota:

  1. IR snímače čiary, RGB LED diódy a bzučiak
  2. IR snímače vyhýbania sa prekážkam, RGB LED diódy a bzučiak

Programoval som v platforme Microsoft MakeCode, pričom som sa nezaobišiel aj bez rozširujúcich Blokov AlphaBot2 a Neopixel.

1. IR snímače čiary, RGB LED diódy a bzučiak

Výrobcom poskytnutý program na ovládanie IR snímačov čiary mi bohužiaľ nefungoval, tak som ho musel prerobiť, čo sa mi aj podarilo. Potom som do neho zapracoval použitie RGB LED diód a bzučiaka. Pri programovaní som mal na zreteli nasledovný ‚layout‘ pinov mikropočítača micro:bit:

  • P0 – bzučiak
  • P8 – štyri RGB LED diódy

Už mi nič nestálo v ceste, aby som sa testovaním dopracoval k finálnej verzii programu:

Program JavaScript

let dif = 0
let last_P = 0
let D = 0
let P = 0
basic.showLeds(`
    . # # # .
    # . # . #
    # # # # .
    # . # . #
    # . # # .
    `)
led.setBrightness(4)
let strip = neopixel.create(DigitalPin.P8, 4, NeoPixelMode.RGB)
strip.setBrightness(4)
strip.setPixelColor(0, neopixel.colors(NeoPixelColors.Red))
strip.show()
music.playTone(262, music.beat(BeatFraction.Half))
strip.setPixelColor(1, neopixel.colors(NeoPixelColors.Yellow))
strip.show()
music.playTone(330, music.beat(BeatFraction.Half))
strip.setPixelColor(2, neopixel.colors(NeoPixelColors.Green))
strip.show()
music.playTone(392, music.beat(BeatFraction.Half))
strip.setPixelColor(3, neopixel.colors(NeoPixelColors.Blue))
strip.show()
music.playTone(494, music.beat(BeatFraction.Half))
strip.clear()
strip.show()
AlphaBot2.Run(Dir.stop, 0)
basic.pause(1000)
basic.forever(function () {
    P = AlphaBot2.readLine() - 2000
    D = P - last_P
    last_P = P
    dif = Math.idiv(P, 20) + Math.idiv(D, 5)
    dif = Math.max(dif, -40)
    dif = Math.min(dif, 40)
    if (dif > 0) {
        AlphaBot2.MotorRun(Motors.M1, 40)
        AlphaBot2.MotorRun(Motors.M2, 40 - dif)
        strip.clear()
        strip.setPixelColor(0, neopixel.colors(NeoPixelColors.Orange))
        strip.show()
    } else {
        AlphaBot2.MotorRun(Motors.M1, 40 + dif)
        AlphaBot2.MotorRun(Motors.M2, 40)
        strip.clear()
        strip.setPixelColor(3, neopixel.colors(NeoPixelColors.Orange))
        strip.show()
    }
})

Program MakeCode

Video

2. IR snímače vyhýbania sa prekážkam, RGB LED diódy a bzučiak

Po predošlej skúsenosti som výrobcov program určený pre IR snímače vyhýbania sa prekážkam ani neodskúšal a rovno som si vytvoril vlastný program pre robot AlphaBot2. Taktiež som naprogramoval aj štyri RGB LED diódy a bzučiak, pričom som bral do úvahy ‚layout‘ zapojených pinov mikropočítača micro:bit:

  • P0 – bzučiak
  • P8 – štyri RGB LED diódy
  • P12, P16 – IR snímače vyhýbania sa prekážkam

Môj program som otestoval a tým som dospel k jeho finálnej verzii:

Program JavaScript

basic.showLeds(`
    . # # # .
    # . # . #
    # # # # .
    # . # . #
    # . # # .
    `)
led.setBrightness(4)
let strip = neopixel.create(DigitalPin.P8, 4, NeoPixelMode.RGB)
strip.setBrightness(4)
strip.setPixelColor(0, neopixel.colors(NeoPixelColors.Blue))
strip.show()
music.playTone(494, music.beat(BeatFraction.Half))
strip.setPixelColor(1, neopixel.colors(NeoPixelColors.Green))
strip.show()
music.playTone(392, music.beat(BeatFraction.Half))
strip.setPixelColor(2, neopixel.colors(NeoPixelColors.Yellow))
strip.show()
music.playTone(330, music.beat(BeatFraction.Half))
strip.setPixelColor(3, neopixel.colors(NeoPixelColors.Red))
strip.show()
music.playTone(262, music.beat(BeatFraction.Half))
strip.clear()
strip.show()
basic.clearScreen()
AlphaBot2.Run(Dir.stop, 0)
basic.pause(1000)
basic.forever(function () {
    if (AlphaBot2.Infrared(Sensor.Left)) {
        strip.clear()
        strip.setPixelColor(0, neopixel.colors(NeoPixelColors.Orange))
        strip.show()
        AlphaBot2.RunDelay(Dir.backward, 40, 0.4)
        AlphaBot2.RunDelay(Dir.turnRight, 40, 0.4)
        strip.clear()
        strip.show()
    } else if (AlphaBot2.Infrared(Sensor.Right)) {
        strip.clear()
        strip.setPixelColor(3, neopixel.colors(NeoPixelColors.Orange))
        strip.show()
        AlphaBot2.RunDelay(Dir.backward, 40, 0.4)
        AlphaBot2.RunDelay(Dir.turnLeft, 40, 0.4)
        strip.clear()
        strip.show()
    } else {
        strip.setPixelColor(0, neopixel.colors(NeoPixelColors.White))
        strip.setPixelColor(3, neopixel.colors(NeoPixelColors.White))
        strip.show()
        AlphaBot2.Run(Dir.forward, 40)
    }
})

Program MakeCode

Video

Záver

Ďakujem, že ste zvládli prečítať môj článok až do konca a odhodlali ste sa vyskúšať spomenuté programy aj v praxi. Lebo to je môj cieľ a som rád, že moja práca nevyšla navnivoč.

Nabudúce vám pomôžem ovládať robot AlphaBot2 joystickom Yahboom a Android aplikáciou micro:bit Blue.

E-shop

E-shop

Waveshare AlphaBot2 pro BBC micro:bit

Sestavte si robota AlphaBot2 pro BBC micro:bit.

BBC Micro:bit

Nekonečně programovatelný a rozšiřitelný vzdělávací počítač do kapsy.

Doporučené příslušenství

Leave a Reply