【Scratch】世界の天候をScrachで表示しよう

世界の天候をScrachで表示

公式サイトの作例を元にプログラムを作成してみました。気象ステーションから天気情報を取得し、Scratchで視覚的に表現します。使用する環境はRaspberry PiのScratch1.4です

https://www.raspberrypi.org/learning/weather-station-dashboard/

Pythonのプログラムで天気情報を取得し、Scratchからその情報を利用します

ソフトのインストール

LXTerminalから以下のコマンドを入力し、Python3 Scratchをインストールします

sudo pip3 install --pre scratch

Pythonプログラムの取得

interface.pyをダウンロードします。ファイルはカレントディレクトリにダウンロードされます

wget -O interface.py rpf.io/wsd

Scrach 1.4の準備

Scratchを起動し、カテゴリ「調べる」の「(スライダー)センサーの値」を右クリックすると表示される「遠隔センサー接続を有効にする」を選びます

世界の天候をScrachで表示

気象予報士をえらぶ

スプライトライブラリーから気象予報士のキャラクターを選びます

世界の天候をScrachで表示

ねこは必要ないので削除します

Pythonスクリプトの起動

先ほどダウロードしたPythonスクリプトを実行します。このスクリプトが気象ステーションとのやりとりをするので、LXTerminalは閉じずに起動したままにします

python3 interface.py

気象ステーションからのデータの取得

変数「id」を作成します

世界の天候をScrachで表示

気象ステーションのID一覧からIDを選びます(どれでもいいです)
気象ステーションのID一覧

プログラム開始時に変数idに気象ステーションIDをセットします

世界の天候をScrachで表示

緑の旗をクリックしてプログラムを実行します。カテゴリ 「調べる」の「(スライダー)センサーの値」の「スライダー」部分のプルダウンメニューをクリックするとセンサーの値が追加されているのが確認できます。いっぱい追加されていますね

世界の天候をScrachで表示

気象予報士が気圧を教えてくれるようにスクリプトを作成します

世界の天候をScrachで表示

何も起こらない場合は、LXTerminalに戻ってinterfaces.pyの出力を確認してください。「Station data not found. Please choose another ID」になっている場合は、ステーションIDのリストから別のIDを選択してください

センサーの値を利用する

気象予報士が喋る言葉を「〜と〜」ブロックで組み合わせて作成します

世界の天候をScrachで表示

風向きを表示する

スプライトライブラリーを開き、Thingsの中にあるClock-handを選びます。Clock-handにあらかじめ設定されているスクリプトは使わないので削除します

世界の天候をScrachで表示

スプライトにサイズと方向を設定するスクリプトを追加します

世界の天候をScrachで表示

風向きセンサー(wind_direction)の値を取得して、矢印を回転させます

世界の天候をScrachで表示

風速(wind_speed)を矢印の大きさで視覚化します

世界の天候をScrachで表示

温度計を追加する

温度計を作ります。温度を示す水銀(今の温度計はアルコールらしいですけど)はペンを使って動的に描画します

温度計

こちらにサイズの大きな画像があります
大きな温度計の画像

この画像をインポートしてスクリプトを作成し、以下のスクリプトを作成します

世界の天候をScrachで表示

最後のブロックでメッセージ「draw」を送ります。drawメッセージを受け取ったスプライトで水銀の描画を行います

水銀を描く

「新しいスプライトを描く」から新規スプライトを作成します。画面中央に白い点を描きます(あとで非表示にするので白じゃなくてもいいです)

世界の天候をScrachで表示

この小さな点のスプライトに以下のスクリプトを作成します。ここでペンの初期化を行っています

世界の天候をScrachで表示

まず、温度0までの水銀を描画します(※元の作例では0度のY座標が-60でしたが、実際に動かしてみてズレがあったので-70に変更しました。あと白い点のスプライトを非表示にしました)

世界の天候をScrachで表示

現在の温度までペンを上に進めます(※元の作例では1メモリのサイズが1.7でしたが、ずれていたので2.02に変更しました)

世界の天候をScrachで表示

最後に0度以下場合の処理を追加します(※元の作例では0度に当たる座標が55でしたが、ずれていたので60に変更しました)

世界の天候をScrachで表示

世界中の気象ステーションにアクセスする

メッセージ「new-station」を送ることで、ランダムに世界中の気象ステーションに切り替えることができます。メッセージはScratchだけでなくPythonスクリプトにも送られます

ステージのスプライト

10秒ごとにランダムに気象ステーションを切り替えます

世界の天候をScrachで表示

メッセージの受信でスクリプトが変更されるように、今までに作成したスプライトを若干修正します

気象予報士のスプライト

世界の天候をScrachで表示

矢印のスプライト

世界の天候をScrachで表示

温度計のスプライト

世界の天候をScrachで表示

これで完成です。10秒ごとにいろんな都市の天候が表示されます

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 – 継承 4.0 国際 ライセンスの下に提供されています。

タイトルとURLをコピーしました