---自己保持回路 (1)---

 以前、半田ごてタイマーを作製しました。
 当初の予定では、切り忘れると、自分自身の電源も落とす
 予定でしたが、自己保持と解除がうまくいかなくて、そのま
 になっていました。

 

 自己保持をさせるには、いろいろ方法があるようですが、
 SSRを使って、自己保持回路のテストをしてみました。

  

 うまくいったので、半田ごてタイマーを改造してみようと
 思います。自己保持のための、スイッチも飾りで、つけ
 てありますので、追加部分を加えて、配線をするだけです
 回路図も残ってないのですが、下図のような感じで、SSR

 

 等を付け加えようと思います。

---PEN-F新発売---

 まだ、中学生だったころ、オリンパスから発売されていた
 PEN-Fというハーフサイズの一眼レフがほしいと思ってま
 したが、手がでませんでした。

 

 その後、物心ついてから、PENTAX→NIKON-F2と、まあ、
 道具だけは、いい物を購入してました。
 いまは、オリンパスのEP-2を所有しています。
 メーカーからの、ダイレクトメールで、リニューアル?した
 PEN-Fが発売されるようです。

 

 ハーフサイズのフィルムカメラのPEN-Fを踏襲したデザ
 インになってます。
 魅力的なのは、ファインダーが内蔵されていることです。
 これがないと、老眼の身にはとても不便です。
 EP-2では、外付けのファインダーをつけて使ってました。

 

 これをつけると、アクセサリーシューがふさがってしまい
 ますので、ストロボ等がつけられません。 
 これが内蔵ですから、便利になります。
 それだけではなく、魅力的な機能も沢山ありますが、
 ただ、値段が、メーカー価格159,840円。
 悪い虫がおきそうですが、高い。
 価格comでは、予約価格が143,840円。

---黒鳥の子育て---

 毎年、今の時期になると、黒鳥が子育てをしています。
 近くを通る人から食べ物をもらえ、いい環境で、暮らして
 います。

 

 たいていは、つがいの片割れが近くにいて、けなげに番犬
 ならぬ、番鳥をしています。
 ある一定以上、近くによると、これ以上近づくなと、怒られて
 しまいます。

---PIC 流れるサインボード (2)---

 なめらかにスクロールする方法について、いろいろアドバイス
 いただきました。
 ハードルが高い部分もあって、なかなか実現できません。
 とりあえず、当初の目的である、PCからの入力を表示する
 ことができました。

 

 PICを初めてから、いつも迷ってたのが、文字のキャラクター
 コードの扱いです。
 VB等では、キャラクターコード得るには、

   Asc(‘A’)

 のように「Asc」の関数を使うようです。プログラムを初めて
 覚えたBasicでも同じような関数を使ったと思います。
 このことが頭に残っていて、関数を使わなければ、と思い
 こんでいました。
 なんのことはない、コンピューター上では、同じ、数字で扱わ
 れるんですね。ですから、アスキーコードを得て、演算をする
 には、端に「int」型にキャストすればいいということがやっと
 わかりました。

      char c1 = ‘a’;
      int code1 = (int)c1;

 これで、code1には、’a’のキャラクターコードの0x61を得る
 ことができました。
 キーボードからの入力を表示するにあたって、大文字のデータ
 しかいれていませんので、小文字は、0x20を引いて、

   char c1 = ‘a’;
   int code1 = (int)c1-0X20;

 大文字に変換しました。

---PIC 流れるサインボード (1)---

 諸兄のHPを参考に、PICを使ってサインボードを作りました。
 何の使用目的もない、ただのおもちゃです。
 ただ、諸兄のHPで使ってる74HC154は製造中止でしたの
 で、これまた、諸兄のHPを参考に、74LS138二つで置き換
 えて作りました。
 三日ぐらいかかって、配線を終えて、どのような形で、流れる
 サインボードを実現するか考えました。
 参考になるC言語によるプログラムがみあたらなかったので、
 過去の7セグLEDを使った工作を思い出しながら、
 ダイナミック点灯を基本にプログラムを組むことにしました。

 

 8×8のLEDが4枚ですので、8×32列のLEDがならんでます。
 この黄色い□から黄色い□までのLEDに、タイマー割り込みを
 使って、このLEDとダブるように準備したメモリーの内容を
 書き出すことにしました。
 テレビで使われている走査線のイメージでしょうか。
 メモリーには、縦に8個並んでいるそれぞれのLEDの
 ON-OFFの情報を書き込みます。
 右にスクロールさせるには、メモリーの左側の山吹色の部分
 に表示させる文字のデーターを書き込みます。
 左にスクロールさせるには、メモリーの右側の青色の部分に
 表示させる文字のデーターを書き込みます。
 「A」の表示をさせるには、

 

 16進数7個をメモリーに書き込みます。
 左側に書いてある数字が、上から左端の縦の列の情報に
 対応します。
 これをスクロールさせるには、メモリーに書いてある情報を
 それぞれ、一つ右側のメモリに移動する、ということで、実現
 します。

 

 多分、このほかにもスクロールの方法があるのでしょうが、
 自己流で、作製しました。
 実際に動かして見ると、すーっと流れるような表示には、
 なっていません。
 なめらかにするには、もう少し、工夫が必要なんでしょうね。

 

 アルファベットのA~Zまでの大文字のデーターを入れると、
 それだけで、ほぼメモリーが満杯です。
 倍のメモリーのある16F1939に変更してみようと思います。
 USARTを使って、PCのデータをスクロールさせるのが目標
 です。

---HP・htmlの編集---

 在宅のお手伝いの仕事の関係で、CGIをいじったり、
 htmlをいじったりしてます。
 CGI(Perl)は正規表現のオンパレードで、チンプンカンプン。
 もっぱらサポート掲示板のお世話になってます。
 それよりは、まだ、htmlの方がいじりやすいです。
 まだ、まだ、コピペ段階ですが、昨日は、input buttonをブリ
 ンクさせたくて、ネットでたぐって、やっと、その方法がわかり
 ました。
 C言語等でいえば、サブ関数を書き入れて、それを呼び出す
 イメージですね。
 次の手順でできました。もちろん、0から作るのではなく、
 動いているものを改変します。

   1 <head>~</head>の記述を探す。
   2 上記内でさらに
      <style type=”text/css”>~</style>を探す。
   3 さらに、を探す
   4 3の部分に使いたいcssを追記する。
   5 追記したもの
    /* 点滅 */
     .blinking{
       -webkit-animation:blink 1.5s ease-in-out infinite alternate;
       -moz-animation:blink 1.5s ease-in-out infinite alternate;
       animation:blink 1.5s ease-in-out infinite alternate;
     }
     @-webkit-keyframes blink{
       0% {opacity:0;}
       100% {opacity:1;}
     }
     @-moz-keyframes blink{
       0% {opacity:0;}
       mcxaza100% {opacity:1;}
     }
     @keyframes blink{
       0% {opacity:0;}
       100% {opacity:1;}
     }
   6 効果を持たせたい部分を
      <span class=”blinking”>
        と
      </span>
        で囲む

 これだけですが、理解するのに、半日以上かかりました。
 CSSの記述は、htmlファイル内に記述する場合と、
 *.cssという外部ファイルに記述して、取り込む場合と、
 両方あるようですね。
 外部ファイルの取り込みにも何種類かやり方があるようです。
 この辺は、Cとは、ちょっと違いますね。
 という訳で、やっと、目的の装飾(ブリンク)が達成できまし
 た。
 =追記=
   <span class=”blinking”>は、ブログの編集画面で、
   そのまま、書くと、スタイル?の一部と認識されて、
   表示されなくなります。
   「<」と「>」を半角で表記するには、それぞれ、
       &ltと&gt
   を使うようです。ちょっと、面倒ですねえ。

---レオとお散歩---

 いつの間にか、足腰がちょっと弱ってしまった愛犬のレオの
 ために、また、少しずつお散歩に行き始めました。
 足が悪いので、歩くのは嫌いなのですが、本人(本犬?)の
 ために、歩く距離を少しずつ増やせればと思います。
 過日、お散歩に行ったら、後から、人なつこい?カラスが
 一定の距離を置いてついてきます。
 レオにおやつをあげて休んでいると、なんと1mか2mぐらい
 の近距離まで、近づいてきました。

 

 このカラスは、きっと何回も食べ物をもらって、学習したんで
 しょうね。ささみのワンコ用のチップスを投げると、拾って
 食べました。車のおいてある所近くまでついてきました。
 お散歩にきた公園では、暖冬?のためか、いつもより早く
 梅の花が咲いていました。

 

 この週末は寒くなりそうですが、春は、もう、そこまできてま
 すね。
 この間、冬になったともったら、もう、春の足音が近づいて
 ます。時間がたつのがはやいです。

---手強しエクセルVBA (3)---

 VBAと格闘をしていて、最後に保存しようと、「Crtl+S」を押して
 上書き保存をしようと思うと、なぜか、名前をつけて保存に
 なってしまいます。
 NETで検索してもひっかかりません。
 もしやと思い、ファイル-オプションをたどってみると、なんと
 「保存」という項目があるではありませんか。

 

 ここにブックの保存形式という覧があります。ここがデフォルトでは、
 マクロを保存しない、「.xlsx」になってます。これで、上書きではなく
 て、名前をつけて保存になったようです。
 ここを、マクロも記録できる、「.xltm」にすると上書きができるよう
 になりました。
 もしかして、ここは、「.xlsm」(マクロ有効ブック)でもよかったの
 かも。
 この設定は、以前のものにはなかったような?,気が。
 あったのかな、この辺はちょっと、不確かです。

---手強しエクセルVBA (2)---

 お手伝いでしている仕事の内容は、ある行事の参加者申し
 込みの受付の処理です。
 参加希望者は、HPから申し込みをします。すると。手元に
 申し込みのメールが届きます。
 このメールを処理して、

  1 受講票返信メールの作成・送付
     受付日付
     受付No
  2 受講者一覧表の作成

 の一連の作業をします。以前は、この作業を全部手作業
 でやってました。
 今回の催しの定員が100名ですから、結構な手間です。
 そこで、VBAの登場でしたが、やっと次のような手順で
 かなりの部分を半自動?にすることができました。

 
  送られてくる自動返信メールのコピー(手動)
   ↓
  エクセルに貼り付け(手動)
   ↓
  必要データーの取り出しと成形(エクセル関数)
   ↓
  一覧表への追加(エクセルVBA)
   ↓
  返信文面の作製(エクセル関数)
    受付月日の挿入
    受付Noの挿入
   ↓
  エクセルの返信文面のコピー(手動)
   ↓
  メールへの貼り付け(手動)
   ↓
  送信・・・・・・・・・受付完了

 これらの作業のなかで、一覧表への追加が一番てまどりまし
 た。
 その次にてまどったのが受付Noの挿入です。
 これは、受付名簿の一覧表から、追加した項目のNoを
 読みとることで実現しました。

   Worksheets(“Sheet1”).Range(“B” & Range(“C4”).-
        End(xlDown).Row).Copy
   Range(“J6”).Select
   ActiveSheet.Paste

  表に追加すると、C4の表題以下のセルに種別が追加され
 ますので、

   Range(“C4”).End(xlDown).Row)

 で、どこのセルが記入済みの最下段(行)か取得します。
 この読みとった行とNoの書いてある”B”と&をとって、
 該当のNoのセルの番地を作ってます。

 Worksheets(“Sheet1”).Range(“B” & Range(“C4”).End(xlDown).Row)

 これを、作業セルのJ6にペーストします。

   Range(“J6”).Select
   ActiveSheet.Paste

 こんな一連の動作で、受付Noを挿入した文面を作りました。
 手間取りましたが、ちょっと楽になって、間違いもすくなくなり
 そうです。

---手強しエクセルVBA (1)---

 手強いVBAを少しやっつけました。
 以前にしたことを少し思いだしましたが、未だ手強いのには、
 変わりありません。
 昨日、やっつけたのは、一定の範囲のセルを表の最下行に
 追加でペーストするというものです。
 ただ、これだけで、何時間もかかりました。できてみると、

 Sub コピー()
    Worksheets(“Sheet1”).Range(“K133:O133”).Copy
    Worksheets(“Sheet1”).Range(“C” & (Range(“C4”).End(xlDown).Row + 1)).-
    PasteSpecial Paste:=xlPasteValues, -
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  End Sub

 何のことはない、たった、2行です。
 K133~O133のセルに書かれているセルの値だけを、表の
 最下行にコピーするだけです。
 
 表の最下行を

   Range(“C4”).End(xlDown).Row

 で求め、その下を+1で求めます。
 エクセルの番地は、英語と数字です。この番地を

   Range(“C” & (Range(“C4”).End(xlDown).Row + 1))

 で&を使って作ります。