pxt-calliope/docs/projects/plant-watering/code.md
Peli de Halleux 325ccce3a0 Docsfix2 (#510)
* missing packages

* fixing snippet issues

* snippet fix

* more doc fixes
2017-08-18 08:34:01 -07:00

1.7 KiB

Code

Let's add the code so that when the soil moisture level is low, the servo waters the plant.

From the soil moisture project, we know that the moisture is low when the reading is roughly less than 500. We can use this information to add an if reading < 500 in the code.

let reading = 0
if (reading < 500) { }

The servo is connected to pin P2 so we can use pins servo write block to change the angle of the servo. We need it to change the angle to 0, wait until the water has fallen off, and move it back to 80.

let reading = 0
if (reading < 500) {
    basic.showIcon(IconNames.Umbrella)
    pins.servoWritePin(AnalogPin.P2, 0);
    basic.pause(3000)
    pins.servoWritePin(AnalogPin.P2, 80)
    basic.pause(3000)
    pins.analogWritePin(AnalogPin.P2, 0)
}

We insert the code above in the forever loop of the soil moisture code.

radio.setTransmitSerialNumber(true)
radio.setGroup(4)
led.setBrightness(64)
let reading = 0
basic.forever(() => {
    pins.analogWritePin(AnalogPin.P1, 1023)
    reading = pins.analogReadPin(AnalogPin.P0)
    radio.sendNumber(reading / 4);
    pins.analogWritePin(AnalogPin.P1, 0)
    led.plotBarGraph(
        reading,
        1023
    )
    if (input.buttonIsPressed(Button.A)) {
        basic.showNumber(reading)
    }
    if (reading < 500) {
        basic.showIcon(IconNames.Umbrella)
        pins.servoWritePin(AnalogPin.P2, 0);
        basic.pause(3000)
        pins.servoWritePin(AnalogPin.P2, 80)
        basic.pause(3000)
        pins.analogWritePin(AnalogPin.P2, 0)
    }
    basic.pause(5000);
})

https://youtu.be/7eC_VjH1eP0

radio