lcds. Sie machen Spaß. Dies ist eine der coolsten Möglichkeiten, um Ihrem Arduino eine Stimme zu bringen, wenn sie durch glühender Text spricht. In diesem Artikel werden wir untersuchen
Mein Lieblingsmeetup eines jeden Monats hier in Sydney ist das IoT -Treffen in Sydney. Es ist ein tolles Treffen (Sie sollten mitkommen!). Am Ende jedes Treffens gibt es eine zufällige Verlosung für diejenigen, die rsviert haben. Ich dachte, es war an der Zeit, dass dies im wahren IoT -Stil geschehen war, also habe ich eine kurze Arduino -LCD -Seting zusammengestellt, die das Meetup.com -Ereignis -RSVP -Informationen anzieht und dann zufällig ein glückliches Mitglied auswählt. Ich dachte, es könnte eine schöne Überraschung und viel einfacher sein, als Namen aus einem Hut zu zeichnen!Es fällt auch ordentlich mit der aktuellen Serie von Internet of Things -Artikeln ein, die ich hier bei SitePoint schreibe. Ich erforsche die vielen verschiedenen IoT -Möglichkeiten mit verschiedenen Geräten. Letzte Woche habe ich mich angesehen, wenn ich IoT -Daten in der Unity Game Engine verwendet habe, und zuvor habe ich mir angesehen, wie man Daten aus dem Kieferknochen hochzieht.
Beginnen wir!
Ihre Arduino -Skizze
unser JavaScript -Code
<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>
Wenn Sie hübsch in node.js gespeichert sind, ist ein Großteil dieses Codes für Sie bereits sinnvoll. Ich werde jedes Bit erklären, um sicherzustellen, dass jeder auf derselben Seite ist und auf dem Weg zu allem, was wir einrichten müssen, Anleitung geben.
Zunächst richten wir unsere Express -Server -Variablen in Vorbereitung ein, um einen Localhost -Server auf Port 5000:
auszuführen<span>var express = require('express'), </span> app <span>= express(), </span> server <span>= require('http').<span>Server</span>(app), </span> port <span>= 5000,</span>
Wir haben dann eine ziemlich wichtige Sache, Johnny-Five. Dies ist die NPM -Bibliothek, die uns Zugriff auf die Funktionen ermöglicht, die wir benötigen, um unseren Arduino über node.js.
zu steuernfive <span>= require('johnny-five'),</span>
Danach geben wir das Anforderungsmodul ein. Wir werden dies verwenden, um HTTP -Anforderungen von unserem Node.js -Server an die Meetup -API zu stellen.
request <span>= require('request'),</span>
Um die Dinge sehr sauber und einfach zu halten, werden wir Unterstriche verwenden, um die Datenarrays zu durchlaufen.
_ <span>= require('underscore'),</span>
Die letzten beiden Variablen sind die Board- und LCD-Variablen, mit denen wir die Arduino-Objekte speichern werden, die Johnny-Five erstellt.
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>
app<span>.get('/chooseMember/:event_id', function(req<span>, resp</span>) {</span>
Die Optionen für unseren HTTP -Anruf enthalten unsere URL und einen Booleschen, um die Anfrage zu informieren, dass wir ein JSON -Objekt zurück erwarten. Das sieht so aus:
<span>request({ </span> <span>url: 'https://api.meetup.com/2/rsvps?key=089cc9874628ealkjh27dkb50653s&event_id='+req.params.event_id, </span> <span>json: true </span><span>}</span>
Schließlich haben wir unsere Rückruffunktion, die die zurückgegebenen JSON -Daten verwendet. Ich habe es einfach und ohne Fehlerbehandlung gehalten. Wenn dies jedoch eine schwerwiegende Produktionsniveau -Erstellung ist, fügen Sie eine Prüfung auf die Fehlervariable hinzu.
Die JSON -Ausgabe, die der Rückruf in unserer Körpervariablen zurückkehrt, sieht so aus:
<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>
Wir filtern viel davon mit der Funktion _.Pluck () in Unterstrich. Dies wird uns helfen, uns auf das wichtige Teil unserer API zu konzentrieren - den Mitgliedern, die rsviert haben. Die Funktion _.Pluck () durchläuft das Ergebnisarray und nimmt nur die Mitgliedsinformationen von jedem.
<span>var express = require('express'), </span> app <span>= express(), </span> server <span>= require('http').<span>Server</span>(app), </span> port <span>= 5000,</span>
Dann verwenden wir die Funktion _.MEMMBERS (), um ein Mitglied aus dem resultierenden Array zufällig auszuwählen.
five <span>= require('johnny-five'),</span>
Wir geben diese Daten über unseren Express -Server als JSON -Antwort auf die Get -Anforderung zurück und protokollieren Sie den Namen in unserer Konsole, damit wir sehen können, wer ausgewählt wurde:
request <span>= require('request'),</span>
Dann verwenden wir das LCD Johnny-Five-Objekt, das wir früher eingerichtet haben, um den Namen des Mitglieds auf unser LCD auszudrucken. Wir beginnen mit LCD.Clear (), um das LCD von allem zu löschen, und dann verwenden Sie LCD.print (), um die Namenszeichen auszudrucken.
_ <span>= require('underscore'),</span>
Sie werden bemerken, wenn Sie dies ausführen, dass einige lange Namen abgeschnitten werden, anstatt sich in die andere Zeile zu wickeln. Wenn Sie die Dinge in eine zweite Zeile einbinden möchten, versuchen Sie, Ihr Randommember in zwei 16 Zeichen zu trennen, die erste Zeichenfolge und verwenden Sie dann LCD.CURSOR (1, 0). Um die zweite Zeile zu bewegen, bevor Sie den zweiten drucken. In meinem Fall war es nicht benötigt, da wir wirklich nur sagen können, wer gezogen wurde - ein paar fehlende Charaktere werden hier normalerweise keine Probleme verursachen.
Wir haben unseren Node.js -Code bereit. Schließen Sie jetzt Ihren Arduino an und stellen Sie sicher
board <span>= new five<span>.Board</span>(), </span> lcd<span>;</span>
Sobald Sie eine Paket.json -Datei aussortiert haben, öffnen Sie Ihre Konsole und gehen Sie zum Speicherort Ihres Codes. Führen Sie diesen wunderbaren Befehl aus:
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>
erscheinen
Wir haben ein Stück Code aufgenommen, das dies sagte. Dies ermöglicht es Ihnen, Befehle aus dem Terminal auszuführen, während Ihr Node.js -Server ausgeführt wird, um festzustellen, was auf dem LCD -Bildschirm angezeigt wird:
Wenn wir einen lcd.print () eingeben, können wir etwas Magie erleiden:
Nun ... unsere Nachricht passte zumindest fast!
Wir haben erfolgreich ein zufällig ausgewähltes Mitglied der Ereignisgruppe auf unserem LCD erscheinen! Diese Idee könnte auf eine beliebige Anzahl anderer APIs da draußen angewendet werden. Passen Sie einfach den Anforderungsaufruf an und wie Sie die Daten umgehen. Hinterlassen Sie gruselige Nachrichten auf einem LCD für Mitbewohner, halten Sie die neuesten NBA -Playoffs im Auge oder was auch immer Ihre Phantasie nimmt!
etwas Spaß machen, basierend auf diesem Code? Hinterlasse eine Notiz in den Kommentaren und teile sie mit, ich würde es gerne sehen!
Was sind die Grenzen der Verwendung von APIs mit Arduino? Viele Möglichkeiten, es gibt einige Einschränkungen. Erstens haben Arduino Boards einen begrenzten Speicher, was bei der Behandlung großer Datenmengen ein Problem sein kann. Zweitens können nicht alle APIs frei zu verwenden, und einige können Nutzungsgrenzen haben. Schließlich kann es komplex sein, HTTP -Anforderungen und Parsendaten zu erstellen und ein gutes Verständnis für Programmierung und Netzwerk zu erfordern.
Wie kann ich Probleme mit meinem Arduino LCD und API? > Probleme mit Ihrem Arduino LCD und API können Probleme mit der Fehlerbehebung sein, aber es gibt einige Dinge, die Sie tun können. Überprüfen Sie zunächst Ihre Verkabelung und stellen Sie sicher, dass Ihr Arduino ordnungsgemäß mit dem Internet verbunden ist. Zweitens verwenden Sie den Serienmonitor, um Ihren Code zu debuggen und die Antworten der API zu sehen. Überprüfen Sie schließlich die API -Dokumentation auf bestimmte Anforderungen oder Einschränkungen.
Das obige ist der detaillierte Inhalt vonAnzeigen von Web -APIs auf einem Arduino LCD mit node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!