Lernpfad:Das micro:glow/8: Unterschied zwischen den Versionen
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Ngb (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| (7 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
{{NNavigation}} | {{NNameAnzeigen}}{{NNavigation}} | ||
== Eine zufällige Endlosschleife == | == Eine zufällige Endlosschleife == | ||
Dein '''micro:glow''' reagiert nun auf die Signale anderer "Glühwürmchen" und kann selber ein Signal versenden. Aber wenn die anderen '''micro:glow'''s auf eines deiner Signale reagieren, dann leuchten sie ja auf, was im | Dein '''micro:glow''' reagiert nun auf die Signale anderer "Glühwürmchen" und kann selber ein Signal versenden. Aber wenn die anderen '''micro:glow'''s auf eines deiner Signale reagieren, dann leuchten sie ja selber auf, was im Gegenzug dein '''mico:glow''' zu einer Reaktion veranlassen sollte. Und diese Reaktion löst wieder ein Signal bei den anderen aus ... und so weiter. | ||
Im Prinzip würde man eine ''Endlosschleife'' von Glüh-Signalen auslösen, sobald nur ein '''micro:glow''' ein erstes | Im Prinzip würde man eine ''Endlosschleife'' von Glüh-Signalen auslösen, sobald nur ein '''micro:glow''' ein erstes Mal aufleuchtet. | ||
Damit das "Leuchtkonzert" auch irgendwann zu Ende ist, soll jedes '''micro:glow''' nur bei 10% der empfangenen Signale selber wieder ein <code>'flash'</code> Signal versenden. | Damit das "Leuchtkonzert" auch irgendwann zu Ende ist, soll jedes '''micro:glow''' nur bei 10% der empfangenen Signale selber wieder ein <code>'flash'</code> Signal versenden. | ||
{{Aufgabe:Start}} | |||
Ergänze nach dem Glühen eine Verzweigung, die mit einer Wahrscheinlichkeit von 10% (<code>if randint(0,9) == 1:</code>) nach einer Wartezeit von 500 Millisekunden (<code>sleep(500)</code>) das Wort <code>'flash'</code> sendet (<code>radio.send('flash')</code>). | Ergänze nach dem Glühen eine Verzweigung, die mit einer Wahrscheinlichkeit von 10% (<code>if randint(0,9) == 1:</code>) nach einer Wartezeit von 500 Millisekunden (<code>sleep(500)</code>) das Wort <code>'flash'</code> sendet (<code>radio.send('flash')</code>). | ||
{{Aufgabe:End}} | |||
{{Lösung:Start}} | {{Lösung:Start}} | ||
<syntaxhighlight lang="python" line="1" highlight=" | Die neuen Zeilen sind farbig hervorgehoben. | ||
<syntaxhighlight lang="python" line="1" highlight="24-26"> | |||
from microbit import * | from microbit import * | ||
from random import randint | from random import randint | ||
| Zeile 17: | Zeile 20: | ||
radio.on() | radio.on() | ||
# Erstellen der "glow" Animation | |||
flash = [Image().invert()*(i/9) for i in range(9, -1, -1)] | flash = [Image().invert()*(i/9) for i in range(9, -1, -1)] | ||
| Zeile 24: | Zeile 27: | ||
if button_a.was_pressed(): | if button_a.was_pressed(): | ||
radio.send('flash') | radio.send('flash') | ||
# Empfangen der Signale anderer micro:bits | # Empfangen der Signale anderer micro:bits | ||
empfang = radio. | empfang = radio.receive() | ||
if empfang == 'flash': | if empfang == 'flash': | ||
# Kurz (zufällig) warten | # Kurz (zufällig) warten | ||
sleep( | sleep(randint(50, 350)) | ||
# Animation abspielen | |||
display.show(flash, delay=100, wait=False) | display.show(flash, delay=100, wait=False) | ||
# In 10% der Fälle wieder ein 'flash' senden | # In 10% der Fälle wieder ein 'flash' senden | ||
Aktuelle Version vom 7. Dezember 2023, 14:40 Uhr
Eine zufällige Endlosschleife
Dein micro:glow reagiert nun auf die Signale anderer "Glühwürmchen" und kann selber ein Signal versenden. Aber wenn die anderen micro:glows auf eines deiner Signale reagieren, dann leuchten sie ja selber auf, was im Gegenzug dein mico:glow zu einer Reaktion veranlassen sollte. Und diese Reaktion löst wieder ein Signal bei den anderen aus ... und so weiter.
Im Prinzip würde man eine Endlosschleife von Glüh-Signalen auslösen, sobald nur ein micro:glow ein erstes Mal aufleuchtet.
Damit das "Leuchtkonzert" auch irgendwann zu Ende ist, soll jedes micro:glow nur bei 10% der empfangenen Signale selber wieder ein 'flash' Signal versenden.
Ergänze nach dem Glühen eine Verzweigung, die mit einer Wahrscheinlichkeit von 10% (if randint(0,9) == 1:) nach einer Wartezeit von 500 Millisekunden (sleep(500)) das Wort 'flash' sendet (radio.send('flash')).
Die neuen Zeilen sind farbig hervorgehoben.
from microbit import *
from random import randint
import radio
# Funksender einschalten
radio.on()
# Erstellen der "glow" Animation
flash = [Image().invert()*(i/9) for i in range(9, -1, -1)]
while True:
# Knopf A sendet das 'flash' Signal
if button_a.was_pressed():
radio.send('flash')
# Empfangen der Signale anderer micro:bits
empfang = radio.receive()
if empfang == 'flash':
# Kurz (zufällig) warten
sleep(randint(50, 350))
# Animation abspielen
display.show(flash, delay=100, wait=False)
# In 10% der Fälle wieder ein 'flash' senden
if randint(0,9) == 1:
sleep(500)
radio.send('flash');