アイコン設定
投稿者さん使い方
掲示板の主旨に反する投稿は掲載されません。掲載の是非は管理者が判断いたします。予めご了承願います。
テストさん (9h8aw3cl)2025/3/24 11:53 (No.127411)削除
テスト
返信
ユウさん (99ffaepu)2024/9/15 23:17 (No.123293)削除
WS2812Bを使ってやってみたら勝手に光っていて制御もできませんでした。どこに4本あるコ―ドをさせばいいですか?
ユウさん (99ffaepu)2024/9/16 00:23削除
上の4本あるコ―ドは上からDI 5V GND DOです
不破さん (98e03c01)2024/9/16 11:49削除
WS2812Bを手に入れられたとの連絡、ありがとうございます。

WS2812Bはいろいろな形態で販売されています。単体や複数個直線上に並んでいるもの,リング状に並んでいるもの等がありますが、手に入れられたのはどのようなものでしょうか。また、配線はどのようにされたのでしょうか。

配線ですが、福野さんのHPに記載されている次のつなぎ方が一般的です。
 WS2812B  ichigojam端子
  DI --------- LED
  5V --------- 5V
  GND ---------- GND

また、WS2812Bを制御する専用の命令が WS.LED です。

[0]=50:WS.LED1
を実行すると赤く光るはずです。

同様に
[0]=0:[1]=50:WS.LED1 だと緑に
[0]=0:[1]=0:[2]=50:WS.LED1 だと赤に
光るはずです。

消す場合は
[0]=0:[1]=0:[2]=0:WS.LED1
で消えるはずです。

確認頂けますか。
返信
ユウさん (99ffaepu)2024/9/8 22:13 (No.123184)削除
僕は夜に人が近づいたらLEDが光るようにしたけど少し暗いので、もっと明るくすることはできますか?
不破さん (98e03c01)2024/9/8 22:57削除
講習お疲れ様です。また、質問ありがとうございます。
1個のLEDで暗ければ、IchigoJamに複数のLEDを付ける方法が考えられますね。昨日講演をしていただいた、鯖江市の福野さんのHPに、よりリング状の複数LED素子であるWS2812Bを使う工作記事が載っています。
https://fukuno.jig.jp/2958

ただ、それをするには素子の購入と工作が必要です。まずはLED1個でプログラムを作っておいて、将来はこういった素子を使うことを考えてはどうでしょうか。
返信
コウキさん (98as3vpk)2024/8/11 11:33 (No.122309)削除
不破先生こんにちは。松本の子どもプログラミング教室に参加した、コウキです。
ichigojamを使って目覚まし時計を作りたいです。
まず、時計のプログラムを、ウェブサイトをみて作ってみました。

10 H=12:M=54:S=0
11 CLS
12 VIDEO5
15 LC0,2
20 ?DEC$(H+100,2);":";DEC$+(M+100,2);":";DEC$(S+100,2)
25 IF TICK()<60 CONT ELSE CLT
30 S=S+1
35 IF S=60 S=0:M=M+1:IF M=60 M=0 H=H+1:IF H=24 H=0
40 GOTO15

このプログラムに、教室で教えてもらったタイマープログラムやLEDの点灯を組み合わせたいです。
どのようにすればいいか、教えてください。
不破さん (9597uafr)2024/8/11 12:33削除
問い合わせ,ありがとうございます.

目覚まし時計ですね.いろいろ工夫が出来そうです.

まずは,設定した時刻になったらLEDが点灯するようにしてみましょう.
送っていただいたプログラムは,時刻が12時54分から始まるようになっているので,設定時刻は12時55分としてみましょう,
設定時刻の「時」は変数A,「分」は変数Bに入れておくものとします(行番号5).

5 A=12:B=55

現在の時刻は20行目で表示しているので,その直後(行番号22)に現在時刻が設定時刻と一致しているかを調べます.

22 IF H=A AND M=B THEN LED1 ELSE LED0

22行目の「H=A AND M=B 」というのは,「H=A であってしかも M=B である」,つまり「今の時間の「時」が設定時刻の「時」と一致していて,しかも,今の時間の「分」が設定時刻の「分」と一致している」かどうかを調べています.一致していたらLEDを点灯させ,一致していなければLEDを消灯させます.秒の一致は調べないとしているので,これで1分間LEDが点くと思います

これがうまくいったら,今度はブザーを鳴らすとか,設定時刻を変更するとか,いろいろ便利な機能を付けていきましょう.
コウキさん (98c0y0rj)2024/8/12 08:28削除
不破先生、こんにちは。アドバイスありがとうございます。
LEDが光るようになりました!ありがとうございます。次はブザーを鳴らすのにチャレンジします。教室で教えてもらった、タイマープログラムの拡張(2)でやってみたいと思います。気をつけなければいけないことがあれば教えてください。
コウキさん (98dxpmhk)2024/8/13 16:33削除
不破先生、こんにちは。
ブザーを鳴らせるように、チャレンジしてみました。

5 A=12:B=55
10 H=12:M=54:S=0
11 CLS
12 VIDEO5
15 LC0,2
20 ?DEC$(H+100,2);":";DEC$+(M+100,2);":";DEC$(S+100,2)
22 IF H=A AND M=B THEN LED1 ELSE LED0
23 IF H=A AND M=B THEN BEEP5,5:WAIT10:BEEP10,5:WAIT10
25 IF TICK()<60 CONT ELSE CLT
30 S=S+1
35 IF S=60 S=0:M=M+1:IF M=60 M=0 H=H+1:IF H=24 H=0
40 GOTO15

これで12時55分にブザーも鳴るようになりました。
次に、ボタンを押したらブザーが止まるようにしたいと思って、
24 IF BTN(0)=0 THEN GOTO23
とやってみましたが、時計が進みませんでした。
なので、今度は、
50 IF BTN(0)=0 THEN GOTO23
とやってみましたが、時計は進みましたが、ボタンを押してもブザーが止まりませんでした。
どうすればよいでしょうか。
不破さん (98e03c01)2024/8/13 17:40削除
どのような目覚まし時計を作るかをまず決めましょう。

現在のプログラムでは、設定した時刻である12:55になると、12:55:00〜12:55:59の1分間LEDが点灯し、ブザーが鳴り続けます。そして、1分経ち12:56になると、自動的にLEDは消灯し、ブザーも止まります。

ボタンを押したらブザーが止まるようにしようということですが、
 ・1分間ボタンを押さないで12:56になったときにもブザーが止まるのが良いのか
 ・ボタンを押さなければ、ブザーは何分経っても鳴り続けるのが良いのか
どちらがよいでしょうか。
コウキさん (98et5paj)2024/8/14 07:13削除
不破先生、おはようございます。アドバイスありがとうございます。
ぼくは、目覚ましが鳴ってもなかなか起きられないので、ボタンを押さないと何分経っても鳴りつづけるほうがよいです。
不破さん (98e03c01)2024/8/14 09:58削除
ボタンを押さないと、何分経っても鳴り続ける目覚まし時計ですね。
一緒に考えてみましょう。

この目覚まし時計は、次の3つの状態を持つことになりますね。

(状態0)動作を開始して、設定した時刻が来るまでの状態
(状態1)設定した時刻になりブザーが鳴り始め、ボタンはまだ押されていない状態
(状態2)(状態1)の時にボタンが押されてブザーが停止した状態

今、時計はどの状態にあるのかを、変数Cの値で区別するようにしましょう。
(状態0)の時は、変数Cの値が0
(状態1)の時は、変数Cの値が1
(状態2)の時は、変数Cの値が2

最初、Cの値は0から始まりますので、次の行を入れておきます。

6 C=0

そして、22行目、23行目で、時計の状態を判定してCの値を決めることにしましょう。

22 IF C=0 AND H=A AND M=B THEN C=1
23 IF C=1 AND BTN(0)=1 THEN C=2

22行目では、Cの値が0:つまり(状態0)の時に、時刻が設定した時刻になったらCの値を1:つまり(状態1)にします。
23行名では、Cの値が1:つまり(状態1)の時に、ボタンが押されたらCの値を2:つまり(状態2)にします。

Cの値がどう変化しているかを確認するために、次の24行目を入れておきましょう。

24 ?C

このプログラムを動かして、Cの値が思ったとおりに変化するかどうかを確認してください。
22行目にあったLEDの点灯は消去していますし、ブザーを鳴らすプログラムもまだ書いていません。
ブザーは(状態1)の時に鳴らすのですが、どうプログラムすれば良いかを考えてみてください。
コウキさん (98gcyh1m)2024/8/15 09:15削除
不破先生、おはようございます。アドバイスありがとうございます。
Cの値が1になったときにブザーが鳴ってLEDが点灯する、Cの値が2になったときに消えるプログラムを考えてみました。

26 IF C=1 THEN BEEP2,9:WAIT10:BEEP9,8:WAIT10
27 IF C=1 THEN LED1 ELSE LED0

これでやってみたら、指定した時間から1分を過ぎてもブザーもLEDも続いたままで、ボタンを押したらどちらも消えました!

明日の朝からこの目覚まし時計で起きたいと思います。
そのときに、ブザーの音の高さや長さを毎日変えてみて、どれだったら起きやすいかをためしてみます。
不破さん (9597uafr)2024/8/15 23:38削除
思った通りに動作できると嬉しいですね.
これから,いろいろ改良してみてください.楽しみにしています.
コウキさん (98l43g7y)2024/8/18 17:06削除
不破先生こんにちは。
発表動画が完成しましたので送りました。たくさんのアドバイスありがとうございました。
返信
スイカ🍉さん (986uja9k)2024/8/8 17:30 (No.122212)削除
松本のイベントに参加した者です。
4個のサーボでクレーンアームをつくりたいのですが、サーボが家族合わせて3個しかなくて、やり方もよくわからないので、手伝ってください。3Dプリンターでアームの形を作って、それにサーボなどをつけて、キーボードで操作できるようにしたいです。
イメージをイラストで描きました。アップするか、センドする方法を教えて下さい。
不破さん (92guwcgm)2024/8/8 18:20削除
ご質問、ありがとうございます。
モーターですが、もう1つお渡ししますので、事務局に連絡してください。頑張りましょう。まずは1軸アームから初めて、少しづつ軸を増やしていくのが良いと思います。
イメージの送付については、お伝えしているOne Driveにアップしてください。
事務局さん (9857dua4)2024/8/9 09:22削除
スイカさん、ご連絡ありがとうございます。
サーボモーターの予備を貸出できますので、サザンガクまでお越しいただけますか?
不破先生からもご返答いただいたように、まずは1軸から始めていただくのがよいと思います。

3Dプリンターでアームを作れるかどうかは、3Dプリンターの持ち主とも相談いたします。イメージを、動画の提出要領と同じに
アップロードしていただけますか。検討します。
返信
いぶさん (97xxwxej)2024/8/5 18:05 (No.122138)削除
先日はプログラミング教室ありがとうございました!
本日動画をアップロードしましたが、ファイル名「masuda.mp4」を上手く入れられなかったかもしれません…
お手数おかけして申し訳ありませんが、確認して頂けると有り難いです。

よろしくお願いします。
不破さん (932ydmgn)2024/8/6 00:30削除
お疲れ様です。
アップロードされたファイルの管理は、サザンガクの事務局のほうで行って頂いています。
事務局に連絡して頂けますか。よろしくお願いいたします。
いぶさん (97xxwxej)2024/8/6 09:08削除
了解いたしました。

不破先生、三日間ありがとうございました。
事務局さん (9857dua4)2024/8/7 13:54削除
いぶさん、ご連絡ありがとうございます。
masuda.mp4の動画ファイルはちゃんとアップロードされており、中身を確認することができました。
3日間、お疲れ様でした。
IchigoJamの貸出期間はまだたっぷりありますので、たくさん作って、たくさん遊んでみてください。
返信
いぶさん (97xxwxej)2024/8/2 11:55 (No.121996)削除
人が近づくと人感センサーが反応して、モーターでうちわを仰ぎ、人が離れると自動で止まる「自動うちわ仰ぎ機」を作成中です。(終了をするときはボタンを押して終わります。)
しかし、人感センサーが上手く反応出来ず、人が離れてもモーターが止まりません。
どうすれば出来るか教えてほしいです。

コード
10.OUT□1,-1
20.OUT□2,1
30.A=IN(5)
40.PWM□5,200:WAIT10
50.PWM□5,100:WAIT10
60IF□BTN(0)0□THEN□GOTO30
70END

よろしくお願いします。
不破さん (93c8u5n9)2024/8/2 12:10削除
お疲れ様です.ご質問ありがとうございます.

30 A=IN(5)
を実施した際に,人感センサーの情報が変数Aに入ります.
この変数Aの値が 1 のときに近くに人が居る,Aの値が 0 の時は近くに人は居ないということになるので,例えば近くに人が居ないならモータは動かさずにボタンが押されているかどうかの確認に移動するようにしてはどうでしょうか.

例えば,次の35行目のプログラムを追加するとどうでしょう.

35 IF A=0 THEN GOTO 60
いぶさん (97z7zq95)2024/8/3 09:24削除
返信ありがとうございました。

35のコードを入れてみましたが、人が離れても止まりません…

他に手だてはありますか?よろしくお願いします。
不破さん (932ydmgn)2024/8/3 22:08削除
明日の教室で、確認してみましょう。
よろしくお願いします。
いぶさん (97xxwxej)2024/8/3 22:16削除
よろしくお願いします!
明日が楽しみです。
返信
はむすたーさん (92h49lcv)2024/5/26 18:32 (No.120138)削除
今日動画をアップロードできました。
すいませんが、動画を限定公開にできますか?
匿名さん (9597uafr)2024/5/26 19:19削除
お疲れ様です.
事務局に伝えますので,よろしくお願いします.
事務局ですさん (95a943a8)2024/5/27 12:42削除
投稿ありがとうございます。
データ名は、「lv」ではじまるタイトル「勉強した分だけ遊べるアプリ」ということでよいでしょうか。
限定公開ということで承りました。
また、ファイル名は、名字にrenameしていただきたくお願いいたします。
はむすたーさん (92h49lcv)2024/5/27 21:38削除
何度もすいません!一般公開でもいいですか?すいません!
匿名さん (932ydmgn)2024/5/27 22:18削除
承知しました。事務局に伝えましたので、ご確認ください。
事務局ですさん (95bhfz3p)2024/5/28 09:23削除
ハムスターさん、投稿ありがとうございます。
一般公開にする件、了解いたしました。
念のための再確認です。データファイル名はlv_0_20240526122722.mp4で間違いありませんか?
返信
はむすたーさん (92h49lcv)2024/4/1 18:58 (No.118246)削除
何からやって言いかわかりません。やらなきゃいけないと思っているんですが、アイデアがなくて、困っています。どうすればいいですか?
匿名さん (932ydmgn)2024/4/2 00:48削除
ご相談、ありがとうございます。

なかなかアイデアが浮かばない場合は、「タイマー」プログラムを改良してみるのはどうでしょうか。

例えば、勉強を頑張ってやったら、そのあと頑張った時間と同じ時間は遊んで良いという「タイマー」プログラムをつくるのはどうでしょうか。

例えば次の様な動作をするプログラムです。
(1)RUNすると、ボタンを押すまで待つ
(2)勉強を開始したらボタンを押す。すると、1秒ごとにカウンターが1つづつ増えていく
(3)勉強が終わったらもう一度ボタンを押す。すると、カウンターの値が今度は1つづつ減っていく
(4)カウンターの値が0になったらブザーが鳴る
というようなプログラムです。

まずは作ってみませんか。
はむすたーさん (92h49lcv)2024/4/2 22:21削除
ありがとうございます。やってみます!
はむすたーさん (93aubk1v)2024/4/7 13:16削除
こんにちは。プログラミング親子でやっていますが、難しいです。
ボタンを押したら、カウントが止まるというところがわかりません。
10 A=0
20 CLS:LOCATE 0,0:?A 
30 WAIT60 : A=A+1 
40 IF BTN(0)=0 THEN GOTO20 
50 IF BTN(1)=1???
50行目にそれを書きたいのですが、どうかけばいいですか?
はむすたーさん (92h49lcv)2024/4/27 15:12削除
ありがとうございます。できました。数字を大きく表示する方法はありますか?
f
fuwaさん (92guwcgm)2024/4/27 16:19削除
お疲れ様です。どんなプログラムか、動画で見せていただくのが楽しみです。

文字を大きくする命令は VIDEO という命令です。

この命令の後ろに数字を書き、その値によって文字の大きさが変わります。

VIDEO 1 --- 電源を入れた直後の通常の大きさ
VIDEO 2 --- 電源を入れた直後の通常の大きさで白黑逆 VIDEO 3 --- 大きな文字
VIDEO 4 --- 大きな文字で白黑逆 VIDEO 5 --- 巨大な文字
VIDEO 6 --- 巨大な文字で白黑逆
VIDEO 7 --- さらに巨大な文字
VIDEO 8 --- さらに巨大な文字で白黑逆

例えば、タイマープログラムの冒頭に
VIDEO5
と書いて文字を大きくし、
終了する直前に
VIDEO1
と書いて文字を元に戻すというように使うことが出来ます。
返信
はむすたーさん (92h49lcv)2024/4/7 14:41 (No.118439)削除
ちなみに、ボタンを押してカウントをとめてから、さらにボタンを押すとカウントがゼロに向かうようにしたいです!
f
fuwaさん (92guwcgm)2024/4/7 22:05削除
お疲れ様です。
例えば次のようなプログラムはどうでしょうか。まだ基本的な動きだけです。

30行目 待ち時間を0.1秒刻みにしました。ボタンを押したときの反応を良くするためです
40行目 ボタンが押されていない間はカウントアップを続けます
50行目 ここから1秒待って、カウントダウンを始めます
60行目 ボタンが押されるまで待ちます
80行目 0.1秒刻みでカウントダウンします
90行目 カウントが0になっていなければ、70行目に戻ってカウントダウンを続けます。

10 A=0
20 CLS:LOCATE 0,0:?A 
30 WAIT6:A=A+1 
40 IF BTN(0)=0 THEN GOTO20 
50 WAIT60
60 IF BTN(0)=0 THEN GOTO 60
70 CLS:LOCATE 0,0:?A
80 WAIT 6:A=A-1
90 IF A>0 THEN GOTO70
はむすたーさん (92h49lcv)2024/4/8 12:49削除
理解できない部分もありますが、やってみます。不破先生ありがとうございます。
匿名さん (93c8u5n9)2024/4/8 12:51削除
是非また質問をしてください。よろしくお願いいたします。
返信