あなたのarduinoスケッチ
この例で使用するスケッチはそうです:
SparkFun Inventorsキットにあるもののわずかに変更されたバージョンです。物事が接続されているが同じように機能する方法を再配置するオンラインで見つけるLCDスケッチには、他のバリエーションがあります。以下のJavaScriptで定義するピンを調整する必要があるかもしれません。
javaScriptコード<span>var express = require('express'), </span> app <span>= express(), </span> server <span>= require('http').<span>Server</span>(app), </span> port <span>= 5000, </span> five <span>= require('johnny-five'), </span> request <span>= require('request'), </span> _ <span>= require('underscore'), </span> board <span>= new five<span>.Board</span>(), </span> lcd<span>; </span> board<span>.on('ready', function() { </span> lcd <span>= new five<span>.LCD</span>({ </span> <span>pins: [12, 11, 5, 4, 3, 2], </span> <span>rows: 2, </span> <span>cols: 16 </span> <span>}); </span> <span>this.repl.inject({ </span> <span>lcd: lcd </span> <span>}); </span><span>}); </span> app<span>.get('/chooseMember/:event_id', function(req<span>, resp</span>) { </span> <span>request({ </span> <span>url: 'https://api.meetup.com/2/rsvps?key=474cc9332345ea7d7e135f50653c&event_id='+req.params.event_id, </span> <span>json: true </span> <span>}, function(error<span>, response, body</span>) { </span> <span>var members = _.pluck(body.results, 'member'), </span> randomMember <span>= members[_.random(members.length - 1)]; </span> resp<span>.json(randomMember); </span> <span>console.log(randomMember.name); </span> lcd<span>.clear().print(randomMember.name); </span> <span>}); </span><span>}); </span> server<span>.listen(port, function() { </span> <span>console.log('Listening on ' + port); </span><span>});</span>
node.jsにかなり締められている場合、そのコードの多くはすでに意味があります。全員が同じページにいることを確認し、セットアップする必要がある他のものについてガイダンスを提供するために、各ビットを説明します。
最初に、ポート5000でローカルホストサーバーを実行する準備をしてExpressサーバー変数を設定します:
<span>var express = require('express'), </span> app <span>= express(), </span> server <span>= require('http').<span>Server</span>(app), </span> port <span>= 5000,</span>
その後、リクエストモジュールを含めます。これを使用して、node.jsサーバーからMeetup APIにHTTPリクエストを作成します。
five <span>= require('johnny-five'),</span>
最後の2つの変数は、Johnny-Fiveが作成するArduinoオブジェクトを保存するために使用するボードとLCD変数です。
request <span>= require('request'),</span>
Arduinoボードがアクセスできるようになるのを待つことから始めます。ジョニーファイブは、ボードが準備ができているときに「準備ができた」イベントを送信します。
_ <span>= require('underscore'),</span>
また、LCDが持っている行と列の数を定義します。私の場合、それは2×16 LCDです。これはすべてそうです:
board <span>= new five<span>.Board</span>(), </span> lcd<span>;</span>
それから、オプションのコードがあります(ただし、含めるのが便利です)。これにより、実行中のコマンドラインからLCD関数にアクセスできます(記事の後半でこれを説明します)board.on('ready', function() {
それから、設定した唯一のリクエストがあります。このリクエストでは、URL内のイベントIDが期待されています。例:http:// localhost:5000/choosemember/221960710。イベントIDは、イベントのページにアクセスするときにアドレスバーにあるものです。
このIDを探しているGet Requestは次のように見えます:
lcd <span>= new five<span>.LCD</span>({ </span> <span>pins: [12, 11, 5, 4, 3, 2], </span> <span>rows: 2, </span> <span>cols: 16 </span><span>});</span>
その後、コードの複雑なビットに到達します! Meetup APIへの実際のHTTP要求。リクエスト関数を介してこれにアクセスします。ここでは、リクエストのHTTPオプションとコールバック関数の2つのことを渡します。
HTTPコールのオプションには、URLとブール値が含まれており、JSONオブジェクトを期待していることをリクエストに知らせます。これはそうです:<span>this.repl.inject({ </span> <span>lcd: lcd </span><span>});</span>
鋭いオブザーバーは、req.params.event_idを使用してURL文字列からリクエストURLにイベントIDを渡すことに気付くでしょう。しかし、そこには別の一連の文字列がありますが、私は説明していません。 Meetup APIにアクセスするには、APIキーが必要です。これらのいずれかをhttps://secure.meetup.com/meetup_api/key/:
最後に、返されたJSONデータを使用するコールバック関数があります。エラー処理なしでシンプルに保ちましたが、これが深刻な生産レベルの作成である場合は、エラー変数のチェックを追加します。
コールバックが私たちの体の変数に戻るJSON出力はそうです:
<span>var express = require('express'), </span> app <span>= express(), </span> server <span>= require('http').<span>Server</span>(app), </span> port <span>= 5000, </span> five <span>= require('johnny-five'), </span> request <span>= require('request'), </span> _ <span>= require('underscore'), </span> board <span>= new five<span>.Board</span>(), </span> lcd<span>; </span> board<span>.on('ready', function() { </span> lcd <span>= new five<span>.LCD</span>({ </span> <span>pins: [12, 11, 5, 4, 3, 2], </span> <span>rows: 2, </span> <span>cols: 16 </span> <span>}); </span> <span>this.repl.inject({ </span> <span>lcd: lcd </span> <span>}); </span><span>}); </span> app<span>.get('/chooseMember/:event_id', function(req<span>, resp</span>) { </span> <span>request({ </span> <span>url: 'https://api.meetup.com/2/rsvps?key=474cc9332345ea7d7e135f50653c&event_id='+req.params.event_id, </span> <span>json: true </span> <span>}, function(error<span>, response, body</span>) { </span> <span>var members = _.pluck(body.results, 'member'), </span> randomMember <span>= members[_.random(members.length - 1)]; </span> resp<span>.json(randomMember); </span> <span>console.log(randomMember.name); </span> lcd<span>.clear().print(randomMember.name); </span> <span>}); </span><span>}); </span> server<span>.listen(port, function() { </span> <span>console.log('Listening on ' + port); </span><span>});</span>
次に、_.members()アンダースコア関数を使用して、結果の配列からメンバーをランダムに選択します。
<span>var express = require('express'), </span> app <span>= express(), </span> server <span>= require('http').<span>Server</span>(app), </span> port <span>= 5000,</span>
getリクエストに対するJSON応答としてExpressサーバーを介してそのデータを返し、コンソールの名前を記録して、誰が選ばれたかを確認できます。
five <span>= require('johnny-five'),</span>
これを実行すると、他の行に包むのではなく、長い名前が遮断されることがわかります。物事を2行目にラップしたい場合は、randommmmber.name.nameを2つの16文字の文字列に分けて、最初の文字列を印刷してから、lcd.cursor(1、0)を使用してください。 2番目の行を印刷する前に2番目の行に移動します。私の場合、私たちが本当に必要なのは誰の名前が描かれているかを伝えることができるので、それは必要ではありませんでした - いくつかの欠落したキャラクターは通常、ここで問題を引き起こしません。
request <span>= require('request'),</span>
を実行します
node.jsコードの準備が整いました。次に、Arduinoを接続し、StandardFirmataのスケッチがアップロードされていることを確認してください:_ <span>= require('underscore'),</span>
また、すべての依存関係が整理されていることを確認する必要があります。私のpackage.jsonファイルは次のようになります:
それを自分のプロジェクトに自由に適応させてください、あなたが望む主なことはそれらの依存関係です。
その後、package.jsonファイルが整理されたら、コンソールを開いてコードの場所に移動します。この素晴らしいコマンドを実行します:これに続いて、これに続いて:
board <span>= new five<span>.Board</span>(), </span> lcd<span>;</span>
もう一度実行すると、新しいRSVPが表示されます。すべてが順調に進んでいる場合、これらの名前はあなたのArduinoのLCDに表示されるはずです!
node.jsサーバーにthis.repl.Injectを言ったコードを少し含めました。これができることは、node.jsサーバーがLCD画面に表示されている内容を設定するために実行中に端末内からコマンドを実行できることです。
このコードに基づいて何か楽しいものを作りますか?コメントにメモを残して共有してください、私はそれを見たいです!
arduino lcd
のWeb APIに関するよくある質問(FAQ)はい、HTTPプロトコルをサポートする限り、Arduino LCDでAPIを使用できます。ただし、一部のAPIには認証が必要になる場合があることに留意してください。これは、セットアップするのが少し複雑になる場合があります。また、APIによって返されたデータは、Arduinoが理解できる形式で、通常はJSONまたはXMLである必要があります。 🎜> Arduino LCDのデータをリアルタイムで更新するには、APIに定期的にリクエストする必要があります。 Delay()関数を使用して、プログラムの実行を一定の時間一時停止できます。たとえば、毎分データを更新する場合は、loop()関数の最後に遅延(60000)を追加できます。これにより、ループの次の反復の前にプログラムが60000ミリ秒、または1分間、ARDUINOでAPIを使用することの制限は何ですか?多くの可能性、いくつかの制限があります。第一に、Arduinoボードにはメモリが限られているため、大量のデータを処理する場合に問題になる可能性があります。第二に、すべてのAPIが自由に使用できるわけではなく、使用制限がある場合もあります。最後に、HTTPリクエストと解析データを作成することは複雑で、プログラミングとネットワーキングを十分に理解する必要があります。インターネットに接続できるArduinoコンポーネント。これには、LCDだけでなく、LED、モーター、その他のセンサーも含まれます。プロセスは同じです:ArduinoはAPIにリクエストを行い、データを受信し、このデータを使用してコンポーネントを制御します。 > Arduino LCDとAPIのトラブルシューティングの問題は困難な場合がありますが、できることがいくつかあります。まず、配線を確認し、Arduinoがインターネットに適切に接続されていることを確認してください。次に、シリアルモニターを使用してコードをデバッグし、APIからの応答を確認します。最後に、特定の要件または制限についてはAPIドキュメントを確認してください。
ArduinoでAPIの使用について詳しく知るために利用できるリソースがたくさんあります。 Arduinoの公式ウェブサイトとフォーラムは、開始するのに最適な場所です。また、YouTube、Udacity、CourseraなどのWebサイトで利用できるオンラインチュートリアルやコースもたくさんあります。最後に、Simon Monkの「プログラミングArduino:Getering of Stackes」などの本は、APIを使用するなど、Arduinoプログラミングの包括的な紹介を提供します。
以上がnode.jsを使用してArduino LCDにWeb APIを表示しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。