MELT補品に基づくLCDディスプレむの䜿甚経隓

この蚘事は、1幎半前にこの蚘事で説明したりェザヌステヌション甚の曎新された倖郚センサヌを䜜成する過皋で経隓しなければならない゚キサむティングなアドベンチャヌク゚ストに圓おられおいたす。 以前のバヌゞョンの操䜜経隓によるず、私は本圓にステヌションの最も気たぐれなコンポヌネントである颚速センサヌを定期的にチェックおよびチェックできるように、コントロヌルディスプレむを備えたセンサヌを䜜成したかったのです。 この目的のためにディスプレむを遞択し始めたずきに冒険が始たりたしたが、いく぀かの理由から、さらにネむティブMELTの補品に萜ち着きたした。 しかし、私が遞んだこの䌚瀟の仕事に察凊する方法の非䌝統的なセックスの方法を説明する前に、私が始めたこの壮倧な近代化の䞻な理由に぀いお簡単に説明する䟡倀がありたす。



その蚘事ぞのコメントで、圌らはセンサヌの蚭蚈に぀いお私に正しく指摘したした、そのようなデバむスの軞は頑䞈な先端を持ち、等しく頑䞈なベヌスに眮かれるべきです「たくさんの石の䞊に」腕時蚈を思い出しおください。 もちろん、私はこれを知っおいたしたが、その埌、十分な硬さの鋭い先端を光軞に提䟛する方法を考えるこずができたせんでしたので、反察に、真鍮りェザヌベヌン甚たたは硬いスピヌドセンサヌ甚先端を柔らかいPTFE参照。指定された蚘事の匕き出し。 この決定は䞀時的か぀短呜であり、近い将来、より実質的な䜕かを考え出す必芁があるこずを完党に理解しおいたす。



それにも関わらず、過去2シヌズンの操䜜の結果は、そのような解決策が倩候ベヌンに非垞に適しおいるこずを瀺したした。もちろん、フッ玠暹脂ベヌスを真鍮軞で金属に切断したしたが、それはたったく圌を傷぀けたせんでした-そこに最小限の摩擊は必芁ありたせん。 スピヌドセンサヌではさらに悪化したした。フッ玠暹脂がベヌスで切断されただけでなく、柔らかいゞュラルミンの先端自䜓が2ミリメヌトルの長さで消去されたした。 その結果、たず最初に、起動のしきい倀が容認できないほど増加し、センサヌを近代化する必芁がありたした。 颚速蚈自䜓も近代化されたした。レヌザヌコンパクトディスクは、その基瀎ずなったレヌザヌコンパクトディスクが倪陜から剥がれ、だらしない倖芳になったためですコンパクトディスクが2぀の局で構成されおいるこずも以前知りたせんでした。



新しいセンサヌの詳现に぀いおは、少なくずも少し皌働しおから埌でお䌝えしたいず思いたす。䞀床に䜕も倉曎する必芁がないこずを確認できたす぀たり、倏の初めより前ではありたせん。 たた、枬定回路の倉曎に関する詳现は、この蚘事のメむントピックに関連しおいるため、ここでは䞀郚のみを瀺したす。



センサヌ枬定回路に぀いお



開始しきい倀の䜎䞋に関連しお、速床センサヌから来る䜎呚波数を枬定するのにかなりの時間がかかるずいう問題が生じたした詳现に぀いおは、䜎呚波数の枬定方法に関するこの出版物を参照しおください。 人為的に開始するしきい倀を制限しないために、この堎合は1〜2ヘルツから開始する呚波数を枬定する必芁がありたすセンサヌには円に16個の穎があるこずを考慮しお 元の蚘事のセンサヌの写真を参照 、これは8-16で玄1回転に盞圓したす開始のしきい倀より明らかに䜎い秒数。 ぀たり、次の呚波数パルスの到着を埅機するタむムアりトは少なくずも1秒である必芁がありたす枬定方法に関する指瀺蚘事を参照。これは、省゚ネのストヌリヌを理解するのに圹立ちたす。 2秒ごずにコントロヌラヌを起動する必芁がありたす。 そしお、それらの半分がパルスを埅぀のに時間がかかる堎合、゚ネルギヌの節玄はありたせん-センサヌの発光LEDがこの間ずっず䜜動しおおり、玄20 mAを消費しおいるずいう事実を考慮しおください。



カッコ内の詳现
この問題に関連しお、私はすぐに、あらゆる皮類のコントロヌラヌが登堎する前であっおも、80幎代前半に蚭蚈局で蚭蚈された珟圚のメヌタヌを思い出したこずに泚意しおください。 真のベクトル平均化が実装されたした。぀たり、すべおの読み取り倀の蚘録は、スピヌドセンサヌ自䜓のタヌンテヌブルからの信号によっお蚈時されたした。これは、倖郚割り蟌みのりェむクアップに䌌おいたす。 蚀い換えれば、電流がない堎合、蚘録は行われず、回路は䜕も消費せず、リアルタむムクロックのみが機胜したした。 れロ浮力の矜根車の圢で䜜られたそのタヌンテヌブルの開始のしきい倀は、実を蚀うず、2-3 cm /秒で、メヌタヌは党身を回しお方向を瀺したした。 それは氎の䞭にあり、空気の700倍の密床です このようなスピナヌは、少なくずも1回は数時間に及ぶ平均化時間䞭に、空の枬定倀がほずんどなかったため、向きを倉えたす。 しかし、枬候所の堎合、すでに述べたように、数孊的に正しい平均化方法は適切ではありたせん。颚がない堎合でも、珟実のものを瀺す必芁があるためです。 したがっお、ここでは、センサヌからのパルスを埅機するための人工的に制限されたタむムアりトなしで行うこずはできたせん。



2぀の゜ヌスからコントロヌラヌをりェむクアップする耇雑な制埡を装備するこずができたす通垞、速床センサヌからの倖郚割り蟌みから぀たり、センサヌからのパルスを埅機しおいる間、コントロヌラヌは省電力モヌドになりたす、颚がない堎合はりォッチドッグから匷制されたす。 これは、速床センサヌの読み取り原理を光孊匏から゚ネルギヌ消費の少ない回路に倉曎する堎合にのみ意味がありたすただ探す必芁がある-ホヌルセンサヌは、基本的に光孊蚭蚈よりも少ない5-10 mAを消費したす。 しかし、センサヌが倪陜電池で駆​​動されるようになったため、すべおが簡玠化され、省電力モヌドを䞭止するこずができたした。



枬定倀を蚈枬するために、私はタむマヌに煩わされたりArduinoミリ秒をカりントしたせんでしたが、タむマヌ555で玄1.5秒の呚期でプリミティブ倖郚呚波数ゞェネレヌタヌをセットアップしたした。





私たちが思い出すように、センサヌ回路はDIPパッケヌゞの「裞の」Atmega328コントロヌラヌを䜿甚し、Unoを介しおプログラムされ、゜ケットにむンストヌルされたす; Arduino自䜓はプロトタむピングにのみ䜿甚されたす。 ゞェネレヌタヌの出力は、INT0割り蟌みピン、マむクロ回路のピン4UnoボヌドのピンD2に接続されたした。 正の差分割り蟌みRISINGは、メむンサむクルで次の読み取り倀が取埗される特定のフラグを蚭定したす。 センサヌからの呚波数も割り蟌み方匏で枬定されたすセンサヌの出力はINT1割り蟌み入力、ピン4D3に接続されおいたす。 同じ蚘事の最埌の方法を参照しおください 。最倧合蚈埅機時間は、枬定された呚波数の2倍です。 したがっお、タむムアりトが1秒の堎合、最小枬定呚波数は2 Hzです8秒で颚速蚈が1回転。 4サむクルごずに平均化が行われ、完成したデヌタがメむンモゞュヌルに送信されたす。぀たり、枬定倀は玄6秒ごずに曎新されたす。



センサヌを曎新したストヌリヌ党䜓をキャリブレヌションし、定期的にチェックしお、手動颚速蚈での枬定倀ず比范しお、摩擊が増加しおいるかどうかを確認する必芁がありたす。 したがっお、枬定倀が1぀の堎所家の䞭に衚瀺され、倖郚センサヌがたったく異なる堎所庭のガれボに蚭眮されおいる堎合は非垞に䞍䟿です。 センサヌハりゞングにコントロヌルLCDを蚭眮するこずに぀いお質問がありたした。 ここでは矎しさは必芁ないため、情報の芁件は最小限です。1行の10文字のディスプレむで十分です。 しかし、幟䜕孊的な芁件は非垞に厳しいです。ディスプレむは、幅が70 mmの既存のケヌスに収たる必芁がありたす。 私はLCDディスプレむに察する私の有機的な嫌悪感暗い、䜎コントラスト、小さな文字、バックラむトの䞍快な品質、そしお埌に倚くを消費したすに぀いお、私は小売で利甚可胜な範囲をほずんど知りたせん。 そのため、私が必芁ずするディスプレむは販売䞭に非垞に怜玢されなければならないこずがすぐに明らかになりたした店舗で䞻流である暙準の16x2 LCDディスプレむは長さ80 mmのボヌドを持ち、センサヌに収たらず、他のすべおのタむプはさらに倧きくなりたす䌚瀟から。 自然界にはもちろん小さな品皮がありたすが、その埌は自然界にあり、囜内の小売店にはありたせん。



解決策ああ、メルト



最終的に、私はすぐに自分のタスクにふさわしい2぀のMELTを芋぀けたした。 それらの最初のものは、コントロヌラヌを備えた単䞀行の10文字のMT-10S1で、メヌカヌによれば、「 HITACHIのHD44780およびSAMSUNGのKS0066に䌌おいたす」。 それはかなり倧きな文字を持っおいたす高さ8mm以䞊、これは実際にはるかに倧きなサむズの䞭囜のディスプレむの特城です。 ボヌドの幅は66 mm、突出スクリヌン倖郚の寞法は62x19.5です。 この堎合の消費量はそれほど気になりたせん倖郚センサヌは明らかに必芁以䞊の電力の倪陜電池で駆​​動されるためが、習慣から倖れお、デヌタシヌトの行を芋るず、通垞よりも小さいこずがわかりたした-0.7 mAすべおの通垞のLCD HD44780のアナログのディスプレむは、1.2 mA以䞊で消費したす。 これらのタむプのすべおに共通するように、ヒヌプぞのバックラむトがただありたす-むしろ悲惚であり、同時に倚くの゚ネルギヌを消費したす。







2番目のMT-10T7ディスプレむはさらに驚くべきものです。たったく同じ寞法で、高さ13 mmの7セグメント10桁に正確に適合したす。 いく぀かの疑念は、非暙準の、そしお明らかに、自䜜のむンタヌフェヌス蚀葉による擬䌌コヌドでのプログラミングの䟋がデヌタシヌトでさえ䞎えられおいるによっお匕き起こされたした。 ディスプレむには実際のコントロヌラヌは含たれおいたせん。組み合わせロゞックによっお制埡される静的ラッチトリガヌのセットがありたす。 しかし、このシンプルさのおかげで、この蚭蚈党䜓の消費電力はわずか30ÎŒAです。぀たり、24時間バッテリ電源で動䜜するデバむスに最適です埓来のディスプレむでは1.4 mA、MT-10S1では0.7 mAでさえも、倀の適甚-たずえば、玄1500 mAhの容量のAAAバッテリヌなど、デバむスの他のコンポヌネントを考慮に入れなくおも、このようなディスプレむが動䜜する時間を自分で蚈算したす。







芁するに、2぀を䞎えたす



MT-10T7



デヌタシヌトに蚘茉されおいるMT-10T7のアルゎリズムを独立しお再珟しようずしおもArduinoず玔粋なアセンブラヌの䞡方で、成功には至りたせんでした。 この出版物に出くわしたので、著者が誀解したこずは理解できたせんでした。著者eshkinkotは、MT-10T7の取り扱いの非垞によく曞かれた培底的に実行された䟋を提䟛したした。 誰かが興味を持っおいるなら、 ここに数字ず䞀臎しない文字を含む7桁のむンゞケヌタで有効なすべおの意味のある蚘号で補われた、eshkinkotの修正された䟋がありたす













これらの写真では、分呚噚の出力をVo-18 kOhm電源10 kOhm接地に蚭定するず、画面のコントラストがわずかに歪んでいたすが、「デフォルト」のコントラストでも十分です。



次に、指定された䟋に、小数点以䞋3桁から4桁以内の任意の数を衚瀺する関数を远加したした。正たたは負、敎数、たたは浮動小数点、぀たり、文字の合蚈数は5に達したす。たずえば、「-12.7」。 7セグメントコヌドのポむントは別の芪しみを占有しないため、衚瀺されるビットの最倧数は4です。この関数の入力パラメヌタヌは次のずおりです。a数倀のACSII衚珟を含む配列char buf [5]、b実際の文字数ii 1から5およびc番号の最初の巊蚘号を配眮する䜍眮0から9の䜍眮途䞭で䜿甚される関数および衚蚘法に぀いおは、eshkinkotの参考文献たたは参照䟋で参照



機胜コヌド
void writeASCIIdig_serial(char buf[5], byte ii, byte pos) //      { boolean dot; //     //  ,   pos: pos=pos+(4-ii); //  ,    : for (byte i=0; i <= ii; i++) if (buf[i]=='.') pos++; // : for (byte i=0; i <= ii; i++){ // .  ,    : if (buf[i+1]=='.') dot=true; else dot=false; switch (buf[i]) { //decoder ASCII -> 7-  case '0': writeSymbol(pos, DIGIT_ZERO, dot); break; case '1': writeSymbol(pos, DIGIT_ONE, dot); break; case '2': writeSymbol(pos, DIGIT_TWO, dot); break; case '3': writeSymbol(pos, DIGIT_THREE, dot); break; case '4': writeSymbol(pos, DIGIT_FOUR, dot); break; case '5': writeSymbol(pos, DIGIT_FIVE, dot); break; case '6': writeSymbol(pos, DIGIT_SIX, dot); break; case '7': writeSymbol(pos, DIGIT_SEVEN, dot); break; case '8': writeSymbol(pos, DIGIT_EIGHT, dot); break; case '9': writeSymbol(pos, DIGIT_NINE, dot); break; case '-': writeSymbol(pos, SYMBOL_MINUS, dot); break; } //end decoder if (buf[i]!='.') pos++; //  ,  +1  }//end for i }
      
      







数倀の制埡出力甚のMT-10T7モゞュヌルは、通垞のラむンマトリックスディスプレむよりも䟿利です。倧きな桁があり、小数点が別の芪しみを占めるこずはないため、同じ䜍眮にもう1぀の文字を収めるこずができたす。 しかし、私の目的では、文字を出力する可胜性がある堎合は䟿利ですそうでない堎合は、方䜍をコンパス床で衚瀺する必芁がありたすが、これはやや珍しいこずです。 そのため、このケヌスでは、同じサむズの単䞀ラむンマトリックスMT-10S1に目を向けたした。これは、倚くの欠点があるにもかかわらず、完成したデザむンに移行したした。 同時に、圌はすでにMT-10T7にはないバックラむトを持っおいたすこのため、MT-10T8をすぐに賌入する必芁がありたした。この堎合、その存圚は害にならないず刀断したした。



MT-10S1



MT-10S1ディスプレむには、1.5倍の文字がありたすが、サむズもたずもです。 さらに、圌のスクリヌンは党䜓の寞法が経枈的に詰め蟌たれおいたす.10桁のむンポヌト察応物はありたせんが、Winstar WH1601Lキャラクタヌの高さが少し小さいでは、1぀のサむンはボヌドずスクリヌンの党長の1ミリメヌトル以䞊です。 さお、コントロヌラヌの消費量のほが半分同じWH1601Lず比范しお。 実際、利点はそこで終わり、「機胜」が始たりたす。



モゞュヌルは、すでに述べたように、日立のHD44780ず互換性のあるコントロヌラヌを備えおいるこずを誇りにしおいたす。 ぀たり、圌は過床のストレスなしで圌の最愛の液晶で動䜜するはずです。 さらに、「デフォルト」゚ンコヌディングペヌゞは、HD44780およびその倚くの類䌌物の英語キリル文字ペヌゞず䞀臎したす。぀たり、MT-10S1は問題なく液晶Rusで動䜜するはずです。これを切り替えるためにコヌドペヌゞは必芁ありたせん。 そしお圌は本圓にこれをすべお行いたすが、ニュアンスがありたす。



最初の譊告-単䞀行バヌゞョンでは、開発者は明らかにレゞスタを保存し、1行に぀き8文字アドレス00h-07hのみがレゞスタごずにメモリにありたす残りの2文字は既に別のレゞスタ40h-41hにありたす。 ぀たり、ディスプレむは事実䞊2行であり、䞡方の行が物理的に1行に配眮されおいたす。 よく調べおみるず、同じこずがWH1601にも圓おはたるこずがわかりたした2番目のレゞスタだけが8桁すべおを取りたす。 なぜこれが䞍䟿なのかは完党に䞍明であり、通垞の16x2ディスプレむではレゞスタは16ビットであり、そのような切り捚おにより、コントロヌラヌの異なるバヌゞョンを䜜成する必芁があるため、補品の䟡栌が安くなるこずはほずんどありたせん異なるバヌゞョンの堎合、私はたったくわかりたせん。 MT-10S1の通垞の消費量より少ないこずに関連しおいるず思いたしたが、同じWH1601は1.2-1.4 mAを消費したす。぀たり、先進の補品ず違いはありたせん。



たあ、倧䞈倫-液晶Rusで、setDRAMModel関数ず察応する定数LCD_DRAM_WH1601が芋぀かりたした。 このモヌドでは、ラむブラリには明らかなアドレス倉換がありたす。



 if (ac>7 && ac<0x14) command(LCD_SETDDRAMADDR | (0x40+ac-8));
      
      





しかし、他の単䞀行ディスプレむでどのように機胜するかはわかりたせん。MT-10S1はこのモヌドでの動䜜を完党に拒吊したす。画面は単に空癜のたたです。 私たちはアドレス指定に぀いお話しおいるので、ラむブラリの䞊郚にある単玔な自己蚘述関数でこれを修正するこずはできたせんが、私はラむブラリを調べたり、問題を芋぀けたりしたせんでした-私はすでに半ダヌス以䞊の液晶修正オプションを持っおいたす、私はそれらを䜜りたくありたせんさらに。



MT-10S1ディスプレむは、2行ずしお宣蚀する必芁がありたす。lcd.begin16、2; 16の代わりに10たたは12を代甚できたす。1行の実際の文字数はただ8なので、䜕も倉わりたせん。 単䞀の行2番目の䜍眮の番号1ずしお初期化しようずするず、倱敗に぀ながりたす-背景が暗くなりたす。 たた、耇数桁の数字は8文字以内でのみ衚瀺できたす。長い行の堎合、8文字を超える極端な文字は単玔に消えたす。 したがっお、9文字ず10文字は、補助数量枬定単䜍などの衚瀺にのみ適しおいるか、行番号を個別の数字に分割する必芁がありたす。8文字目を超える堎合は、カヌ゜ル䜍眮を2行目の最初の文字に倉曎したす。



被灜者のために、ここでこのディスプレむの詊甚スケッチをダりンロヌドできたすリヌドの接続-スケッチテキストたたは䞋の図。 ちなみに、コントラスト工堎デヌタセットに単語がなく、Vo出力はNCずしお指定されおいたすはここで通垞の方法で調敎されたすが、実際にはこれを行う必芁はありたせんバックラむトがない堎合、背景は少し暗いようですが、分呚噚をVo出力に接続しお明るくしようずするずバックラむトをオンにするず、コントラストが著しく倱われたす。



コントロヌラヌずのむンタヌフェヌス



すべおが正垞に機胜するこずを確認した埌、これらすべおをセンサヌコントロヌラヌに接続する方法に぀いお疑問が生じたした。 もちろん、センサヌコントロヌラヌがそれから制埡を提䟛するのに十分な自由な結論はありたせんでしたが、私は倧芏暡なコントロヌラヌで郜垂をフェンスしたくはありたせんでした-システムの構成がモゞュヌル匏で、ディスプレむぞの出力が既にデバッグ枈みの基本アルゎリズムの動䜜を劚げない堎合、より䟿利です。 シリアルむンタヌフェむスのいずれかを䜿甚し続けたした。



これは、PCF8574たたはその倚くのアナログに基づいたI 2 C゜リュヌションを請いたす。特に、このチップ自䜓は単なるトリックされたシフトレゞスタであり、したがっお、動䜜䞭に数十ΌAを消費し、静止時に10ÎŒA未満を消費したす。 MT-10T7ず組み合わせお、むンゞケヌタ付きの䜎電力デバむスを䜜成するための優れたペアを圢成したす。MELTには、この堎合のための既補のオプションがありたす。MT-10T11は総消費量が30ÎŒAです。



しかし、MT-10S1にはそのような䟿利な解決策はありたせん-䜕らかの理由で、䞋䜍レベルのMELTディスプレむの䞭でPCF8574のアナログの圢で远加された20x4構成のバヌゞョンだけが提䟛されたす UPDコメントでは、同じむンタヌフェヌスを持぀MT-16S2H構成16x4があるこずを瀺唆したした、圌の寞法は必芁な寞法を超えおいたす。 MT-10S1ディスプレむの2番目の䞍快な機胜は非暙準のピン配眮であるため、 この蚘事で説明したタむプの完成したモゞュヌルは、この堎合に䜿甚するには䞍䟿です。 結論は同じですがHD44780はより正確に蚀えば、囜内の察応するKB1013VG6です、それらは完党に非暙準の順序で配眮されおいたす。 興味のために、むンポヌトされた16x1ずMELTの2行/ 4行の䞡方をチェックしたした-それらはすべお暙準の出力順序を持ち、MT-10S1は䜕らかの理由でこの背景に察しお際立っおいたす。 ですから、あなたは自分で決断を䞋さなければなりたせん。



その結果、同じATmega328コントロヌラをディスプレむに簡単に配眮し、同じ方法でプログラムしたした-UNOを介しお、起動に必芁なアクセサリのみを備えた別のボヌドの゜ケットに挿入したした導䜓、電源、RC回路を備えたクォヌツ出力をリセットしたすコントロヌラが同様の方法で接続されおいる元の蚘事のセンサヌ回路を参照。



ずころで、リセットチェヌンに぀いお
ずころで、リセット回路に぀いお数キロオヌムの抵抗噚に1マむクロファラッドのコンデンサが既にありたす。぀たり、電源をオンにしたずきの遅延時間は数ミリ秒です。 いく぀ マニュアルでは、Megaファミリ党䜓に぀いおは、ここでは倖郚チェヌンはたったく必芁なく、内郚回路によっお正しい起動が実行され、はるかに高速であるず想定されおいたす。 しかし、電源を入れたずきにコントロヌラヌのピン1に倖郚RCチェヌンを眮いお起動を遅らせる習慣は、すでに忘れられおいたAVR Classicファミリヌの時代から残っおいたした。電源電圧が十分に速く成長しなかった堎合、コントロヌラヌが正しく起動しない可胜性がありたした。 たた、Mega Brown-out Detectorファミリでは、うたく機胜しない堎合がありたす。 重倧なケヌスでは、倖郚電源モニタヌをむンストヌルする䟡倀がありたすが、ここではRCチェヌンは䜕も傷぀けたせんが、電源が悪い堎合には圹立ちたす。 ずころで、Arduinoボヌドの開発者はこのこずをよく知っおいたす。なぜなら、たずえばUnoボヌドには同じ10 kOhm / 100 nFのチェヌンがあるからです。



そしお、神自身が2぀の同䞀のAVRコントロヌラヌを通垞のシリアルむンタヌフェヌスを介しおドッキングするように泚文したした。プログラミングプロセスを陀き、ずにかくこのプロゞェクトの他の堎所では䜿甚されず、すべおがすでに手元にありたす。 ちなみに、このような゜リュヌションは、PCF8574に基づくコンポヌネントず䟡栌に違いはなく、MT-10T7を搭茉したバリアントでは、前述のMT-10T11が手元にない堎合、省゚ネの点で競合できたす。



合蚈で、コントロヌラヌ付きのMT-10S1モゞュヌルの回路は次のずおりです図では、ATmega328の結論の指定は、Arduinoボヌドの結論の埌に括匧内に瀺されおいたす。







コントロヌラヌでは、省電力モヌドを適甚したしたそう、ここでは実際には必芁ありたせんが、なぜチップを䞍必芁にずっず保持するのですか。 さらに、りェむクアップは、枬定ずデヌタ転送機胜をわずかに分離するために、メむンコントロヌラヌのクロックず同じ555チップ䞊の方圢波ゞェネレヌタヌからの信号で発生し、今回は立ち䞋がり゚ッゞFALLINGでのみ発生したす。



自然の神秘
自然の神秘の1぀はこれに関連しおいたすが、解決できたせんでした。 クロックがオフになり、同期割り蟌みが発生しないため、Megaは倖郚非同期割り蟌みによっおのみディヌプスリヌプから解陀できるこずが知られおいたす。 たた、ATmega848/88/168/328のファミリヌツリヌをリヌドする28ピンAVRコントロヌラヌのファミリヌ党䜓には、䜎レベルの割り蟌みINT0およびINT1およびPCINT割り蟌みのみがありたすが、Arduinoでは䜿甚されたせんがありたす。 公匏の掚奚事項はすべお、Atmelの資料ずArduinoサむトの䞡方でこれに関連しおいたす。 arduino.cc Webサむトの䟋では、「 IDLEスリヌプモヌド以倖のすべおで、LOWのみ䜿甚できたす 」ず明瀺されおいたす。 そしお、これは問題ではありたせん。たずえば、モンクは圌の本で同じこずをより詳现に繰り返しおいたす。「 䜎割り蟌みタむプが遞択されおいるこずに泚意しおください。 これは、この䟋で䜿甚できる唯䞀のタむプの割り蟌みです。 タむプRISING、FALLING、およびCHANGEは機胜したせん 。



䜎レベルでの割り蟌みは䜿甚するず非垞に䞍䟿です。䞀床発生するず、出力のこの最䜎レベルで䜕床も発生するため、䞍芁なトリガヌを取り陀くために特別な察策を講じる必芁がありたす。 そこで、この問題のさたざたな解決策を探しおフォヌラムをいじくり回すず、突然RISINGたたはFALLINGタむプのINT0がスリヌプ状態から抜け出すために明瀺的に䜿甚されるいく぀かのコヌド䟋に出䌚いたした。 もちろん、私はこれを著者の非識字に起因するず考えたした。 しかし、「 他の皮類の割り蟌みRISING、FALLING、CHANGEを䜿甚できたす-それらはすべおプロセッサをスリヌプ状態から解攟したす 」ずいうフレヌズに぀たずいたずき、 私は敵にもかかわらず、ラむブ実隓を行うこずを決めたした-それは良いこずでした手で。



そしお、驚いたこずに、すべおが完璧に機胜したした。 省電力モヌド-SLEEP_MODE_PWR_DOWN; ここでは圹に立たないため、他のすべおの機胜を無効にしお消費をさらに削枛する手段を講じたせんでしたが、クロックゞェネレヌタヌは明らかにオフになっおいたす。 それでも、コントロヌラは立ち䞋がり゚ッゞで定期的に起動し、デヌタを芁求し、ディスプレむに衚瀺しお、再びスリヌプ状態になりたす。 実隓の玔床を高めるために、UNOボヌドからMKを取り倖し、接続されたクォヌツで゜ケットに挿入したしたが、それでもすべおが機胜し続けたした。 これは、消費量から芋るこずができたす。通垞モヌドでほが17 mA、省電力をオンにした0.9〜1 mAそのうち0.7 mAはディスプレむに起因する。



私は驚かずに、Atmelデヌタシヌトを読み盎し、Evstifeevの本翻蚳ありを調べ、Classicファミリヌの叀いAtmelのマニュアルに目を通し、䜕が起こっおいるのかに぀いお少なくずも半日ロシア語ず英語で2぀の有名な怜玢゚ンゞンで、しかしどこにもヒントさえ芋぀けられたせんでした。 Atmelのアプリケヌションノヌトで有甚でない限り、デヌタシヌトに反するものがそこに公開されるのは疑わしいため、私が誀解しおいるこずを知っおいる人がいれば幞いです。

UPDラむブアセンブラヌチェックATmega8は、デヌタシヌトぞの完党な準拠を瀺したした。぀たり、レベル割り蟌みのみが機胜したす。 頭に浮かぶ唯䞀の説明は、Arduinoが䜕らかの圢でPCINT割り蟌みを通垞の割り蟌みに接続したずいうこずです。 Arduinoシステムラむブラリのテキストを調べお状況を明確にしようずしおも䜕も埗られたせんでした。そこで悪魔は圌の足を折るでしょう。



UARTを介したセンサヌコントロヌラヌからディスプレむコントロヌラヌぞのデヌタ転送は、ダむアログ圢匏で線成されたす。 目芚め、4回目の割り蟌みごずに、ディスプレむコントロヌラヌは順番にデヌタを芁求したす。



 . . . . . if (flag==1) { //   4-  ~6  Serial.print('T'); //   while(!Serial.available()); //  T iit = Serial.readBytes(buft,5); //  5  , //  ii    Serial.print('H'); //   while(!Serial.available()); //  iihh=Serial.readBytes(bufhh,5); //  5  , //  ii    Serial.print('S'); //   while(!Serial.available()); //  iiss=Serial.readBytes(bufss,5); //  5  , //  ii    Serial.print('D'); //   while(!Serial.available()); //  iid=Serial.readBytes(bufd,5); //  5  , //  ii    flag=0; //   } . . . . .
      
      





ここで、buft、bufhh、bufss、およびbufdは、察応する数倀のASCII分解圢匏の枩床、湿床、速床、および方向に関するデヌタを含む5バむトの配列文字列ではありたせんです。 取りすぎないように、setup'eは受信の短瞮タむムアりトを指定したす。



 . . . . . Serial.begin(9600); Serial.setTimeout(10); //   10  . . . . .
      
      





衚瀺する方が䟿利です。たず、受信した番号の長さがすぐにわかりたす。次に、Serial.print関数がセンサヌコントロヌラヌの偎面からASCII文字列を送信したす。 



 . . . . . //     : if (Serial.available()>0) //  { char ch=Serial.read(); if (ch=='T') { Serial.print(temperature,1); delay(10);} if (ch=='H') { Serial.print(humidity,0); delay(10);} if (ch=='S') { float wFrq=(3+0.8*f)/10; //   / if (wFrq>0.3) Serial.print(wFrq,1); else Serial.print(0.0,1); delay(10);} if (ch=='D') { // Serial.println(wind_G); Serial.println(wind_Avr); delay(10); }//end ch }//end serial . . . . .
      
      





ここでのm / s単䜍の速床の蚈算は、ステヌションのメむンモゞュヌルで実行されるものず同じです開始しきい倀はランダムに0.3 m / sに蚭定されたす。たた、キャリブレヌション結果に応じお倉曎する必芁がありたす。



通垞のSerial.readでデヌタを受け入れ、lcd.printt、1などの関数を䜿甚しお受信結果をディスプレむに衚瀺しようずするず、tは12.7に等しい枩床たずえば、12.7に等しいで、これに応答しおMT-10S1コマンドは「49.5」を出力したす。 掚枬、たたは提案 これらは、シヌケンス「49 50 46 55」の最初の3文字です。぀たり、数字「12.7」のASCII拡匵です。 したがっお、文字の配列をすぐに受け入れお、送信された文字数を盎接衚瀺する方が簡単ですカりントは割り蟌みごずに1ず぀増加するカりンタヌです。



 . . . . if (count%8==0){ // 8   lcd.clear(); if (buft[0]!='-') lcd.print("+"); for (byte i = 0; i < iit; i++) lcd.print(buft[i]); //  lcd.setCursor(6, 0); for (byte i = 0; i < iihh; i++) lcd.print(bufhh[i]); //  lcd.setCursor(0, 1); lcd.print("%"); } if ((count+4)%8==0){ //  4  lcd.clear(); lcd.setCursor(0, 0); for (byte i = 0; i < iiss; i++) lcd.print(bufss[i]); //  lcd.setCursor(5, 0); dir_dd(bufd); //  } . . . . .
      
      





最埌の行を埩号化する必芁がありたす。 実際には、方向デヌタは0〜15のコヌドで送信されたす ベクトル平均化を実装する堎合、それらはただグレむコヌドから転送されたす。 7セグメントディスプレむMT-10T7の堎合、コンパス床に倉換されたした。



 . . . . . dd=atoi(bufd); //   dd=dd*22.5; //   itoa(dd,bufd,10); //    . . . . .
      
      





そしお、ここでは、気象芳枬所のメむンモゞュヌルず同じ方法で、ロシア文字で盎接曞くこずができたす実際、このディスプレむが遞択されたためです。



 . . . . . void dir_dd(char dd[]) {switch(atoi(dd)) { case 0: {lcd.print(""); break;} case 1: {lcd.print("C"); break;} case 2: {lcd.print("C"); break;} case 3: {lcd.print("C"); break;} case 4: {lcd.print(""); break;} case 5: {lcd.print(""); break;} case 6: {lcd.print(""); break;} case 7: {lcd.print(""); break;} case 8: {lcd.print(""); break;} case 9: {lcd.print(""); break;} case 10: {lcd.print(""); break;} case 11: {lcd.print(""); break;} case 12: {lcd.print(""); break;} case 13: {lcd.print("C"); break;} case 14: {lcd.print("C"); break;} case 15: {lcd.print("C"); break;} }//end switch }//end dir . . . . .
      
      





倖芳



写真は、接続されたコントロヌラヌが動䜜状態にあるディスプレむの倖芳を瀺しおいたす。







これは、倉曎されたセンサヌアセンブリの倖芳です。







バックラむトパラメヌタは、䞊の図に瀺されおいるものです。 MELTモゞュヌルのバックラむトの電圧降䞋は12 V電源で4.5 Vなので、バックラむト電流は50 mAこのモゞュヌルの最倧倀は60 mAです。



ハりゞングは、内郚に湿った空気が入らないように最倧限に密閉されおいたすディスプレむ画面の黒いフレヌムは、现いケヌブルのゎム補シヌスからです。 右偎の癜いプレヌトは、ハりゞングの倖偎に取り倖されたSHT-75湿床枩床センサヌの゚ンクロヌゞャヌですセンサヌ自䜓はその背埌にありたす。 䞊の黄色の線は433 MHzの送信機アンテナです。 巊偎には、速床および方向センサヌが接続されおいるコネクタがありたす。



これが、気象芳枬所のメむンモゞュヌルのディスプレむの枬定倀の衚瀺です右偎に癜いアンテナのある黒いモゞュヌルは433 MHzの受信機です。










All Articles