====== Lösungen zu den Challenges von Beispiel 1 ====== ===== Challenge 1 ===== Versuche die LEDs in einer anderen Farbe z.B. Grün oder Violett anzuzeigen. input.onButtonPressed(Button.A, function () { if (position <= 9) { position += 1 } }) input.onButtonPressed(Button.B, function () { if (position >= 0) { position += -1 } }) let position = 0 let strip = neopixel.create(DigitalPin.P0, 10, NeoPixelMode.RGB) position = 0 basic.forever(function () { strip.showColor(neopixel.colors(NeoPixelColors.Black)) strip.setPixelColor(position, neopixel.colors(NeoPixelColors.Violet)) strip.show() }) ===== Challenge 2 ===== Versuche die Anzahl der LEDs immer um 2 pro Tastendruck zu erhöhen bzw. zu verringern. input.onButtonPressed(Button.A, function () { if (position <= 9) { position += 2 } }) input.onButtonPressed(Button.B, function () { if (position >= 0) { position += -2 } }) let position = 0 let strip = neopixel.create(DigitalPin.P0, 10, NeoPixelMode.RGB) position = 0 basic.forever(function () { strip.showColor(neopixel.colors(NeoPixelColors.Black)) strip.setPixelColor(position, neopixel.colors(NeoPixelColors.Red)) strip.show() }) ===== Challenge 3 ===== Versuche die LEDs blinken zu lassen, d.h. die LEDs 500 Millisekunden leuchten zu lassen, dann abzudrehen und nach 500 Millisekunden wieder leuchten zu lassen. input.onButtonPressed(Button.A, function () { if (position <= 9) { position += 1 } }) input.onButtonPressed(Button.B, function () { if (position >= 0) { position += -1 } }) let position = 0 let strip = neopixel.create(DigitalPin.P0, 10, NeoPixelMode.RGB) position = 0 basic.forever(function () { strip.showColor(neopixel.colors(NeoPixelColors.Black)) strip.setPixelColor(position, neopixel.colors(NeoPixelColors.Red)) strip.show() basic.pause(500) strip.showColor(neopixel.colors(NeoPixelColors.Black)) strip.show() basic.pause(500) }) ===== Challenge 4 ===== Versuche alle LEDs beim Drücken von A und B auszuschalten. input.onButtonPressed(Button.A, function () { color = neopixel.colors(NeoPixelColors.Red) if (position <= 9) { position += 1 } }) input.onButtonPressed(Button.AB, function () { color = neopixel.colors(NeoPixelColors.Black) }) input.onButtonPressed(Button.B, function () { color = neopixel.colors(NeoPixelColors.Red) if (position >= 0) { position += -1 } }) let color = 0 let position = 0 let strip = neopixel.create(DigitalPin.P0, 10, NeoPixelMode.RGB) position = 0 color = neopixel.colors(NeoPixelColors.Red) basic.forever(function () { strip.clear() strip.setPixelColor(position, color) strip.show() }) ===== Challenge 5 ===== Versuche die LEDs in einer zufälligen Farbe anzuzeigen. ==== Lösungsvorschlag A zu Challenge 5 ==== Hinweis zu folgender Lösung: Hier wird eine Zufallsfarbe erzeugt, indem pro Farbanteil eine Zufallszahl im Bereich 0 bis 255 erzeugt wird. input.onButtonPressed(Button.A, function () { if (position <= 9) { position += 1 } color = getRandomColor() }) function getRandomColor () { greenComponent = randint(0, 255) blueComponent = randint(0, 255) redComponent = randint(0, 255) color = neopixel.rgb(redComponent, greenComponent, blueComponent) return color } input.onButtonPressed(Button.B, function () { if (position >= 0) { position += -1 } color = getRandomColor() }) let redComponent = 0 let blueComponent = 0 let greenComponent = 0 let position = 0 let color = 0 color = getRandomColor() let strip = neopixel.create(DigitalPin.P0, 10, NeoPixelMode.RGB) position = 0 basic.forever(function () { strip.clear() strip.setPixelColor(position, color) strip.show() }) ==== Lösungsvorschlag B zu Challenge 5 ==== input.onButtonPressed(Button.A, function () { if (position <= 9) { position += 1 } color = getRandomColor() }) function getRandomColor () { colorSelection = randint(0, 7) if (colorSelection == 0) { color = neopixel.colors(NeoPixelColors.Red) } else if (colorSelection == 1) { color = neopixel.colors(NeoPixelColors.Orange) } else if (colorSelection == 2) { color = neopixel.colors(NeoPixelColors.Yellow) } else if (colorSelection == 3) { color = neopixel.colors(NeoPixelColors.Green) } else if (colorSelection == 4) { color = neopixel.colors(NeoPixelColors.Blue) } else if (colorSelection == 5) { color = neopixel.colors(NeoPixelColors.Indigo) } else if (colorSelection == 6) { color = neopixel.colors(NeoPixelColors.Violet) } else if (colorSelection == 7) { color = neopixel.colors(NeoPixelColors.Purple) } else { color = neopixel.colors(NeoPixelColors.Black) } return color } input.onButtonPressed(Button.B, function () { if (position >= 0) { position += -1 } color = getRandomColor() }) let colorSelection = 0 let position = 0 let color = 0 color = getRandomColor() let strip = neopixel.create(DigitalPin.P0, 10, NeoPixelMode.RGB) position = 0 basic.forever(function () { strip.clear() strip.setPixelColor(position, color) strip.show() })