過去のラジコン飛行機講座
サイトのアクセスログを見てみたら平成14年に行った公開講座のファイルが直接アクセスされてるようで、ホームページからはリンク張ってないようだけど過去にtwitterでつぶやいたのを思い出しました。
今見ると、2日の公開講座の準備に結構な労力を使ってて、いい思い出ではあるのでトップページのリンクを貼っておきます。
昔の解像度で動画もおいてありました。
個人名称も電話番号も乗ってたので、そのくらいは消しておかないと。
数年、数回はやるつもりで準備したのですが、中学生には難しかったようで、ちゃんと完成できたのは数人でした。でも形だけは大抵できてたので、楽しんでもらえたと思います。
結局1回きりの講座になりました。
R/C飛行機(グライダー)講座
-追記-
PDF編集ソフト持ってないので電話番号消せない。
検索すれば出てくる情報ではあるのでいいか。
真面目な用事があったら電話来てもまあOK.
今見ると、2日の公開講座の準備に結構な労力を使ってて、いい思い出ではあるのでトップページのリンクを貼っておきます。
昔の解像度で動画もおいてありました。
個人名称も電話番号も乗ってたので、そのくらいは消しておかないと。
数年、数回はやるつもりで準備したのですが、中学生には難しかったようで、ちゃんと完成できたのは数人でした。でも形だけは大抵できてたので、楽しんでもらえたと思います。
結局1回きりの講座になりました。
R/C飛行機(グライダー)講座
-追記-
PDF編集ソフト持ってないので電話番号消せない。
検索すれば出てくる情報ではあるのでいいか。
真面目な用事があったら電話来てもまあOK.
LED電球の分解、その2
せっかくなので、どこが壊れてるか調査。
LEDをひとつずつ当たっていったけど、特に壊れてなさそう
このLEDモジュールは、1個当たり15V-16Vで光りました。
7個直列なので105Vで光らせることになります。
電解コンデンサも外して容量確認。絶縁はあって10μFありましたので、まあ大丈夫。
テスターで接続を追いながら回路を書いたらこんな感じ。(部品の型番は伏せておきます)
交流100Vをブリッジダイオードで全波整流してピーク値で直流にして、3端子の何かで電流制限をかけてLEDモジュールを直列に光らせてるので、壊れたのは多分3端子の何かですね。
広告↓ なんか怪しい電球
スマート電球WiFiコントロール-フルカラー調光可能RGB携帯電話制御LED電球、音楽リズム時間制御色の変更リビングルームのバーパーティーに最適
LEDをひとつずつ当たっていったけど、特に壊れてなさそう
このLEDモジュールは、1個当たり15V-16Vで光りました。
7個直列なので105Vで光らせることになります。
電解コンデンサも外して容量確認。絶縁はあって10μFありましたので、まあ大丈夫。
テスターで接続を追いながら回路を書いたらこんな感じ。(部品の型番は伏せておきます)
交流100Vをブリッジダイオードで全波整流してピーク値で直流にして、3端子の何かで電流制限をかけてLEDモジュールを直列に光らせてるので、壊れたのは多分3端子の何かですね。
広告↓ なんか怪しい電球
スマート電球WiFiコントロール-フルカラー調光可能RGB携帯電話制御LED電球、音楽リズム時間制御色の変更リビングルームのバーパーティーに最適
一番シンプルなC言語のプログラムのアセンブリ言語変換
Microchip studioでC言語のプログラムを作成して、ビルドでできた .lss ファイルを見るといろいろ長い。
new -project で gcc c executable project で新規プロジェクトを作成するとシンプルなコードができる。
#include
int main(void)
{
/* Replace with your application code */
while (1)
{
}
}
不要なものを入れたくないので、 #include コメント化
これでビルドしてできたHEXは、
:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C9441000C940000F4
:06008000FFCFF894FFCF52
:00000001FF
.lssの一部を抜き出してみると...
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end>
4: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
8: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
-途中省略ー
64: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
00000068 <__ctors_end>:
68: 11 24 eor r1, r1
6a: 1f be out 0x3f, r1 ; 63
6c: cf ef ldi r28, 0xFF ; 255
6e: d8 e0 ldi r29, 0x08 ; 8
70: de bf out 0x3e, r29 ; 62
72: cd bf out 0x3d, r28 ; 61
74: 0e 94 40 00 call 0x80 ; 0x80
78: 0c 94 41 00 jmp 0x82 ; 0x82 <_exit>
0000007c <__bad_interrupt>:
7c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000080:
// #include
int main(void)
{
80: ff cf rjmp .-2 ; 0x80
00000082 <_exit>:
82: f8 94 cli
00000084 <__stop_program>:
84: ff cf rjmp .-2 ; 0x84 <__stop_program>
というわけで、これが最低限のCコンパイラで生成されるアセンブリ言語のようだ。
0番地から68番地に飛んで、なんか省略できない設定をして、
80番地をコールして、80番地で無限ループに入る。
リターンは無いけど、もしリターンがあっても、82番地に飛んで、そこで割り込み禁止して無限ループに入る。
というプログラムになるようだ。
new -project で gcc c executable project で新規プロジェクトを作成するとシンプルなコードができる。
#include
int main(void)
{
/* Replace with your application code */
while (1)
{
}
}
不要なものを入れたくないので、 #include コメント化
これでビルドしてできたHEXは、
:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C9441000C940000F4
:06008000FFCFF894FFCF52
:00000001FF
.lssの一部を抜き出してみると...
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end>
4: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
8: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
-途中省略ー
64: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
00000068 <__ctors_end>:
68: 11 24 eor r1, r1
6a: 1f be out 0x3f, r1 ; 63
6c: cf ef ldi r28, 0xFF ; 255
6e: d8 e0 ldi r29, 0x08 ; 8
70: de bf out 0x3e, r29 ; 62
72: cd bf out 0x3d, r28 ; 61
74: 0e 94 40 00 call 0x80 ; 0x80
78: 0c 94 41 00 jmp 0x82 ; 0x82 <_exit>
0000007c <__bad_interrupt>:
7c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000080
// #include
int main(void)
{
80: ff cf rjmp .-2 ; 0x80
00000082 <_exit>:
82: f8 94 cli
00000084 <__stop_program>:
84: ff cf rjmp .-2 ; 0x84 <__stop_program>
というわけで、これが最低限のCコンパイラで生成されるアセンブリ言語のようだ。
0番地から68番地に飛んで、なんか省略できない設定をして、
80番地をコールして、80番地で無限ループに入る。
リターンは無いけど、もしリターンがあっても、82番地に飛んで、そこで割り込み禁止して無限ループに入る。
というプログラムになるようだ。