Sekvensstyring

En sekvensstyring styrer noe som kommer i rekkefølge etter hverandre, for eksempel et program for en vaskemaskin eller et trafikklys. Hvis vi kan få en sekvensstyring til å kjøre, så kan vi få til ganske mye forskjellig.

Her er en første forsøk med å kjøre 3 stk «smily faces» i sekvens:

Button A og buttan B kan brukes til å starte og stanse sekvensen.

Det neste trinn i denne utviklingssekvensen må kanskje bli å styre utganger, slik at vi for eksempel kan styre en vannkran, en motor og et varmeelement i sekvens, eller et trafikklys.

Og slik skulle det også være mulig å styre tre utganger i den sekvens som vi måtte ønske:

Her har vi det siste programmet i JavaScript:


let runstatus = 0
input.onButtonPressed(Button.A, function () {
    runstatus = 1
})
input.onButtonPressed(Button.B, function () {
    runstatus = 0
})
basic.forever(function () {
    if (runstatus) {
        pins.digitalWritePin(DigitalPin.P0, 1)
        pins.digitalWritePin(DigitalPin.P1, 0)
        pins.digitalWritePin(DigitalPin.P2, 0)
        basic.pause(2000)
        pins.digitalWritePin(DigitalPin.P0, 0)
        pins.digitalWritePin(DigitalPin.P1, 1)
        pins.digitalWritePin(DigitalPin.P2, 0)
        basic.pause(2000)
        pins.digitalWritePin(DigitalPin.P0, 0)
        pins.digitalWritePin(DigitalPin.P1, 0)
        pins.digitalWritePin(DigitalPin.P2, 1)
        basic.pause(2000)
    }
})

 

Noen ganger så er det også behov for at sekvensen skal stanse opp og vente på en «hendelse», for eksempel at temperaturen når opp til et visst nivå. I den neste utgaven av sekvensstyringen så har vi også lagt til en sløyfe eller en pause på 1 sekund som står og kjører intill inngang i0 mottar et høyt signal.

Her har vi det siste eksemplet i form av JavaScript:


input.onButtonPressed(Button.A, function () {
    runstatus = 1
})
input.onButtonPressed(Button.B, function () {
    runstatus = 0
})
let inngang = 0
let runstatus = 0
runstatus = 0
basic.forever(function () {
    if (runstatus) {
        pins.digitalWritePin(DigitalPin.P1, 1)
        pins.digitalWritePin(DigitalPin.P2, 0)
        pins.digitalWritePin(DigitalPin.P3, 0)
        basic.pause(2000)
        pins.digitalWritePin(DigitalPin.P1, 0)
        pins.digitalWritePin(DigitalPin.P2, 1)
        pins.digitalWritePin(DigitalPin.P3, 0)
        inngang = pins.digitalReadPin(DigitalPin.P0)
        while (!(inngang)) {
            inngang = pins.digitalReadPin(DigitalPin.P0)
            basic.pause(1000)
        }
        pins.digitalWritePin(DigitalPin.P1, 0)
        pins.digitalWritePin(DigitalPin.P2, 0)
        pins.digitalWritePin(DigitalPin.P3, 1)
        basic.pause(2000)
    }
})

 

Kanskje en litt forbedret kode for det første eksmeplet med grafiske symboler i sekvens:

Og tilhørende kode i JavaScript:


let runstatus = 0
input.onButtonPressed(Button.A, function () {
    runstatus = 1
})
input.onButtonPressed(Button.B, function () {
    runstatus = 0
})
basic.forever(function () {
    if (runstatus) {
        basic.showIcon(IconNames.SmallHeart)
        basic.pause(2000)
        basic.showIcon(IconNames.Heart)
        basic.pause(2000)
        basic.showIcon(IconNames.Yes)
        basic.pause(2000)
    }
})