So-net無料ブログ作成
検索選択
前の10件 | -

(ARDUINO)ARDUINOにプリンターを接続する [arduino]

今回は、Arduinoに超小型プリンターを接続して使います。使うのは、レシート用紙を使うサーマル・プリンター(熱転写プリンター)です。
 液晶ディスプレイではどうしても情報量が限られますし、マイクロSDに記録してもパソコンがないと結果を把握できないし……簡単に情報を閲覧できるのはなにか?と考えると「プリンター」という結果にたどり着いたのです。
 しかも、熱転写式ならインクジェットみたいにウォームアップがいりません。インク切れに脅える必要もありません。(熱転写式は、実際には熱に弱い欠点がありますけど)
 それで、このプリンターを入手したのです。
 CIMG0183.JPG
 Arduinoと並べると小ささが判ると思います。
 海外のサイトで売られている熱転写プリンター(中国製)です。
 http://www.adafruit.com/products/600#tutorials

 このプリンター、いろいろと探していて見つけたもので、輸送費(いちばん安いヤツ)込みで1万円以内(およそ77USD)で買える価格だったのですぐに注文しました。(先ほどのAdafruitのサイトから購入しました。今回は注文してからおよそ10日ぐらいで届きました)
 SPARKFUNにも同等のプリンター(COM-10438:端子部分など若干違いがあります)がありますが、どちらのプリンターにしても電源は5V2Aなので、Arduinoの5Vと接続しても動かせません。別に電源が必要になります。
 今回、ACアダプターを別に買ったりするのも面倒なので、一式全部そろった「スターター・パック」を注文しました。

 単純に印字するだけなら、19200BPSでテキストを送信して、最後にLF(0x0A)を送信すれば印字してくれます。

 CIMG0187.JPG
 極端な話、Arduinoに適当にBlinkでも入れて、こんな感じでArduinoのデジタルポートの0番とプリンターのRX、GNDとプリンターのGNDを配線して、IDEのシリアル・モニターの改行をLF、通信速度を19200BPSに設定してしまえば、IDEから送った文章を印刷してくれます。
 これだけでも、もう小さなタイプライターが出来上がってしまいます。


 またAdafruitに、各種機能を簡単に使えるライブラリーもありますので、それを使うのも良いでしょう! ただし! このライブラリーには注意すべきことがあります!
 Adafruitのサイトで紹介されているライブラリーは統合開発環境Arduino1.0ではエラーとなって動きません。
 さらに、指定のURLからライブラリーをダウンロードすると、「adafruit-Thermal-Printer-Library-736bc98.zip」というファイルになりますが……
 Arduinoのライブラリーに入れる場合、フォルダをこの長いファイル名したのではダメなのです。
 「Thermal」という名前にしないとダメなんです。めんどくさいですね(^^;;;;

 SPARKFUNのHPにも資料がありますので、http://www.sparkfun.com/datasheets/Components/General/Driver%20board.pdf、こちらを参考にしても良いと思います。

 CIMG0184.JPG

 印字速度もレシート用だけに速いです。
CIMG0186.JPG
 縦倍角、反転とか、いろいろありますし、バーコードも印字できます。
 さらにはキリル文字対応ってのがすごいです。
 簡単なグラフィックも印字することは出来ます。

 しかし! カタカナやひらがな、日本語には対応していません。

 でも、とにかく簡単に使えるのでArduinoでプリンターを使いたいって方にはお勧めです。

 ちなみに、付属したレシート用紙の大きさは幅58ミリ、外径35ミリ、内径(芯)12ミリのものでした。用紙については、外径38ミリまでは大丈夫との事です。

(ARDUINO)ATtiny85を8Mhz動作でプログラムする [arduino]

 今回はATtiny85を8Mhzクロック動作にして、統合開発環境Arduino1.0でプログラミングしてみます。

 8Mhz動作にすると、SoftwareSerialが使えるのが大きいです。
 もちろん、シリアルのprint構文なども使えるようになります。

 するとこんな感じに、LEDを点けるだけでなく、シリアル接続の7セグLEDを使えたりします。

CIMG0182.JPG
(※シリアル接続のLEDは、SPARKFUNのCOM-09230という旧タイプ、現在はCOM-09764という新しいタイプになっています。電源は乾電池2本で5Vを出力する電池ボックスPRT-08249です)


 かなり表現範囲が広がるので、いろいろなことが出来るようになります。

 では、肝心の設定に参りましょう!

■8Mhz動作への切り替え
(1)ArduinoとATtiny85をプログラムする時と同じように結線する。
(2)Arduino1.0を起動する
(3)Arduino1.0の[Tools]から[Boad]と進み[Attiny85(internal 8Mhz clock)]を選択
(4)Arduino1.0の[Tools]から[Programmer]と進み、[Arduino as ISP]を選択
(5)Arduino1.0の[Tools]から[Burn bootloader]を選択

 ただし、ここでブートローダを書き込んだとしても、シリアル通信でATtiny85をArduinoのようにプログラムすることは出来ません。
 この手順によって、ATtiny85は8Mhz動作になるようにヒューズ・ビットが設定されるだけです。ですので、プログラムする時は相変わらず、ArduinoISPなどの外付けのISPが必要です。

 後はいつものようにプログラムをして、Attiny85(internal 8Mhz clock)に書き込むことが出来ます。
 もちろん、ソフトウェアシリアルは使えます。
 テストのために、サンプルのBlinkをAttiny85(internal 8Mhz clock)として書き込んでみてください。きちんとヒューズ・ビットの設定が出来ている場合には、一秒間隔で正しく点滅しますが、もし1Mhz動作のままならば、8秒くらいの長い間隔で点滅してしまいます。


■1Mhz動作への切り替え
(1)ArduinoとATtiny85をプログラムする時と同じように結線する。
(2)Arduino1.0を起動する
(3)Arduino1.0の[Tools]から[Boad]と進み[Attiny85(internal 1Mhz clock)]を選択
(4)Arduino1.0の[Tools]から[Programmer]と進み、[Arduino as ISP]を選択
(5)Arduino1.0の[Tools]から[Burn bootloader]を選択

 こうすることで、1Mhzの動作の設定に戻すことが出来ます。


※一度、8Mhzクロックにすれば、以降はずっと8Mhzで動作しますので、書き込むたびに設定する必要はありません。


※今回はなぜか、Arduino1.0のArduino ISPでなぜかプログラムがうまく書き込めませんでした。それで、ArduinoIDEの「IDE-0023」を起動し、そちらのArduinoISPを書き込んで使いました。書き込んだ後は、Arduino1.0を立ち上げ直して、そちらで作業しました。なにかまだISPに問題があるのかもしれません。

 わかり次第報告します。


※今回使ったスケッチ
#include <SoftwareSerial.h>  // ライブラリの導入

#define rxPin 1
#define txPin 2

SoftwareSerial MS =  SoftwareSerial(rxPin, txPin);
int b=0;

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

void setup() {                
  // initialize the digital pin as an output.
  // Pin 0 has an LED connected on most Arduino boards:
  pinMode(0, OUTPUT);     
  MS.begin(9600);    // スピードを設定
 MS.print("w");
 MS.print(char(0));
 MS.print("z");
 MS.print(char(10));



}

void loop() {
  digitalWrite(0, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(0, LOW);    // set the LED off
  delay(1000);              // wait for a second

if(b<1000){ MS.print("X");}
if(b<100){ MS.print("X");}
if(b<10){ MS.print("X");}
 MS.print(b);
 b++;
if (b>9999){b=0;}
}



(ARDUINO)ARDUINO UNOで、ATtiny85をプログラムする [arduino]

開発環境(IDE)もArduino 1.0となりましたので、これとUNO(R3)を使ってATtiny85を、プログラミングしてみました。
(今回は8MHz動作のテストは行っていません。それについては、後日報告します)

CIMG0178.JPG
 参考にするのは、こちらProgramming an ATtiny w/ Arduino 1.0(http://hlt.media.mit.edu/?p=1695)です。


 では、順番にいきましょう。

1.必要な物(ハードウェア系)
(1)arduino UNO
(2)ATtiny85
(3)ブレッドボードとジャンパワイヤー
(4)抵抗(110Ω~120Ωくらいに出来るもの)、このほかLEDを動作させるための適当な抵抗もあるとOK。
(5)LED1個

 これらを使ってこのように配線します。

ArduinoISPtoATtiny45_85LED.png

 ※ここで忘れてはいけないのは、プラスの5V電源を110~120Ωに通し、それをRESETの端子に接続しておくことです。こうしてリセット機能を無効にしておかないと、Arduino ISPが正しく機能しません。

CIMG0179.JPG

 ※また、参考HPにあるように、10μFのコンデンサをRESET側に+、GND側に-を接続してもリセット端子が無効に出来ます。


ハードウェア系は以上です。

2.必要な物(ソフトウェア系)
(1)統合開発環境IDEの「Arduino1.0」
(2)ATtiny85書き込み用の設定ファイル(https://github.com/damellis/attiny/zipball/Arduino1)
 ここで入手したdamellis-attiny-6bff522.zipを展開し、中身をArduinoのスケッチが保存されているディレクトリの「hardware」フォルダに移動します。
 ※もし「hardware」フォルダがない場合は、新たに作成してください。


3.ATtiny85へのプログラムの書き込み

(1)UNOに「Arduino ISP」のプログラムをインストール。
 IDEを立ち上げて、[File]-[Examples]-[Arduino ISP]と進むと、ISP用のスケッチがどーんと開きますのでこれをUNOに入れてください。
(2)BORDの設定は、ATtiny85のインターナルの1MHz、もしくは8MHzを選択します。なお、今回のやり方では8MHzでは正しく動作しません。ヒューズ・ビットが1MHz動作のままになってしまっているからです。
(3)通信ポートは、UNOと同じポートを選択してください。
 あとは、プログラムの作成をして、UPLOADすればOKです。

 使えるのは、以下のコマンドです。
pinMode()
digitalWrite()
digitalRead()
analogRead()
analogWrite()
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()
SoftwareSerial (has been updated in Arduino 1.0)
※なんと、ソフトウェアシリアルが使えるようですね。
でも、これはヒューズ・ビットを正しく8MHz動作に設定出来たときに使えます。
今はまだ使えません。


 また、相変わらず……
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
 このようなエラーは出ます。でも、このエラーが出ても問題なく書き込まれていますので、ご安心ください。


 参考までに、サンプルとしてブリンクならば以下のようになります。

------------------------------------------------------------------

void setup() {
pinMode(0, OUTPUT);
}

void loop() {
digitalWrite(0, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(0, LOW); // set the LED off
delay(1000); // wait for a second
}

------------------------------------------------------------------

参考までに、ピンの配置は以下の通りです。
ATtiny85.gif


さて、ここまで来て問題なくUPLOAD出来れば手放しで喜べるのですが……どうも、うまくいかない場合があります。

 で、解決策として私がやってみたものは以下の通りです。
(1)UNOのリセットボタンを押してから、アップロードしてみる。
(2)パソコンから、一度UNOのUSBケーブルを外して、つなぎ直してアップロードしてみる。
(3)IDEのArduino1.0を終了し、もう一度起動してから、アップロードしてみる。
(4)ボードの選択をインターナル8Mhz動作に設定していたならば、インターナル1Mhzに設定し直してアップロードしてみる。(※ヒューズ・ビットが正しく設定出来ていないかもしれませんから)
(5)ATtiny85を上から指でブレッドボードに押しつけてアップロードしてみる。
 ※ATtiny85はピンもとても華奢なので、きちんとブレッドボードに刺さっているかを確認してください。(意外にも結構これが原因だったりします)

 これらの対応で、なんとかアップロードが出来ます。

 一度書き込んでOKだったのに、二度目以降が失敗続き、なんてこともあるようです。
 これは、抵抗の値を変えても、抵抗をコンデンサに変えても、変わらないようです。

なお、 近いうちに、8MHz動作について報告する予定です。

XBEE S2Bで失敗、SPARKFUNのシールドで動かない。 [arduino]

 Arduinoでちょっと調子に乗ってしまった私ですが……失敗してしまいました。
 Xbeeのシリーズ1が思いのほか使いやすかったので、シリーズ2のZIGBEEに対応した物に手を出して、さらに、注文時に間違って、プログラマブルを買ってしまったのですが……
 落とし穴がありました……。

 まず購入したのはこれです。
P2012_0116_221414.JPG

XBEE PROのS2BのPCBアンテナ(シリーズ1のチップアンテナモデルに相当するもので、外付けアンテナがいらないタイプ)の、プログラマブル・モデルです。

 で、こんなめんどくさいのプログラム出来るはずがありません。
 開発環境そろえるだけでも、面倒です。
 ちょっとWEBを検索しただけでも、初心者が参考にできるサイトはほとんどなく……まいりました。
 なにせ、プログラムを組み込んでいないと、最初に出てくるのが、メニューです。
 アップロード、バージョン情報の確認、バイパスモード、アプリケーションのバージョン情報の確認とかです。
 とりあえずX-CTUで、ターミナルから半角のBを打ち込んでバイパスモードにして、コーディネーターのAT版とルーターのATコマンド版にしてみます。(パラメーターはとりあえずデフォルトにして、最低限のPANIDと、通信先IDだけを変更しました)
 やっぱり、最初にメニューが出てきます。
 いろいろと調べてみましたが、ATコマンドなどでただのXBEEとして使用する方法はありません。
 とにかく起動したら最初に有無を言わさず「B」の半角英数を一個送信して、バイパスモードにすればよいので、まあ、これくらいならしょうがないかと思っていたら……

 まだ、落とし穴がありました。
 SPARKFUNが出しているXBEEシールド(画像・左)、こいつに組み込むと動作しません。
 電波は受信出来ているようなのですが、肝心のデータが取り出せない感じです。
 で、SPARKFUNのサイトをみたら、案の定、一部のXBEE(シリーズ1のPROの一部、日本ではまだ使用出来ない、見通し通信距離が3キロを越えるとんでもない高出力タイプ)で動かないことが報告されています。なんでも、どこかに配置されているコンデンサが悪さしているとか、していないとか、しかし、解決方法はいまいちはっきりしません。

 念のため、手元にあった純正シールド(画像・右)に差し替えてみたら、あっさりと正常に動作します。

 P2012_0116_221100.JPG

 もう、愕然としました。
 さらに、SPARKFUNの「エクスプローラ5Vマイコン用(SFE-WRL-09132)」を使ってみても正常に動きません。がっくりです。
 「XBeeエクスプローラUSB(SFE-WRL-08687)」の方は問題なく使えるだけに、ショックでした。とりあえず、長距離通信が必要になった時の中継ポイント用として使うことを考えています。

 SPARKFUNを重宝していただけにショックでした(^^;;;;。
(ただ、最近、SPARKFUNの商品でいろいろと痛い目を見ているので、警戒もしています。シリアル接続で使えるJPEGカメラの撮影サイズが変えられなくなっていたり、ノキアのカラー液晶のシールドが、ライブラリーではうまく動作しないので自分で変更する必要があったりします。なんかコワイですね)

 シリーズ2に挑戦してみようかという方がいましたら、気をつけてください!
プログラマブル・モデルは、このシールドでは動きません。
(その後、普通のXBEE PRO S2Bを入手して確認したところ、プログラマブルでなければ問題なく動作します)
 プログラマブル版をSPARKFUNのXBEEシールドで使おうと計画している方がいましたら、ダメです!動きません!

(ロシア語)映画「戦争と平和」 [ロシア語]

 国家事業として当時ソ連で撮影された、「戦争と平和」がNHK・BSプレミアムで放送になります。
 なんでも、ロシア語の先生からも、小説で読むのが大変ならばこの映画を見なさい、とまで言われた小説に忠実な作りの超大作らしいです。ということで実は、私もとても期待している放送です。

 知り合いからの情報で、昨年にNHKがロシアからこの映画のフィルムを国内に持ち込んでハイビジョン放送に向けて準備しているというのを聞いていたのですが、なかなか放送にならずヤキモキしていたのです。
 ただ、残念なことは、デジタルリマスター作業につきものの「デジタル技術での修復作業」が行われなかったそうです。映画界では、修復作業に否定的な人たちもいるので、ロシアからも「(映像の改変につながりかねない)修復作業はまかりならん」と言われてしまったのか……それとも最近の不景気でNHKにそれだけの予算がなかったのか……かなり残念です。NHKなら、アーカイブとかも持っているのだから、デジタル修復も出来ただろうに……

 とはいえ、放送があるのはありがたい!!


 1月30日(月)22:00~第一部
 1月31日(火)22:00~第二部
 2月 1日(水)22:00~第三部
    1日(水)23:22~第四部

 とにかく、長いので、録画の準備を忘れずに!!

(ARDUINO)シリアル接続7セグを拡張しました [arduino]

調子に乗っていろいろやっているうちに、RTCを一つショートさせて壊してしまいました。
で、RTCはよく見ると何個もあったので、ダイオードを普通の整流ダイオードとかに交換して作り直しました。

で、RTCだけではなく、どうでもいい拡張というか、この7セグを使って、アルファベットと簡単な記号を表示できるようにしてみました。


RIMG0075.JPG
電源投入時には、すべてが点灯しLEDに異常がないかを確認しやすくしています。
(なにせ素人の自作なので、いつトラブルが出るかわかりません)
データが送られてくると、これらが消灯し、表示モードに移行します。

RIMG0077.JPG
これがアルファベットのa~h


RIMG0078.JPG
これがアルファベットのi~p

RIMG0079.JPG
これがアルファベットのq~x

RIMG0080.JPG
これがアルファベットのy~z、+、-、*、/、=、最後におまけで*を表示しています。
ちなみに、ピリオドの場合は格桁の小数点を表示させるようにしています。

これを使った「HAPPY! NEW YEAR」と表示させるとこんな感じです。
RIMG0083.JPGRIMG0084.JPG
画像で見ると微妙ですが(^^;実物は意外とかわいいです。
もっとも実際に使う場合には、シリアル接続の液晶キャラクタディスプレイの方が遙かに便利なんですけどね。

でも、シリアルポートでプログラムを転送した時に、この7セグがキラキラとアルファベットを表示すると、なんというか、言葉に表しようのない感情(несказанная эмоция)がわき上がってきます。

 そんなわけで、年末~正月とどっぷりとハマっていたら、突然友人から電話がかかってきて口頭で単語のテストが行われました。
そしたら案の定、さんざんな結果で……これからはまたまたロシア語に本腰をいれます。(^^;;



(ARDUINO)シリアル接続の8桁7セグLEDを作ってみたら…起爆装置みたい [arduino]

 最近またArduinoにハマったりしています。
 特に難しいことを考えずにシリアルの信号線を無線化出来てしまうXBEEのシリーズ1とかを使ったり、シリアル接続で使える7セグLEDとか秋月で売られているセイコーのRTCを空気二重層コンデンサでバックアップ出来るようにしたモジュールを自作していたりしました。

 これがまたちょっとしたきっかけで仕事に役立ったりしているので、まだしばらく個人的なArduinoブームは続きそうです。

【RTCと7セグLEDを使った時計】
RTCから時間を読み出すための時計の部分と、シリアル接続で得られたデータを7セグLEDで表示する部分は、それぞれ別の独立したArduinoのユニットになっています。
早い話、この時計は2つのArduinoで構成されています。

赤色8桁の7セグLEDに時間を表示しています。
RIMG0070.JPG
8桁の7セグをダイナミック点灯させるために、手元にあったトランジスタSA1015を使っています。

緑色4桁の7セグLEDに時間を表示しています。
RIMG0068.JPG
こちらは4桁なので、トランジスタは使わずにプログラムでダイナミック点灯をさせています。消灯させるためには、LEDの特性を利用し逆向きに電気を流しています。赤色7セグと比べるとパーツそのものも省電力ですので、緑色で、環境にも優しい感じです(^^;;;


これは8桁の7セグLEDの配線です。
ポリウレタン線を使ってかなりぐちゃぐちゃになっています。
この7セグLEDは、2年ほど前に在庫処分で格安だったものを手に入れたものでした。
今売られているよりも暗い感じがします……
RIMG0073.JPG
それにしても「ポリウレタン線」って便利ですね。線のまわりは絶縁されているのに、半田付けすると絶縁されていた部分は熱で溶けて電気を通すようになるので配線がとても楽です。それまで配線の太さで取り回しを苦労していたのが嘘のようです。

それと、RTCもこれまた2年くらい前に購入して手元に残っていたヤツで、今回は空気二重層コンデンサを追加した自作モジュールにしました。
実はSPARKFUNのバックアップ電池付きのRTC(BOB-00099)を使ってみたのですが……精度があまりにも悪くて、一日で10秒近く遅れてしまうので、セイコーのRTC-8564NBを使ったクロックモジュールに1F5.5Vの空気二重層コンデンサを追加した自作モジュールを作ったわけです。これだと「誤差? それなに?」みたいな感じで一日で1秒なんかずれないし非常に満足です。
RIMG0074.JPG
 RTCのまわりの配線については、こちらの「なんでも作っちゃう、かも(Arduinoで遊ぼう - リアルタイムクロック)」と、こちら「AVR + RTC-8564モジュール デジタル時計の製作」を参考にさせていただきました。

 注意すべきは、RTCモジュールのジャンパーを半田付けしてモジュール内の抵抗を使うようにしてしまうと、電気をバカ食いするらしいので、外部に別に抵抗を配置することです。そうすれば、一週間くらいは電源が遮断されてもRTCは生きているらしいです。

7セグLEDにつけているカバーはスモークのアクリル板で作りました。
なにせこれをつけないと……とてもアブナイアイテムになります。

RIMG0072.JPG

プラスチック爆弾みたいな「ねんど」の上に置いておいたら間違いなく警察に通報されるでしょう。
そもそも4桁×上下2列になると、なんかとても怪しい!
しかも自作の基板と、空気二重層コンデンサが怪しさに輪をかけています。
さらにカラフルな配線コードは、映画でありがちな爆弾のイメージです。


で、ふと思いつきましたけど、トランクの側面にこんな7セグLEDで時間を表示しているヤツなんか作ったらカッコ良さそう!
(それ持って走っていたら、絶対まわりの人はビックリするだろうし、おまわりさんには職務質問されるだろうけど……(^^;;;)

※回路図やスケッチも公開したいのですが、あまりにもやっつけ仕事で……すいません。

(ロシア語)文章の構成を理解することはとても大切です [ロシア語]

 ロシア語にとって、格は大事です。

 たとえば、ちょっと極端な例ですが……この二つの文章。

(1)Я пошёл в кино, Виктор нет.
(2)Я пошёл в кино, Виктора нет.(※ちょっと無理のある表現です)

 二つの文章の違いは1文字です。
「私は映画に(歩いて)行きました」は同じですがその後はどうでしょう?
辞書を引いてみると、『НЕТ』は「いいえ」、「存在しない・いない」、「前に述べたことの否定」とあります。
 で、これだけ判っているのに、『Виктора』と『Виктор』の役割が判らないと、どう訳していいのか判りません。
(1)Я пошёл в кино, Виктор нет.
           「Виктор=主格」
 訳:私は映画に行きました、ビクトルはそうではありません。

(2)Я пошёл в кино, Виктора нет.
           「Виктора=生格」
 訳:私は映画に行きました、ビクトルはいませんでした。

 このような違いが出てきます。
 単語の並んでいる順番は同じなのに、一文字が違うだけで、こんなにも変わってしまいます。
 むしろ(2)の文章は、Я пошёл в кино, нет Виктора.とした方が理解しやすいかもしれません。

 ただ、ロシア語の怖さは、とても微妙なニュアンスをこの小さな格や語順、場合によっては「,」などで表していることがあるので、それらをきちんと理解するのがとても難しいんです。


 ニュアンスの話が出てきたので、ちょっとニュアンス繋がりで別の話をします。
(3)Я открыл сумку моего учебника нет.
(4)Я открыл сумку, моего учебника нет.
 この二つの文章にも、ニュアンスの違いがあります。

Я открыл сумку моего учебника нет.
 私が鞄を開けたら私の教科書はなかった。
(淡々とした状況説明)
Я открыл сумку, моего учебника нет.
 私が鞄を開けたら、「なんと!」私の教科書はなかった。
(鞄を開けたら、『一瞬間があって』「あっ! やばい、ないよ!」って愕然とした感じ)

 これは非常に詳しく説明しはじめると、いろいろと難しい事柄だそうです。

 それと先生曰く、日本人のロシア語には……

「日本人は、日本人が理解しやすいようにしたロシア語の文法で勉強するのが一般的ですが、その中には誤解している部分もあり、日本人のロシア語が不自然な原因になっている」
 ……そうです。
(先生自身は、そういう日本人のロシア語と接しているうちに「日本人の感覚が導き出した、面白い表現だ」と感じるようになり、ここ最近、日本で教えられているロシア語の文法にとても興味が出てきている、そうです)

 まぁ、そんな訳で、格がなんなのかをきちんと理解するこが、文章の構成を理解するための第一歩だといえます。

 私自信、格についての理解が深まってみると、それまでとても難儀していた文章が、以外にもさらっと理解できることに驚いたりしています。

 まぁ、それと私が英語でつまずいていた原因が……文法もさることながら、特に「文章の構成をきちんと理解できていない」ということに問題があるというのが判りました。
 単語一つ一つは判ったとしても、それらがどのように結びついているのか、ということに余りに無頓着で、単語を並び替えて日本語にしてみる、まるでパズルゲームのようなことしかしていなかった、というのが判ります。

 私の友人には「ロシア語を勉強する前には、英語をある程度勉強した方が良い」と言う人もいますが、私のように「文章の構成を理解せずに、力業で日本語に直す」人の場合は、最初からロシア語をきちんと勉強した方が間違いなく早く身につくと思います。

(ロシア語)長い文章が難しい、概念で文章がつながる場合がある [ロシア語]

ロシア語の場合、文章の構成が非常に難しいです。

一つの文章の中に、二つ以上の主語や述語が入ってくると特に複雑になります。

簡単なレベルならこのようなものがあります。
(1)Лена любит сыр, а Анна любит колбасу.
   ――レーナはチーズが大好きです。(一方で) アンナはソーセージが大好きです。
この場合、","の前と後ろで文章を二つに分けても、それぞれの文章は独立して意味が通じます。


(2)Я съел яблоко, мама помидор.
   ――私はリンゴを食べました、ママはトマトです。(ママはトマトを食べました)
単語を辞書で調べれば、力技を使って意味が通じてしまう文章です。
単語が少ないので、文章の構成を考えるよりも、辞書で引いた単語を日本語に通じるように並べ替える方が労力が少なくてすみます。
でも、よくよく文章を見てみると、前の文章と、後ろの文章の関係が(1)の場合と違って動詞が存在していないのが判ります。
後ろの文章は、前の文章の影響を受けているので、もし、前の文章が「私はリンゴが嫌いです」だったりすると、その影響を受けて意味が変わってしまいます。
明らかに(1)とは、文章の構成が違うことが判ります。


(3)Виктор много плавал, загорал, и ходил в горы.
(ходил в горы=山に行く、慣用的な表現)
   ――ビクトルは、たくさん泳ぎ、日焼けして、そして山にも入りました(山に登りました)
ひとつの文章の中に主語は一つですが、動詞は複数あります。

(4)Весной тепло, хорошая погода и можно гулять в парке.
   ――春は暖かく、天気も良くて、公園を散歩できる。
日本語訳は難しくないですが、文章はかなりややこしくなっています。
副詞、名詞、動詞が一つの「春(時期)」という主語と関係していますが、暖かいという副詞と公園を散歩できる、という二つ間での互いの関係は薄くなっています。

 また「春は暖かい」という文章と「良い天気で公園が散歩できる」という文章は独立しているけど、二つは「季節」という関係で一つの文章に結びつけられて、意味を持っている。とも考えられます。
 実はこのパターン、ロシア語の文章によくあるパターンだそうです。

 日本語にしてしまうと一つの文章として独立して結びつけられない場合でも、ロシア語では文章が表現している「共通点(概念)」で一つの文章としてまとめられるそうです。

 このことはロシア語の文章構成のパターンをつかむことは読み解く上でとても大切なので、きちんとした理解が必要になるそうです。

特に「И」で結ばれる文章は危険らしいです。とっても難しいみたい…

(ARDUINO自作)ARDUINO ISPで、ATtiny85をプログラムする [arduino]

 ArduinoをArduino ISPを使って簡単に自作出来るようになりました。

 実は、この環境、ちょっとした追加でATtiny45やATtiny85に対応させることが出来ます。
(参考にしたのはこちらです「High-Low Tech – Programming an ATtiny w/ Arduino」)


■必要なもの
※今回は168Pにブートローダが書き込める環境に、追加するものだけを説明します。

(1)ATtiny45、ATtiny85に対応するための設定ファイル
 参考URLの中段にある、「Download: attiny45_85.zip」で入手出来ます。
 これだけです。


■環境を構築
(1)attiny45_85.zipを解凍します。
 ※解凍すると以下の二つのフォルダが出てきます。
  (a):__MACOSX
  (b):attiny45_85
 実際に必要なものは、(b)の「attiny45_85」だけです。
 ※これにはArduino ISPで作成したプログラムを、ATtiny45やATtiny85に転送するための各種ファイルが含まれています。
(2)出てきた「attiny45_85」をArduinoのスケッチフォルダ(自分の作ったスケッチが保存されるフォルダ)の中にある「hardware」に移動します。(このフォルダは前回のArduino自作のためにすでに作ってあるはずです)
 これで完了です!
 (なお(a)はMACのOS用のファイルなので、Arduinoには関係ありません)

■配線
 ArduinoとATtinyを、下の図のように配線してください。
ArduinoISPtoATtiny45_85LED.png
※ただし、ここの配線図にも載っていないのですが、オートリセット機能を無効にするため、5Vの電源を110Ω~124Ωの抵抗に通したのをRESET端子に通してください。
 これがないとまったく書き込めません。
 とりあえずこんな感じになります。
CIMG0157.JPG


■スケッチの作成
ピンの配置は以下の通りです。
ATtiny85.gif

 使えるコマンドなどはさすがにピンが少ないので以下のものに限られてしまいます。
pinMode()
digitalWrite()
digitalRead()
analogRead()
analogWrite()
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()
 これらを使ってスケッチを作成しましょう。

■動作テスト
 せっかくブレッドボードにLEDも配置しましたので、テストをしましょう。
 スケッチのブリンクを13番ピンではなく、0番ピンに変更します。
------------------------------------------------------------------

void setup() {
pinMode(0, OUTPUT);
}

void loop() {
digitalWrite(0, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(0, LOW); // set the LED off
delay(1000); // wait for a second
}

------------------------------------------------------------------

■<注意>
(1)COMポートはArduino ISPのポート番号に設定してください。
(2)ボードの選択を「ATtiny45 (w/ Arduino as ISP)」や「ATtiny85 (w/ Arduino as ISP)」に使うチップに応じて変更します。これでないと、Arduino ISP経由でコンパイルしたスケッチを転送できません。

※転送時に以下のようなエラーメッセージが出ますが問題なく転送されています。気にしないでください。
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85


■完成
うまくいけば、ATtinyがきちんと動作するはずです。
CIMG0158.JPG

■ATtiny85は「スイッチサイエンス」でも購入することが出来ます。


前の10件 | -
メッセージを送る