Hur man gör Tessel-stil programmodul från Adafruit-stil hårdvara (2 / 9 steg)
Steg 2: Konfigurera repo
Tessels moduler alla har samma grundläggande katalog. Du kan se en mall för Tessel moduler i allmänhet på vår stilguide här. Du kanske vill kolla in PIR reporäntan för utveckling här.
Här är anteckningar på vissa viktiga filer:
index.js (mall) denna fil är drivrutinen för maskinvaran. Här är den grundläggande installationen:
- Kräva util och händelsen utsändaren, tillsammans med några andra beroenden. Dessa kan du skriva händelsestyrd API: er.
- Göra en konstruktorfunktion som instansierar hårdvara som ett objekt. Dess två argument är "maskinvara" och en motringning. Funktionen bör avge ett "ready" händelse som returnerar objektet när den är klar. För PIR är det "redo" så snart som objektet instansieras. För något mer komplex, e.g. den omgivande modulen, det är inte "färdig" tills den verifierar att den har rätt firmware version.
- "hårdvara" anger där hårdvaran är kopplad till Tessel. Moduler är det en port. För extern hårdvara, kommer sannolikt att en port och en PIN-kod (t.ex. tessel.port['GPIO'].pin['A3']). Du ska nog också lägga till felhantering i fall fel maskinvarutypen skickas (t.ex. bara en port när du behöver för en PIN-kod) eller om fel typ av PIN-kod för (kan du se vilket stift är digitala, analoga och PWM i exemplen här). Du kan kontrollera PIR kod för exempel på denna felhantering.
- ' callback(err, obj)' ska returnera ett fel om det finns några fel anslutning, eller om det finns inga fel, ska returnera objektet som andra argument.
- Funktioner: detta är roligt delen! Vad vill du som API för maskinvaran? Vad är användbart? Vad vill du exponera? För PIR rörelsedetektor har jag bara en funktion, som läser PIN-koden. De flesta av användbar information är bättre exponerade som händelser för "rörelse", "stillhet" och "ändra".
- Använd funktionen: standarden kräver för en Tessel modul är require('module').use(tessel.port['PORT']). Funktionen "använda" tar järnvaror specifikationen och en motringning och skickar dem till objektet constructor.exports: exportera objekt funktion och användning funktion.
package.json (mall) användning "npm init" att generera de flesta av filen.
Andra objekt att notera:
Du behöver inte tessel npm paketet som ett beroende.
- Lägga till en "maskinvara" avsnitt. Som standard skjuter Tessel hela katalogen så att alla beroenden är inkluderade. Med ett avsnitt om "maskinvara", kan du ange filer och mappar att ignorera när driver till inbäddade enheter. För våra moduler, vi listar ". / test"och". / exempel".
exempel på mappen (mall) Du behöver minst ett exempel. Detta bör Visa grundfunktionalitet hårdvara. Min väntar på en färdig händelse, sedan loggar ett meddelande på utsläpp av "rörelse" och "stillhet" händelser. När du vill använda modulen, hänvisa till "... / "i stället för modulnamnet.
testa mapp (mall) Vi använder nod modulen "tinytap" för att testa. Alla funktioner som kan provas utan fysisk interaktion bör vara testbara med "tessel Kör test / * JS.
README.md (mall) din readme är din dokumentation. För konsistens med Tessel moduler, kolla in mallen. Vi använder nod-modulen "marktype" för att göra vacker, kopplas samman API-dokumentation.