IoT Workshop: Lab 3 - controlerende ingang en uitgang (4 / 6 stap)

Stap 4: Schrijven van de Code

Voor dit lab maakt u een nieuw bestand met de naam lab003.js in dezelfde map als in de vorige labs. Er zijn geen extra afhankelijkheden, dus we hoeven niet te wijzigingen aanbrengt in het bestand package.json.

In het lab003.js bestand start door te verklaren de belangrijke voorwerpen, met inbegrip van een variabele voor de LED-pin en de analoge pin zal u (digitale pin 13 voor de LED en analoge pin A0 voor de fotoweerstand - als u nog steeds uw project boord bekabeld uit het vorige labs en vervolgens u helemaal troep zitten moet). U moet ook stub uit de board.on() callback functie voor Johnny vijf.

 var five = require("johnny-five"); var board = new five.Board(); var LEDPIN = 13; var ANALOGPIN = 0; board.on("ready", function() { // The next code will go here }); // You will add a couple functions here later in the lab 

Binnenkant van de board.on() -functie zal u eerst de digitale pin die u voor de LED als een puls breedte modulatie (PWM) pin gebruiken zal initialiseren.

 board.on("ready", function() { // Set pin 13 to PWM mode this.pinMode(LEDPIN, five.Pin.PWM); }); 

Vervolgens gebruikt u de analogRead() -functie te vangen de gegevens afkomstig van de photoresistor. In Lab 2 schreef u gewoon de gegevens uit het logboek van de console. Voor dit lab zal u de gegevens gebruiken om te bepalen hoe helder de LED moet worden. Het concept is hetzelfde, maar de callback-functie die u deze keer schrijft moet een beetje meer (maar niet veel).

Definieer eerst, de analogRead() -functie en de callback-functie die moet worden aangeroepen als de gegevensinvoer wordt ontvangen. Het formaat is this.analogRead (pinNumber, callbackFunction);

 // read the input on analog pin 0: this.analogRead(ANALOGPIN, function(val) { // The next code will go here }); 

Deze functie geeft de toepassing de gegevens lezen vanaf de analoge pin (0 in dit lab) en input wordt verzameld, roepen de callback functie in het tweede argument als de invoer dat in het val -argument doorgeeft.

Uw doel is het creëren van een toepassing die de helderheid van de LED als de lichte dalingen van de kamer toeneemt. Als er licht op de kamer, u niet wilt dat de LED te verlichten, en hoe donkerder het wordt helderder de gewenste de LED te krijgen. U wilt ook sommige drempel van omgevingslicht waar de LED uitgeschakeld wordt (dat wil zeggen u wilt niet te hebben de LED flauw verlicht in een matig lichte kamer - het gewoon verslijt de LED). De manier om dit te doen is om de kaart van de ingangsspanning van de fotoweerstand naar de uitgangsspanning voor de LED. Er is wel een mismatch. De ingang van de fotoweerstand is in een 16-bits bereik van 0-1023 en de PWM ondersteund door onze Raad van bestuur is een 8-bits bereik van 0 tot en met 255. U kan gewoon de invoerwaarde in tweeën verdelen, maar je moet nog rekening voor de minimumdrempel.

Als u aan het doen waren dit in C met behulp van de Arduino structuren, waarden en functies, zonder gebruik te maken van kaders zoals Johnny-Five, zou u de map() -functie toewijzen van de invoerwaarde in een nieuwe reeks van gegevens, zoals het toewijzen van de analoge input waarde (varieerden tot 0-1023) aan een nieuwe reeks van 0 tot en met 255. U kunt dat hier doen - u hoeft alleen de functie map() om zelf te schrijven. Voeg de volgende code aan de onderkant van het lab003.js-bestand (na het einde van de board.on() functie.

 // This function maps a value from one range into another range // Example: map (25, 0, 25, 0, 50) returns 50 // Example: map (20, 0, 100, 0, 10) returns 2 function map(x, in_min, in_max, out_min, out_max) { return Math.round((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min); } 

Dit is de exacte formule die wordt gebruikt door de Arduino. Met deze functie kunt u doorgeven in een waarde en zijn voorgedefinieerd bereik, en het gewenste gegevensbereik en het geeft de juiste waarde voor dat bereik.

De map() functie zal negatieve waarden terugkeert, zodat u ook de Arduino constrain() functie, waardoor u om ervoor te zorgen dat de waarde is beperkt tot een minimale en maximale waarde opnieuw moet maken. Voeg de volgende code onmiddellijk na de map() functie.

 // This function ensures a value is within a defined range function constrain(x, in_min, in_max) { return Math.round(x < in_min ? in_min : x > in_max ? in_max : x); } 

Nu heb je de ondersteunende functies voor map() en constrain() kunt u de callback functie voor de functie van de analogRead() u begonnen met het schrijven binnen de board.on() functie geschreven... Eerst moet u de map() -functie gebruiken om de kaart van de binnenkomende waarde van de fotoweerstand tot een helderheidswaarde voor de LED.

 // read the input on analog pin 0: this.analogRead(ANALOGPIN, function(val) { // Map the analog value (0-1023) to an 8-bit value (0-255) // so it can be used to define the LED output. var brightness = map(val, 350, 1023, 0, 255); }); 

Als u de waarde voor helderheid toegewezen u de binnenkomende gegevens uit een aantal 350-1023 en 0-255. Zodoende u effectief de ambient lichtwaarde van 350 ingesteld op een helderheid van 0 (aangezien 350 op 0 kaarten). Als de waarde vanuit de fotoweerstand onder 350 is dan de functie map() een negatieve waarde als resultaat. Om het potentieel voor een negatieve waarde u kunt beperken de waarde tot het 0-255 variëren met behulp van de functie van de constrain() je schreef.

 // read the input on analog pin 0: this.analogRead(ANALOGPIN, function(val) { // Map the analog value (0-1023) to an 8-bit value (0-255) // so it can be used to define the LED output. var brightness = map(val, 350, 1023, 0, 255); // Use the constrain function to ensure the right values brightness = constrain(brightness, 0, 255); }); 

Dit zal ervoor zorgen dat de waarde van de helderheid tussen 0 en 255.

De laatste stap is het instellen van de waarde van de OUTPUT-pin aan de waarde voor helderheid. In het Lab 1 gebruikt u digitalWrite() aan de uitgang-pins ingesteld op hoog of laag (1 of 0). Aangezien u de OUTPUT van de LED-pin gedefinieerd als een PWM-pin zul je analogWrite() in plaats daarvan gebruiken die de Raad van bestuur om te simuleren van een analoog apparaat met behulp van PWM zal vertellen. U kunt ook een oproep van de console.log() toevoegen voor foutopsporing.

 // read the input on analog pin 0: this.analogRead(ANALOGPIN, function(val) { // Map the analog value (0-1023) to an 8-bit value (0-255) // so it can be used to define the LED output. var brightness = map(val, 350, 1023, 0, 255); // Use the constrain function to ensure the right values brightness = constrain(brightness, 0, 255); console.log('val: ' + (val * (5.0 / 1024.0)) + '; brightness: ' + brightness); // Set the brigthness of the LED this.analogWrite(ledPin, brightness); }); 

Dat is alle code - nu bent u klaar om de toepassing wordt uitgevoerd.

Gerelateerde Artikelen

IoT Workshop: Lab 1 - digitale uitgang

IoT Workshop: Lab 1 - digitale uitgang

In dit lab je draad-up een Arduino met een enkele LED en een weerstand van 330 Ohm dan code en een kleine Node.js/Johnny-Five toepassing uitvoert die lussen en schrijft sequentiële aan/uit commando's te maken van de LED knipperen.Als u dit nog niet h
IoT Workshop: Lab 4 - verzenden van gegevens naar de wolk

IoT Workshop: Lab 4 - verzenden van gegevens naar de wolk

In dit lab zal u bouwen van een eenvoudige ambient licht detectie app (vergelijkbaar met Lab 2) en verzendt de gegevens die naar de wolk wordt verzameld. U zal het gebruik van stikstof om gegevens te verzenden naar een cloud-gateway en zult u kunnen
IoT Workshop: Lab 2 - het lezen van een analoog signaal

IoT Workshop: Lab 2 - het lezen van een analoog signaal

In dit lab zal twee weerstanden - een statische weerstand en een variabele weerstand - maakt u een spanning divider waarmee u effectief begrijpen de lichtintensiteit gedetecteerd door een fotoweerstand - in wezen een lichtmeter. In de vorige les hebt
IoT Workshop: Prep werk

IoT Workshop: Prep werk

De labs in deze serie bouwen op elkaar om u te prototype uw eigen apparaten van Internet of Things (IoT). In dit lab die zal u Node.js en een open source framework voor interactie met hardware genaamd Johnny-Five, die werkt als een baseline controle
My Workshop/ Lab (2012)

My Workshop/ Lab (2012)

Here are some pictures of my lab where I do most of my electronic projects. Ik label hen ook met info. Het merendeel van metaal, kunststof en houtbewerking zijn gedaan buiten ons huis, in een aparte schuur. Ik heb gepost deze gids, aangezien het zou
LinkIt één ultieme IoT

LinkIt één ultieme IoT

Als je ooit naar de Verenigde Arabische Emiraten in de zomer geweest, zal u waarschijnlijk weten over de warmte er. Maar wanneer u zich binnenshuis, in uw huis of kamer, en de air conditioner is ingeschakeld, u niet voelt de warmte helemaal.Nu stel j
FlErt (Intel IoT)

FlErt (Intel IoT)

FLERT (Fast and Light Emergency Response Toolkit) is een helper voor de eerste responders. Dit houdt in feite een lopende telling voor het aantal mensen in een bepaald gebouw (kantoren, congrescentra, huizen, enz.).Dit is een zeer eenvoudige toevoegi
DADD - vaders tegen dronken rijden met behulp van bout IoT

DADD - vaders tegen dronken rijden met behulp van bout IoT

Dit Instructable ziet u hoe te bouwen van een auto-veiligheidssysteem dat weerhoudt mensen van rijden onder invloed en onmiddellijk een Uber vraagt door hen uw nauwkeurige GPS-locatie. Dit project was een onderdeel van een workshop o.l.v. bout IoT bi
Intel Edison lawaai Alarm (Intel IoT)

Intel Edison lawaai Alarm (Intel IoT)

IntroductieIk heb een inbraakalarm en brandalarm, maar geen manier om te weten als ofwel zijn klinkende tenzij ik in het huis ben. In plaats van hen vervangen door 'slimme' alternatieven, ik ben van plan om te bouwen van een apparaat om te luisteren
LED kubus Spectrum-Analyzer

LED kubus Spectrum-Analyzer

In dit project maken we een kleine add-on PCB houdende de een MSGEQ7 spectrum-analyzer circuit en laten zien hoe het de RGB LED kubus kit kan rijden van Freetronics. Hierdoor is de kubus weer te geven van de zeven bands over vier horizontale vlakken.
WIFI gecontroleerde LED Hat

WIFI gecontroleerde LED Hat

Je leert hier te gebruiken een Intel Edison Microcontroller Board verbinden met LEDs als uitgang en WIFI als een invoermethode wijzigen van kleuren of animaties voor de LEDs.Ik ook een stap voor stap handleiding hoe te opstelling de Edison en hoe te
Intel® Edison Hands-on dag 6: Sensor lamp

Intel® Edison Hands-on dag 6: Sensor lamp

In deze sectie zullen we proberen te maken van een lamp met sensor. Wanneeriemand langs de lamp van de sensor, de LED zal automatisch op. Natuurlijk, zullen het af als niemand rond is. In dit voorbeeld selecteren we PIR bewegingsmelder. Het staat u o
Eenvoudig, veilig, Internet / uit-schakelaar (110V/240V) met handbediende keuzehefboom

Eenvoudig, veilig, Internet / uit-schakelaar (110V/240V) met handbediende keuzehefboom

IoT Extension kabel Inline Switch, Android gecontroleerd door pfodApp. Optioneel met getimede inschakelen uitschakelen /.Geen Android programmeerkennis vereistDit een eenvoudige, goedkope, aanpasbare Android gecontroleerd schakelaar (110V naar 240V).
Laat een PIC microprocessor program

Laat een PIC microprocessor program

OK hoe hard kan een PIC microprocessor programmering worden?Nou het hangt ervan af, sommige zijn harder dan anderen voor verschillende redenen, de programmeertaal, het type microprocessor, het gebruiksgemak van de software voor het bewerken en vooral