Blink-projektit. Vilkkuva LED

Jokainen kodin mikroelektroniikan kehittäjä kohtaa ennemmin tai myöhemmin tarpeen ohjata omaa, itsensä luomaa laitetta eräänlaisen kaukosäätimen avulla, jolla on kätevää vaihtaa toimintatiloja tai yksinkertaisesti tarkastella nykyistä tilaa. Yleisesti ottaen ilmaus "kodin mikroelektroniikan kehittäjä" 15 vuotta sitten olisi aiheuttanut kauheaa naurua, koska silloin kukaan ei voinut kuvitella, että joku kotona sotkee ​​pienoislevyjä, käsittelee laiteohjelmistoja ja todellakin. Mutta kävi ilmi, että yksittäisistä harrastajista tuli innokkaita ihmisiä, ja itse yritys sai massaliikevaihdon.

Mutta vuosia on kulunut ja kovaääniset yritykset ovat luoneet todellisen markkinaraon, kokonaiset markkinat, joilla miljoonat innostuneet ei-ammattilaiset valmistavat innostuneesti uutta "arduino-laitetta". Juuri nämä harrastajat maksavat isoja summia suojusten ja antureiden valmistajille, ja heidän älylaitteitaan on tarpeen ohjata kaukosäätimellä. Ja kummallista kyllä, heidän tarpeensa täytettiin eleganteimmalla mahdollisella tavalla. Blynk syntyy.

Blynk sovellus

Mitä Blynk tuo kotiautomaation ystävälle? Vastaus esitettyyn kysymykseen on kaksijakoinen. Toisaalta - ei ollenkaan, mutta toisaalta vähän muuttuu melkein puoleksi koko projektin "kustannuksista". Blynkin avulla voit muuttaa tavallisen Android- tai iOS-älypuhelimen tai tabletin todelliseksi ohjauspaneeliksi itsekehitetylle elektroniikalle. Blynk sopi erittäin hyvin Arduinon ekorakenteeseen ja ilmestyi sopivimmalla hetkellä.

Itse asiassa Blynk ei ole muuta kuin sovellus mobiililaitteelle, jonka avulla voit luoda täysin varusteltuja sovelluksia graafisen suunnittelun muodossa yhdistääksesi ne Arduino-pohjaisiin ja yhteensopiviin laitteisiin (totuuden mukaan niitä tulee olemaan paljon enemmän yhteensopivat alustat pian). Blynkin pääominaisuudeksi voin turvallisesti kutsua yksinkertaisuutta, jolla sekä itse sovellus luodaan että miten yhteys laitteen ohjelmakoodiin on toteutettu.

Kuitenkin aloittaaksesi ja jatkaaksesi sitä, sinun tarvitsee vain asentaa Blynk-sovellus matkapuhelimeesi tai tablet-laitteeseen. Liikuta seuraavaksi sormeasi näytöllä ja aseta elementtejä, kuten painikkeita, liukusäätimiä, kytkimiä, hehkulamppuja, piirtureita ja paljon muuta. Jokaisella elementillä on mahdollisuus määrittää muutamia parametreja, mutta perusta on ohjainten tai näytön sitominen fyysisen laitteen nastoihin. Ja itse nastat voivat olla todellisia, fyysisiä tai virtuaalisia. Mutta suosittelen työskentelemään virtuaalisten kanssa, koska niiden käsittelyn logiikka voidaan konfiguroida paljon joustavammin kuin fyysisten.

Laitepuolella sinun tarvitsee vain yhdistää kirjasto, luoda linkki asennetun sovelluksen lähdekoodin ja rekisteröintikoodin välille, laittaa tapahtumakäsittelijä silmukkaan, kyllä ​​... Kyllä, yleensä siinä kaikki. Jos sovellus on sidottu vain fyysisiin nastoihin, mitään muuta ei tarvitse tehdä.

Juuri näin saat laitteellesi kätevän kaukosäätimen, joka ei vain voi lähettää sille komentoja, vaan myös näyttää kaiken tarvitsemasi näytölläsi. Kehittäjät eivät edes vaivautuneet kehittyneeseen ja yksityiskohtaiseen dokumentaatioon. Kaikki on koottu yhteen asiakirjaan Blynk-verkkosivuston yhdelle sivulle. No, no, toteutuksen helpottamiseksi lähetän kehittäjille täyden "kunnioituksen"!

Mistä Blynk tuli?

Blynkin ilmestyminen ei tapahtunut puhtaasti sattumalta. Haluaisin jopa huomauttaa, että Blynkin syntymä on vain esimerkillinen, onnellinen tapaus onnistuneesta joukkorahoituksesta. Eräs Pasha Baidurin, toivottavasti en vääristänyt nimeä, aloitti Kikstarter-kampanjan vaatimattomalla, vain 10 000 dollarilla. Seurauksena oli, että kampanja sai viisinkertaisen voiton, mikä antoi kampanjalle mahdollisuuden käydä täysillä. Varainhankinta aloitettiin tammikuun 2015 puolivälissä ja kuun loppuun mennessä oli kerätty tarvittava määrä varoja. Juuri tällä tavalla aivot voittaa saaliin, kierrä se viiksillesi.

Hieman alle vuodessa, ja kirjoitan tätä arvostelua joulukuussa 2016, Blynk onnistui kasvamaan, hankkimaan kaikki tarvittavat ominaisuudet ja toivottavasti pystyi voittamaan kasvuongelman ja muuttumaan täysivaltaiseksi yhtiöksi. . Ainakin nyt Blynkkiä tarjotaan paitsi yksityishenkilöille myös oikeushenkilöille. Erityyppisten käyttäjien kaupallistamismallit vaihtelevat, mutta siitä lisää alla.

Liiketoimintamallin ainutlaatuisuus

Joten mitä muuta ainutlaatuista Blynkissä on kuin se, että se pystyy luomaan puhelinsovelluksen viidessä minuutissa ja yhdistämään sen Arduinoon viidellä lisähinnalla? Se mikä tekee siitä ainutlaatuisen, on sovellettu liiketoimintamalli. Ohjelmistomaailmassa hyväksytään tuotteiden vakiokäyttöehdot: Freeware (ilmainen), Shareware (shareware, kokeilujaksolla), Donationware (maksa, jos pidät), maksulliset tuotteet. Erilaiset yhdistelmät ovat sallittuja, esimerkiksi yksityiskäyttöön, tuote voi olla ilmainen, kun taas yrityssektorin tulee maksaa jokaisesta kopiosta. On kuitenkin olemassa muitakin lisenssejä, esimerkiksi monia OpenSourcea, jolloin tuotetta pidetään eräänlaisena kaikkien saatavilla olevana lähdekoodipalstana. Mutta älkäämme sukeltako erämaahan vaan katsokaamme Blynkkiä tarkasti.

Käyttöliittymä älypuhelimen Blynk-sovelluksessa

Oletuksena tavalliselle yksityiselle käyttäjälle, joka on ladannut Blynkin markkinoilta, on rajoitettu sarja, ei elementtejä, vaan akkuvirtaa. Tämä maksu käytetään käyttöliittymäelementtien käyttämiseen sovelluksesi luomiseen. Oletetaan, että sinulla on aluksi 1000 latausyksikköä. Jokainen projektiin asennettu painike maksaa sinulle 200 yksikköä, ja jotain monimutkaisempaa, esimerkiksi graafin rakentajaa, tulee ulos jo 400. Siten rakennat sovelluksesi elementeistä, kulutat sinulle aluksi varatun energian. Kun energia on lopussa, sovellukseen ei enää voi lisätä uusia elementtejä. Sinun on joko ostettava lisäenergiaa oikealla rahalla, ja toiminta on erittäin yksinkertaista, kuten kaikki muukin Blynkissä, tai poista kohteita sovelluksesta. Irrotettaessa asennukseen käytetty energia palautetaan kokonaisuudessaan.

Siten kehittäjät antavat uuden käyttäjän arvioida Blynkin ominaisuuksia ja luoda ainakin yhden enemmän tai vähemmän toimivan sovelluksen. Ja sitten - jos haluat maksaa, jos et halua, pura tekemäsi ja käytä uudelleen. Tilanteen ainutlaatuisuus piilee siinä, että käyttäjälle tarjotaan ei sovellusta, ei sen tilausta, ei liikennerajoitusta, vaan sovelluksensa käyttöliittymän elementtejä! Blynkin akun lataaminen ei ole kallista ja se voidaan luokitella mikromaksuksi. Siksi eroaminen kovalla työllä ansaitusta rahasta tapahtuu huomaamattomasti ja kivuttomasti.

Mutta silti arvostan ideaa. Kuvittele, että käytät MS Wordia ja sinua pyydetään kirjoittamaan enintään kymmenen sivun mittaisia ​​tekstejä. Ja kirjoittaaksesi yhdennentoista, sinun on joko ostettava lisää virtuaalista paperia tai lyhennettävä tekstiäsi mahdollisimman vähän. Poista kaikki tulostuksen jälkeen kokonaan. Huolimatta esimerkin toteutuksen järjettömyydestä, kaikki toimii Blynkin kanssa. Ja se toimii loistavasti.

Yrityskäyttäjille, joiden työ liittyy suoraan sovellusten julkaisemiseen kaupallisiin tai lähes kaupallisiin tarkoituksiin, tarjotaan hieman erilainen maksujärjestelmä Blynkin kehittäjien työhön. Yritykset saavat erillisen sovelluksen, joka ei toimi Blynk-hiekkalaatikossa, vaan erikseen. Blynk on edelleen siellä julkisivun takana piilossa. Ja sinun on maksettava tilaus, jonka aikana sovellus pysyy toiminnassa.

Kuvittele, että valmistat ultraäänikostuttimia. Olet jo koristellut jokaisen mallisi sinisillä LEDeillä ja harkitset vakavasti, kuinka vääntää IoT myös sinne. Blynk tarjoaa sinulle lähes valmiin ratkaisun. Ruuvaat kostuttimeen jotain ESP8266:n kaltaista ja tarjoat käyttäjille sovelluksen lataamisen. Voila! Kaikki toimii, kaikki ovat tyytyväisiä. Täsmälleen siihen asti, kunnes päätät julkaista uuden, parannetun kostuttimien sarjan, joka loistaa sinisten, mutta myös violettien LEDien lisäksi. Ja uskot melko perustellusti, että et voi enää maksaa vanhasta sovelluksesta. Se kuluttaa rahaa, ja kuluttajan on aika tulla hakemaan uusi ilmankostutin, koska sinulla on lapsia, heidän täytyy mennä yliopistoon.

Kuluttajatuotteiden ohjelmoitava elinikä on jokaisen valmistajan vaalittu unelma. Ratkaisu, joka Blynkin avulla on erittäin helppoa. Kuten kuitenkin, ja kaikki mikä koskee Blynkiä.

Mitä vastineeksi?

Mutta kaikki ihmiset eivät ole valmiita maksamaan rahaa, etenkään jostain, joka voidaan tehdä ilmaiseksi. Ja ihmisten ajatukset suuntautuvat välittömästi, harrastajat alkavat kaivaa vaihtoehtoisia vaihtoehtoja Blynk-toimintojen analogin ilmaiseen käyttöön. Ja niin oudolta kuin se kuulostaakin, olen yksi heistä.

verkkopalvelin

Sanoisin, että helpoin tapa toteuttaa kauko-ohjaus on käyttää Web-palvelinta laitteessasi. Sellaiset modernit sirut, kuten EPS8266 ja monet muut, antavat sinun muodostaa yhteyden IP-verkkoihin, mukaan lukien paikalliset verkot asunnossa ja jopa Internet-yhteydellä. Ja ohjaimen muistissa on tarpeeksi vapaata tilaa täysimittaiselle palvelimelle.

Näin ollen tällaisessa laitteessa voit ottaa käyttöön yksinkertaisen verkkopalvelimen, joka on optimoitu mobiililaitteiden näytöille. Voit soittaa siihen älypuhelimesi työpöydällä olevan pikakuvakkeen kautta. Kyllä, useimmissa tapauksissa sekä laitteen että matkapuhelimen pitäisi olla samassa verkossa, mutta kuinka usein tulee mieleen kytkeä ilmankostutin päälle kotona, kun olet itse Himalajalla kiipeämässä köysien kanssa seuraavalle huipulle?

Kun käytät verkkopalvelinvaihtoehtoa, sinun on käsiteltävä asiakkaan vastaukset ja näytettävä säätimet HTML-muodossa. Se ei ehkä tule yhtä kauniisti ja nopeasti kuin Blynkin kanssa, mutta se on täysin ilmainen.

Cayenne

Kohteiden lisääminen ohjauspaneeliin Caynnessa (selain)

Mitä tehtiin? Cayenne-asiantuntijoiden avulla ylikuormitettiin CayenneWiFiClient-menetelmä, johon lisättiin konstruktori, joka luo Cayenne-objektin, jolle välitettiin vain Cayenne-palvelun autentikointitunniste. Tässä tapauksessa sinun on luotava Internet-yhteys itse.

On tarpeen päivittää tavallinen Cayenne-kirjasto ja laittaa muokattu tiedosto luonnoksesi mukana olevaan hakemistoon:

#ifndef _CAYENNEESP8266WIFICLIENT_h #define _CAYENNEESP8266WIFICLIENT_h #sisällytä "CayenneClient.h"-luokka CayenneWiFiClient: julkinen CayenneClient ( julkinen: /** * Alkaa Cayenne-verkkoon siirtyminen para @paraymsidne verkkoon *para @paraymsidne verkkoon salasana */ void begin(const char* token, const char* ssid, const char* pass) ( Blynk.begin(tunnus, ssid, pass, CAYENNE_DOMAIN, CAYENNE_PORT); ) /* void config(const char* auth, const char * domain = CAYENNE_DOMAIN, uint16_t portti = CAYENNE_PORT) ( Base::begin(auth); this->conn.begin(domain, port); )*/ void config(const char* auth) ( Blynk.config(auth, CAYENNE_DOMAIN) , CAYENNE_PORT); ) ); CayenneWiFiClient Cayenne; #loppu Jos

Ja itse sketsi:

#sisältää #define CAYENNE_PRINT Serial // Kommentoi tämä poistaaksesi tulosteet käytöstä ja säästääksesi tilaa #include "CayenneDefines.h" #include "BlynkSimpleEsp8266.h" #include "CayenneESP8266WiFiClient.h" #define VIRTUAL /PIN LED P0 Dchar #4 token = "YourCayenneSecurityToke"; const char* ssid = "WiFi-verkkosi"; const char* password = "YourWiFiNetworkKeyPhrase"; void setup() ( // laita asennuskoodi tähän, jotta se suoritetaan kerran: Serial.begin(115200); Serial.println("YaHoo..."); WiFi.mode(WIFI_STA); WiFi.begin(ssid, salasana ); while (WiFi.waitForConnectResult() != WL_CONNECTED) ( Serial.println("Yhteys epäonnistui! Uudelleenkäynnistys..."); delay(5000); ESP.restart(); ) Cayenne.config(token); pinMode( ledPin, OUTPUT); ) CAYENNE_IN(VIRTUAL_PIN)( int arvo = getValue.asInt(); // Hanki arvo kokonaislukuna Serial.print("Vastaanotettu arvo V1P: "); Serial.print(arvo); Serial.println(" "); if (arvo==1)( digitalWrite(ledPin, LOW); )else( digitalWrite(ledPin, HIGH); ) ) void loop() ( // laita pääkoodisi tähän, jotta se suoritetaan toistuvasti: Cayenne.run (); viive(100); //Serial.print("."); )

Jos mikään ei ole selvää yllä olevasta, yritän selittää. Ensinnäkin Cayenne luottaa Blynkiin… Kyllä, Cayenne käyttää Blynkiä, mutta ei sovellusta, jota kuvailin muutamassa kappaleessa yllä, vaan Blynk-kehystä, joka on julkaistu MIT-lisenssillä. Siten käy ilmi, että sekä Blynk-sovellus että Cayenne suorittavat tavalla tai toisella saman toiminnon. Itse asiassa se on niin.

Valmis ohjauspaneeli Cayennessa selaimen kautta katsottuna

Ero projektien välillä on seuraava: Blynk keskittyy mobiilisovellukseen ja sovellusten kehittämisen helppouteen, Blynk on jo aktiivisesti kaupallistava. Cayenne tarjoaa mobiilisovelluksen lisäksi myös täysin toimivan ohjauspaneelin verkkosivuillaan. Eikä silti kerää rahaa käyttäjiltä. Cayennen toimintakonsepti on identtinen Blynkin kanssa. Sovelluksessa tai verkkoselaimen kautta käyttäjä luo projektin, lisää painikkeita, hehkulamppuja ja muita indikaattoreita, jotka voidaan liittää laitteesi virtuaaliseen tai todelliseen PIN-koodiin. Lisäksi Cayennessa on mekanismi laukaisuja ja tapahtumia varten. Triggerit käsittelevät laitteilta saatuja tapahtumia. Ja tapahtumamalli perustuu kalenteriaikatauluun.

Viestintä laitteen ja sovelluksen välillä tapahtuu samalla tavalla kuin Blynkin kanssa lisäämällä pieniä ohjelmakoodinpätkiä laitteeseesi kytketyn liiketoimintalogiikan käsittelemiseksi. Mutta alun perin projektia hiottiin käyttämään mahdollisimman vähän ohjelmointia asiakaslaitteen puolella. Cayennen kirjastojen pitäisi jotenkin poimia kaikki. Tästä syystä Cayennesta löydät monia kortteja ja verkkoon yhdistämisvaihtoehtoja, mukaan lukien erilaisia ​​antureita tietyiltä valmistajilta. Toisaalta monimuotoisuus vähentää ohjelmointiluonnoksen tarvetta, toisaalta se vähentää mahdollisuutta käyttää yleislaitteita.

Cayenne-käyttöpaneelin käyttöliittymä tabletissa

Tästä syystä minulla oli vaikeuksia yhdistää Cayenne jo yhdistettyyn Wi-Fi-yhteyteen. Ja minun piti selittää kehittäjille, miksi tarvitsin sitä. On mahdollista, että järjestelmä suunniteltiin loppukehittäjien aivan alkuvaiheen koulutusta varten, mikä näkyy epäsuorasti kunkin toiminnon yhteydessä tulevien luonnosesimerkkien määrällä.

Hieman yllättynyt sivuston rakentajasta. Sinun täytyy tottua hänen logiikkaan. Ensin lisäämme laitteen, hankimme tunnistekoodin, yhdistämme sen sitten laitteeseen ja yritämme muodostaa yhteyden Cayennen palvelimiin. Jos yhdistäminen onnistuu, liitettyyn laitteeseen on mahdollista liittää widgetejä, painikkeita, tulostauluja ja muita visualisointityökaluja.

Yhteenvetona Cayennen testauksen jälkeen voin sanoa, että en voinut päättää, pidinkö järjestelmästä vai en. Toisaalta kyllä, kaikki, mitä häneltä vaaditaan, on paikallaan. Toisaalta minulla oli koko ajan tunne, että tässä oli jotain kesken. Se on ymmärrettävää, järjestelmä on uusi ja työsuunnitelma kaikkien toimintojen toteuttamiseksi ei ole vielä valmis. Vielä huolestuttavampi on Try it for Free -uistin, ilman julkaisua, mutta mitä tapahtuu, kun "testijakso" on ohi? Ainakin tällä hetkellä (joulukuu 2016) Cayenneä voi käyttää omiin tarkoituksiin ilman maksua, kouluttaa, luoda omia sovelluksia. Ja mikä tärkeintä - ei rajoituksia akun energian varastoinnissa.

Virtuino

Toisin kuin Blynk tai Cayenne, Virtuinon on kehittänyt yksi henkilö. Ja huolimatta erittäin rajallisista resursseista, tulos ei osoittautunut huonommaksi ja ehkä jopa paremmaksi kuin yllä kuvattu. Joten Virtuino on kreikkalaisen kehittäjän ahkeruuden hedelmä, joka löytyy sekä erilliseltä sivulta (kreikaksi) että suoraan Virtuino-sovelluksen lataussivulta markkinoilta. Niille, joilla on kiire taistella, annan suoran linkin Virtuinon yhdistämiseen liittyvään opetusohjelmaan, koska aluksi menettely ei välttämättä ole triviaalia.

Kuten Blynk, Virtuino käyttää vain mobiilisovellusta käyttöliittymän luomiseen. Kuten Cayenne ja Blynk, Virtuino käyttää app-in-app -tekniikkaa. Tämä tarkoittaa, että työsi jää Virtuinon hiekkalaatikkoon eikä voi olla olemassa Virtuinon ulkopuolella. Mutta Virtuinolla on myös eroa kahdesta kilpailijasta. Virtuino ei käytä välipalvelinta.

Virtuino-sovelluksen käyttöliittymä tabletilla

Pysähdyn tähän tosiasiaan hieman yksityiskohtaisemmin, koska minulle se on avain. Blynk ja Cayenne käyttävät palvelinpuolta ja toimivat vain sen kautta. Et voi käyttää laitetta ilman Internet-yhteyttä, ainakaan muilla yhteyksillä kuin Bluetooth- ja USB-yhteyksillä. Ja jos yhteys on epävakaa, luonnoksesi hidastuu verkkoyhteyksissä. Joillekin sovelluksille käskyjen suorittamisen hidastaminen voi olla erittäin kriittistä. Lisäksi sekä Blynk että Cayenne voivat toimia vakavan NAT:n alaisena, mikä tarkoittaa, että laitteesi poimii ajoittain, kirjaimellisesti joka syklissä, Internet-palvelinta. Jos yhteys on huono, luonnoksen toteutus ei välttämättä suju ollenkaan alun perin tarkoitetulla tavalla.

Virtuinossa kehittäjä voi toimia kahdella tavalla. Ensinnäkin hän voi käyttää ThingSpeak-palvelua samana välipalvelimena. Ja toiseksi, viestintä sovelluksen ja laitteen välillä tapahtuu itse laitteelle nostetun verkkopalvelimen avulla! Kyllä, tässä tapauksessa pääsy laitteeseen paikallisen verkon ulkopuolelta on todennäköisesti mahdotonta. Toisaalta harvat ihmiset tarvitsevat sitä. Mutta ei viiveitä ja ongelmia ulkoisen yhteyden kanssa. Kaikki toteutetaan läpinäkyvästi mahdottomuuteen asti, sitä IoT-jättiläisiltä puuttuu. Cayennen kanssa työskennellessäsi on jatkuvasti tunne, että milloin tahansa voidaan ottaa käyttöön maksu palvelun käytöstä ja Blynkin hintoja nostetaan ja jo maksettu settisi ei toimi. Virtuinon avulla jatkat sovelluksen käyttöä ja laitteen hallintaa sen avulla. Joka tapauksessa sovellusta ei voi päivittää.

Kuten Cayenne, Virtuinolla on kiinteä kyky muodostaa yhteys Wi-Fi-verkkoon Virtuinon avulla ilman kykyä käyttää jo muodostettua yhteyttä. Kahden identtisen lähestymistavan olemassaolo toteuttamiseen johtaa onnettomiin ajatuksiin. Jostain uskomattomasta syystä kehittäjät rajoittavat merkittävästi tuotteidensa käyttökokemusta. Jos Cayennen avulla onnistuin ratkaisemaan oman verkkoyhteyteni käytön ongelman, niin Virtuinossa epäonnistuin. Edes kehittäjän avulla en pystynyt yhdistämään ESP8266:ta verkkoon ja käyttämään Virtuinoa. Asia on siinä, että Virtuino tukee ESP8266:ta vain ulkoisena Wi-Fi-moduulina Arduinolle, ei erillisenä levynä. Ja vaihdoin kokonaan ESP8266:een laitteissani niiden erinomaisten ominaisuuksien vuoksi.

Kyllä, pyrkiessään helpottamaan kuluttajan elämää, jotkut kehittäjät ajavat hänet, kuluttajan, hyvin kapeisiin rajoihin eivätkä anna hänen ylittää niitä. 1C:n esimerkin avulla muistamme, että mitä joustavampi ja avoimempi alusta, sitä enemmän menestystä se odottaa markkinoilla. Missä ovat kaikki ne "purjeet", "galaksit" ja "abakusit"? Otin kuitenkin yhteyttä kehittäjään ja sain selville hänen välittömät suunnitelmansa. Ensinnäkin mukautettavat painikkeet ja indikaattorit otetaan käyttöön. Tämän työn pitäisi olla valmis artikkelin ilmestymiseen mennessä, ja sitten on vuoro lisätä uusia tauluja tavalliseen kirjastoon. Toivon, että natiivi tuki ESP8266:lle Arduinolle ilmestyy kirjastoon.

Yleisesti ottaen Virtuino teki minuun erittäin suotuisan vaikutuksen ennen kaikkea sillä, että siellä on mahdollisuus olla käyttämättä välipalvelinta. Mutta yhden henkilön rajalliset resurssit eivät salli kaikkien ideoiden toteuttamista kerralla, esimerkiksi lisätä englanninkielistä versiota sivustosta tai luoda universaali versio kirjastostasi ja laittaa se samalla GitHubiin. Odotamme jatkokehitystä ja uutisia Illiasilta.

johtopäätöksiä

Olen erittäin tyytyväinen siihen, että mobiililaitteiden ja IoT-maailman laitteiden todellisen konvergenssin toteutuksia on alkanut ilmestyä. Ennen kuin pystymme kommunikoimaan helposti laitteidemme kanssa, jos mahdollista yhden tai yleisen käyttöliittymän kautta, IoT:n kokonaismarssia planeetan ympärillä ei havaita. Ihminen on sellainen peto, joka on liian laiska tottumaan uuteen, ja kymmenien erilaisten rajapintojen olemassaolo IoT-laitteiden hallintaan aiheuttaa loputonta eksistentiaalista kipua loppukäyttäjän nivelissä.

Täydelliseen yhdentymiseen ei tietenkään pidä luottaa. Muistatko tarinan älykkäistä kodeista? Milloin koko buumi päättyi? Ja kaikki johtuu järjestelmien yhteensopimattomuudesta ja selkeän yhtenäisen standardin puutteesta. IoT:ssä on samanlainen riski. Periaatteessa selvittiin jotenkin ilman älypistokkeita, jääkaappeja ja pesukoneita, eikä uusien "älykkäiden" ominaisuuksien lisääminen tuo laitteisiin juurikaan lisäarvoa. Siksi seuraamme tiiviisti panimotaistelua, on mahdollista, että yksi yllä olevista viestintämenetelmistä henkilön ja laitteen välillä voittaa silmiemme edessä. Katsotaan, katsotaan.

Erilaisten mikro-ohjainten ja mikrotietokoneiden ohjelmointi, kuten Arduino, Raspberry Pi ja vastaavat, on yksi mielenkiintoisimmista ja merkityksellisimmistä toiminnoista. Laitteiden suunnittelu näille alustoille on mennyt nörttien ja ammattiohjelmoijien harrastuksen ulkopuolelle: näillä levyillä rakennetaan robotteja, työstökoneita, nelikoptereita, IoT-laitteita (älykäs koti), palvelimia ja jopa Hi-Fi-ääniliitäntöjä.

Valitettavasti mikro-ohjainmarkkinat ovat erittäin segmentoidut. Niiden ohjelmointi tapahtuu erilaisten ympäristöjen ja rajapintojen kautta. Tilanne on kutsuttu pelastamaan projekti nimeltä Blynk.

Blynk on pilvipohjainen palvelu graafisten ohjauspaneelien luomiseen ja sopii monenlaisiin mikrotietokoneisiin ja mikrokontrollereihin. Kun aiemmin piti kirjoittaa täysimittainen I / O-liitäntä tai ostaa lisämoduuleja tiedon keräämiseen antureista, nyt pärjäät viidellä minuutilla työskennellä Blynkissä.

Luodaksesi oman Blynkin kautta hallitun projektin tarvitset hyvin vähän: asenna sovellus (iOS- ja Android-versiot ovat saatavilla) tai käytä verkkolomaketta. Täällä sinun on rekisteröidyttävä yhdessä vaiheessa - syötä sähköpostiosoitteesi ja salasanasi. Rekisteröityminen on pakollista, koska Blynk on pilviratkaisu ja ilman sitä kuka tahansa käyttäjä voi saada haltuunsa rautapalan.

Halukkaat voivat asentaa palvelimen paikallisesti. Tässä tapauksessa Internet-yhteyttä ei tarvita.

Sovelluksen käyttö vaatii tiettyjä taitoja. Ensin sinun on linkitettävä tietokone tai älypuhelin ohjelmoitavaan levyyn. Ohjelma tukee liittämistä levyihin useiden käyttöliittymien kautta:

  • USB (sarja)
  • Adafruit CC3000 WiFi,
  • Virallinen Arduino WiFi Shield,
  • Virallinen Ethernet Shield (W5100),
  • ENC28J60,
  • ESP8266 (WiFi-modeemi),
  • SeeedStudio Ethernet Shield V2.0 (W5200),
  • RN-XV WiFi,
  • ESP8266.

Yhteyden määrittämisen lisäksi sinun tarvitsee vain liittää oikein tulevan laitteen moduulit. Sen jälkeen sovelluksen työmuodossa sinun on lisättävä käytettävissä olevat moduulit (widgetit), määritettävä tarvittavat lähtöosoitteet ja määritettävä haluamasi parametrit (tarvittaessa voit kirjoittaa oman koodisi). Muuten, drag’n’dropilla luodaan widget tai ohjelma. Ohjaukseen on saatavana paljon ohjauslaitteiden simulaattoreita - kytkimiä, liukusäätimiä, näyttöjä, joista jokaiselle voit kirjoittaa oman logiikkasi. Tarvittavien antureiden tietojen näyttämiseen ja järjestämiseen graafien muodossa on erilliset lomakkeet.

Alusta sopii siis niin aloittelijoille kuin edistyneemmille käyttäjille, jotka eivät halua käyttää aikaa projektinhallintasovellusten kirjoittamiseen: sääaseman tietojen lukemisesta ja älykodin ohjaamisesta robottien ohjaamiseen.

Kaikki aloittamiseen tarvitsemasi tiedot ovat saatavilla virallisella verkkosivustolla. Blynk on , jotta kaikki voivat osallistua uusien ominaisuuksien luomiseen. Tällä hetkellä palvelun käyttö on täysin ilmaista, jatkossa tilanne muuttuu jonkin verran - ensisijaisesti uusien toimintojen rahallistamisen vuoksi. Joten on jo tiedossa, että pääsy GPIO-rajapintoihin ostetaan sovelluksen sisäisenä ostona.

Blynk toimii tällä hetkellä seuraavien levyjen kanssa:

  • Arduino: Uno, Nano, Mini, Pro Mini, Pro Micro, Mega, YÚN (Bridge), Due;
  • Raspberry Pi;
  • Hiukkanen (ex Spark Core);
  • ESP8266;
  • TinyDuino (CC3000);
  • Wicked WildFire (CC3000).

  • 220 ohmin vastus

Piiri

Tässä esimerkissä käytetään sisäänrakennettua LEDiä, joka useimmissa Arduino- ja Genuino-levyissä on. Tämä LED on kytketty digitaaliseen nastaan ​​ja sen numero voi vaihdella korttityypistä riippuen. Elämäsi helpottamiseksi meillä on vakio, joka on määritelty jokaisessa taulun kuvaustiedostossa. Tämä vakio on LED_BUILTIN ja voit ohjata sisäänrakennettua LEDiä helposti. Tässä on vakion ja digitaalisen nastan välinen vastaavuus.

  • D13-101
  • D13 - Eräpäivä
  • D1-Gemma
  • D13 - Intel Edison
  • D13 - Intel Galileo Gen2
  • D13 - Leonardo ja Micro
  • D13 - LilyPad
  • D13 - LilyPad USB
  • D13-MEGA2560
  • D13 - Mini
  • D6-MKR1000
  • D13-Nano
  • D13-Pro
  • D13-Pro Mini
  • D13- UNO
  • D13 - Yun
  • D13-nolla

Jos haluat sytyttää ulkoisen LEDin tällä luonnoksella, sinun on rakennettava tämä piiri, jossa kytket vastuksen toisen pään digitaaliseen nastavastaanottajaan LED_BUILTIN vakio. Liitä LEDin pitkä jalka (positiivinen jalka, nimeltään anodi) vastuksen toiseen päähän. Liitä LEDin lyhyt haara (negatiivinen haara, jota kutsutaan katodiksa) maadoitusliittimeen. Alla olevassa kaaviossa näytämme UNO-kortin, jonka LED_BUILTIN-arvo on D13.

LEDin kanssa sarjassa olevan vastuksen arvo voi olla eri arvoinen kuin 220 ohmia; LED syttyy myös arvoilla 1K ohmiin asti.

Kaaviomainen

Koodi

Kun olet rakentanut piirin, liitä Arduino- tai Genuino-kortti tietokoneeseen, käynnistä Arduino-ohjelmisto (IDE) ja kirjoita alla oleva koodi. Voit ladata sen myös valikosta File/Examples/01.Basics/Blink . Ensimmäinen asia, jonka teet, on alustaa LED_BUILTIN-nasta lähtönastaksi linjan kanssa

pinMode(LED_BUILTIN, OUTPUT);

Pääsilmukassa kytket LEDin päälle rivillä:

digitalWrite(LED_BUILTIN, KORKEA);

Tämä syöttää 5 volttia LED-anodille. Tämä luo jännite-eron LEDin nastojen yli ja sytyttää sen. Sitten sammutat sen rivillä:

digitalWrite(LED_BUILTIN, LOW);

Tämä palauttaa LED_BUILTIN-nastan 0 volttiin ja sammuttaa LEDin. Päälle- ja poiskytkennän väliin halutaan tarpeeksi aikaa, että henkilö näkee muutoksen, joten delay()-komennot kertovat laudalle, ettei se tee mitään 1000 millisekuntiin eli yhteen sekuntiin. Kun käytät delay()-komentoa, mitään muuta ei tapahdu tuohon aikaan. Kun olet ymmärtänyt perusesimerkit, tutustu esimerkkiin oppiaksesi luomaan viivettä muiden asioiden suorittamisen aikana.

Kun olet ymmärtänyt tämän esimerkin, tutustu esimerkkiin oppiaksesi lukemaan piirilevyyn liitetyn kytkimen.

Joten aloitetaan oppiminen. Ensimmäinen oppitunti ei vaadi sinulta mitään materiaaleja, ja se on yksinkertaisesti suunniteltu esittelemään sinulle ARDUINO:n yksinkertaisuus. Kuten useimpien ohjelmien kohdalla, johdanto alkaa sanoilla "Hello World!" joten aloitamme yksinkertaisimmasta - LEDin vilkkumisesta. Tarvitset tähän: itse ARDUINO-kortin, USB-kaapelin ARDUINO:n liittämiseksi tietokoneeseen, ARDUINO-ohjelmointikuoren. Shellit julkaistaan ​​uutena, mutta versio 1.0.6 on tunnustettu vakaimmaksi. ladata voit jatkaa virallinen nettisivu. Tämä on Windows-versio, lataa Linuxille. Kannattaa heti ymmärtää, että opiskelun jatkamiseksi tarvitset leipälaudan (tilaa Kiinasta tai osta verkkokaupasta), johdot (voit ostaa samasta paikasta tai etsiä vanhat järjestelmäyksiköt ja vetää johdot ulos etupaneeliin, ennen kuin edes etupaneelin USB oli kytketty yksittäisillä johdoilla eikä kokonaisella liittimellä, ne sopivat sinulle - vedä johto ulos, juota nastat levyn liittimistä toiseen päähän , laita sitten pieni pala kutisteletkua juotoskohtaan, jotta lanka ei katkea juotoskohdassa, lämpenee ja sinulla on valmis lanka (reikäinen tulppa) - uros (nasta levystä).

Kotitekoiset johdot ARDUINOlle

Tee samalla tavalla uros-uros johdot, niistä on hyötyä koepalautasen kytkemiseen ja ARDUINO:n liittämiseen leipälautaan. Muuten, on mahdollista, jopa välttämätöntä, tehdä tällaiset johdot silmukan muodossa - on paljon kätevämpää yhdistää ARDUINO lohkoilla) ja lohkot, joiden kanssa työskentelet (ostettu myös Kiinasta tai verkosta). kaupat). Anturien ja toimilaitteiden valikoima on valtava, eikä se rajoita mielikuvitustasi. Mutta aluksi lämpötila-anturi riittää Dallas, ilmaisin (sinulla voi tietysti olla myös 7-segmenttisiä LED-valoja, mutta ne kuluttavat useita kertoja enemmän kuin 1602 virtaa, ja tämä vaikuttaa negatiivisesti, kun ne saavat virtaa paristoista ja paristoista, ja ne näyttävät vain digitaalisia tietoja), rele Kaikki mitä tarvitset, voit aina ostaa. Niille, joita varat eivät rajoita, on parempi ostaa sarja välittömästi. Vaikka se on vähän kallis, se poistaa välittömästi kaikki anturien hankintaan liittyvät ongelmat ja voit valmistaa laitteita heti. Valinta on silti sinun. Okei, puhutaan, lähempänä aihetta.

Yhdistämme ARDUINO:n tietokoneeseen, suoritamme ohjelman, ohjelmassa menemme Service-Pay-valitse lautasi, siinä kaikki - voit työskennellä!

Muuten, kiinalainen klooni voidaan koota sirulle ch340 ja tietokoneesi tarvitsee ohjaimen USB-porttiin. Asenna lataamalla ohjain, purkamalla pakkaus ja osoittamalla ohjainkehotetta kansioon, jossa on pakkaamattomat tiedostot.

Tee seuraavat toimet tuhlaamatta aikaa: Tiedosto-esimerkit-perustiedot-vilkku. Uusi ikkuna avautuu


Vilkkuu ARDUINOssa

jossa näet ohjelman, voit napsauttaa heti ohjelmapaneelin toista painiketta nuolella, ohjelma käännetään ja siirretään ARDUINO:lle, levyn LED alkaa vilkkua! 1 sekunti päällä, 1 sekunti pois päältä. Harkitse itse ohjelmaa. Näet ensin kommentit, jotka on merkitty /* teksti */ Ja //teksti . Ensimmäinen tarkoittaa, että teksti merkki /* allekirjoittamaan asti */ on kommentti ja kääntäjä ei yksinkertaisesti käsittele eikä ota huomioon näitä tietoja, on erittäin kätevää kirjoittaa sellaisiin yhdistelmiin ohjelman kuvaus, sen algoritmi, kirjoittaja ja paljon muuta. Merkki // kommentoi vain riviä. Lisäksi voit kirjoittaa tämän merkin sekä rivin alkuun että minkä tahansa ohjelman rivien jälkeen, mutta ei missään tapauksessa ennen ohjelman rivejä - ohjelma pitää koko riviä kommentina.

Esimerkiksi:

digitalWrite(13, KORKEA); // laita LED päälle (HIGH on jännitetaso)- oikein

// laita LED päälle (HIGH on jännitetaso) digitalWrite(13, HIGH);- ei oikein

Jos haluat tehdä kommentin ennen operaattoria yhdellä rivillä, käytä yhdistelmää /* teksti */ , nuo. rivi näyttää tältä: /* laita LED päälle (HIGH on jännitetaso) */ digitalWrite(13, HIGH);

Yritä kommentoida toimintaasi mahdollisimman usein, kääntäjä leikkaa ne pois ohjelmasta, ja ajan myötä unohdat yksinkertaisesti mitä ja miten teit.

Seuraava asia, jonka näet, on seuraava teksti:

// Asennustoiminto suoritetaan kerran, kun painat reset-näppäintä tai virran syöttöä korttia
void setup()(
// alustaa digitaalinen nasta 13 lähdöksi.
pinMode(13, OUTPUT);
}

Kommentissa sanotaan, että asetustoimintoa kutsutaan vain kerran, kun nollaat ARDUINOn tai kytket sen uudelleen päälle. Nuo. joko paina itse levyn nollauspainiketta tai kytke virta uudelleen.

Sitten tulee operaattori void setup() (….)- aloitetaan varsinainen asetusosio tälle luonnokselle (tämä on ARDUINO-ohjelman nimi).

Seuraava kommentti sanoo, että määrittelemme ARDUINO-nastan 13 lähdöksi. Haluan muistuttaa, että kortin nastat on kuvattu sivulla, joten 13. lähtö on digitaalinen (joka on kirjoitettu lähtöjen kuvateksteihin) ja voi ottaa vain 2 tilaa - päällä (samaan aikaan, siihen syötetään noin 5 V jännite), eli looginen 1 (yksi) tai pois päältä (ei jännitettä) ts. boolen 0 (nolla). Nollassa nastassa on edelleen pieni jännite, mutta ne ovat alhaiset suhteessa loogiseen yksikköön. Lisäksi itse levyllä oleva LED on kytketty nastan 13 vastuksen kautta, se on se, joka vilkkuu, kun ohjelma suoritetaan.

pinMode(13, OUTPUT);- pinMode - kääntää pin mode, 13 - pin-numero, OUTPUT - lähtö, ts. rivi tarkoittaa, että nasta 13 toimii lähtönä, OUTPUT , jos kirjoitat INPUT, se on jo DIGITAL INPUT, ts. voit käsitellä tähän PIN-koodiin tulevaa DIGITAALISTA dataa.

Jos liität nastan 13 LEDin, jossa on 1kΩ:n vastus sarjassa, ja toisen nastan GND-nastaan, LED vilkkuu yhdessä levyn LEDin kanssa. Jos se ei vilku, vaihda LEDin napaisuus.

Seuraavat rivit ovat ohjelma, joka kuvaa toimia portin kanssa:

// silmukkafunktio toimii yhä uudelleen ja uudelleen ikuisesti
void loop()(
digitalWrite(13, KORKEA); // laita LED päälle (HIGH on jännitetaso)

digitalWrite(13, MATALA); // sammuta LED asettamalla jännitteen LOW
viive (1000); // odota hetki


tyhjä silmukka() (…)
- ohjelman osa, jossa on kuvattu työvaiheet, tämän syklin tiedot voivat muuttua ja niitä voidaan käsitellä ehtojen mukaisesti Kommentissa sanotaan, että seuraava sykli suoritetaan aina uudestaan ​​ja uudestaan

digitalWrite(13, KORKEA);// laita LED päälle (HIGH on jännitetaso) - digitalWrite - kirjoita DIGITAL signaali, 13 - pin numero, HIGH - korkea taso, ts. looginen yksikkö (jännite noin 5 V), sitten kommentti, että kytkemme LEDin päälle korkealla logiikkatasolla.

viive (1000);// odota sekunnin viivettä (viivettä), odota 1000 millisekuntia tai 1 sekunti. Tarvittava operaattori, erityisesti käsiteltäessä painiketta painetaan, tässä tapauksessa käytetään osoituksena odottaa 1 sekunti nastan 13 kytkemisen jälkeen.

digitalWrite(13, MATALA);// sammuttaa LED asettamalla jännitteen LOW - kuten syklin ensimmäinen rivi osoittaa, että nasta 13 pitäisi kytkeä, vasta nyt LOW-tasolle - matala taso, looginen nolla (jännite noin 0V).

viive (1000);// odota sekunti - jälleen 1 sekunnin viive ennen kuin silmukka alkaa uudelleen.

Kokeile muuttaa viivearvoja, niin näet, että päällekytkennän kesto ja välähdysten välinen tauko muuttuvat.

Ohjelma on yksinkertainen, ymmärrettävä ensikerrasta lähtien, mutta siinä on haittoja: viiveoperaattori saa ARDUINO:n odottamaan, kunnes se saa työnsä valmiiksi, ts. tällä hetkellä MK ei käsittele mitään tietoja, yksinkertaisesti sanottuna se odottaa operaattorin suorittamista, okei, jos arvot ovat alhaiset, mutta jos sinun on käsiteltävä tiedot nopeasti? 1 sekunnin aikana tiedot voivat muuttua yli sata kertaa, eikä MK ota niitä huomioon, vaan odottaa ohjelman suorittamista. Jotta et menetä saapuvia tietoja, voit käyttää seuraavaa luonnosta. Sketsin avaaminen: Tiedosto - Esimerkit - Digitaalinen - BlinkWithoutDelay. Seuraava ikkuna avautuu:

/* Vilkkuu ilman viivettä

Kytkee päälle ja pois päältä valodiodin (LED), joka on liitetty digitaaliseen pistorasiaan
pin, ilman delay()-funktiota. Tämä tarkoittaa toista koodia
voi toimia samanaikaisesti ilman LED-koodin häiriöitä.

Piiri:
* LED kiinnitetystä nastasta 13 maahan.
*Huomautus: useimmissa Arduinoissa on jo LED-valo
joka on kiinnitetty nastan 13, joten tässä esimerkissä ei tarvita laitteistoa.

luotu 2005
kirjoittanut David A. Mellis
8. helmikuuta 2010
Kirjailija: Paul Stoffregen
11. marraskuuta 2013
Kirjailija: Scott Fitzgerald

Tämä esimerkkikoodi on vapaasti käytettävissä.

http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/

// vakiot eivät muutu. Käytetään tässä PIN-koodin asettamiseen:
const int ledPin = 13; // LED-nastan numero

// Muuttujat muuttuvat:
int ledState = LOW; // ledState, jota käytetään LEDin asettamiseen

// Yleensä sinun tulee käyttää "unsigned long" muuttujia, joilla on aika
// Arvosta tulee nopeasti liian suuri int:lle tallennettavaksi
etumerkitön pitkä edellinenMillis = 0; // tallentaa viimeisimmän LED-päivityksen

// vakiot eivät muutu:
const pitkä aikaväli = 1000; // vilkkumisväli (millisekuntia)

void setup()(

pinMode(ledPin, OUTPUT);
}

void loop()
{




// vilkuttaa LEDiä.

if (nykyinenMillis - edellinenMillis >= intervalli) (


jos (ledState == LOW)
ledState = KORKEA;
muu
ledState = LOW;



}
}

Ohita kaikki kommentit ja siirry riville:

// vakiot eivät muutu. Käytetään tässä PIN-koodin asettamiseen:
const int ledPin = 13;// LED-nastan numero

Kommenttirivillä sanotaan, että vakioita ei saa muuttaa, eli vakioiden nimiä ei saa muuttaa. Mutta voit muuttaa PIN-numeroa tarkoittavan numeron.

const int ledPin = 13; // LED pin-constin numero tarkoittaa vakiota, eli vakioarvoa, jota ei voi muuttaa ohjelmassa, lyhennettynä kokonaisluvulla, tarkoittaa tietotyyppiä, joka voi ottaa arvoja välillä -32768 - 32768. Lisäksi kokonaisluvuksi, on vielä 5 tyyppistä dataa. Mikä on ero? Ne eroavat kooltaan, ts. esimerkiksi tavutyyppiseen muuttujaan voidaan kirjoittaa vain 256 arvoa, kokoero on int-2 tavua (paitsi ARDUINO DUE, INT ottaa siinä jo 4 tavua, mutta ottaa arvot alkaen -2147483648 2147483647), tavu sellaisena kuin se on kirjoitettu - 1 tavu. Suurissa ohjelmissa muistin säästäminen on erittäin tärkeä asia, ja siksi yritä välttää "raskaita" tyyppejä aina kun mahdollista, jos pärjäät "kevyillä" tyypeillä. Esimerkiksi tavutyyppi riittäisi tähän. 13 mahtuu 0-255 väliseen rajaan ja tähän tietotyyppiin mahtuisivat myös muut digitaaliset nastat. ledPin on itse vakion nimi. 13 on vakion arvo, yllä olevasta kommentista käy selväksi, että tätä vakiota käytetään nastan valinnassa.

// Muuttujat muuttuvat:
int ledState = LOW;// ledState, jota käytetään LEDin asettamiseen

Kommentissa sanotaan, että muuttuja muuttuu ohjelmassa

int ledState = LOW;// LED-valon asettamiseen käytetty ledState - ilmoittaa ledState-muuttujan, jonka alkuarvo on LOW (looginen nolla) ja huomauttaa, että ledState-muuttujaa käytetään LED-valossa (ei meidän LEDissämme).

// Yleensä sinun tulee käyttää "unsigned long" muuttujia, joilla on aika
// Arvosta tulee nopeasti liian suuri int:lle tallennettavaksi
// tallentaa viimeisimmän LED-päivityksen

Kommentissa sanotaan, että ajan suhteen kannattaa käyttää etumerkitöntä pitkää muuttujaa, seuraavalla rivillä varoitetaan, että arvo on liian suuri int-muuttujan tallentamiseen. Merkitöntä pitkää käytetään NUMEROJEN tallentamiseen, ja se voi tallentaa arvoja välillä 0 - 4294967295 4 tavussa.

etumerkitön pitkä edellinenMillis = 0;// tallentaa LEDin viimeisimmän päivityksen - luo muuttujan previousMillis tyyppiä unsigned long ja antaa arvon 0, se tallentaa ajan, jolloin LEDin tila päivitettiin.

// vakiot eivät muutu:
const pitkä aikaväli = 1000;// vilkkumisväli (millisekuntia)

Myös vakio, tyyppi pitkä, on tarkoitettu NUMEROJEN tallentamiseen, kestää 4 tavua ja voi ottaa arvoja välillä -2147483648 - 2147483647, intervalli on muuttujan nimi, 1000 on muuttujan arvo. Kommentissa sanotaan, että tämä on vilkkumisen aikaväli millisekunteina.

void setup()(
// aseta digitaalinen nasta lähdöksi:
pinMode(ledPin, OUTPUT);
}

Toiminto on tuttu edellisestä esimerkistä, vain tässä nastaa ei ilmaista eksplisiittisesti vaan muuttujan kautta ledPin, jota kuvaamme vakiona ja jonka arvo on 13. Eli tämä vastaa sitä tosiasiaa, että jos se kirjoitettaisiin pinMode(13, OUTPUT);

No, ohjelman varsinainen runko:

void loop()
{
// tähän laittaisit koodin, jonka on oltava käynnissä koko ajan.

// tarkista, onko aika vilkkua LED-valoa; eli jos
// ero nykyisen ajan ja viimeisimmän räpäytyksen välillä
// LED on suurempi kuin haluttu aikaväli
// vilkuttaa LEDiä.

Tässä kommentit kuvaavat ohjelman toimintaa. Muuten, voit käyttää yhdistelmää /*teksti*/ jokaiselle riville kirjoittamisen sijaan // . Tässä sanotaan, että kun ero nykyisen ja viimeisen LED-valon vilkkumisen välillä on suurempi kuin määritetty aikaväli, sinun on sytytettävä LED uudelleen.

etumerkitön pitkä virtaMillis = millis();

Ilmoitetaan tyyppiä unsigned long oleva currentMillis-muuttuja, joka tallentaa operaattoritiedot millis(). millis()- MK:n sisäinen operaattori ilmoittaa kuinka monta millisekuntia ARDUINO on toiminut.

if (nykyinenMillis - edellinenMillis >= intervalli) (
// tallentaa LED-valoa viimeksi vilkkuneena
previousMillis = nykyinenMillis;

Pääsimme laskelmaan. Nyt löytyy ihana if-kunto-operaattori (if) - joka on ollut käytössä, on käytössä ja tulee olemaan käytössä vielä pitkään. Tarkastellaanpa sitä tarkemmin. Ehtojen rakenne näyttää tältä:

if (ehto==arvo)(

Toimi, jos ehto täyttyy

muu(

Toimi, jos ehto ei täyty

==-merkki voi muuttua mille tahansa muuksi >-merkiksi,<,>=, <=, != (не равно). Условие как и значение может высчитываться. Если условие не выполнено то программа переходит в секцию else. Довольно часто секцию else не используют а просто пишут программу дальше. Это уже зависит от алгоритма работы программы и должно быть продумано заранее. Условий может быть сколько угодно и они могу быть вложены друг в друга, т.е. пока не выполнится одно условие- другое даже выполняться не начнет.

Joten if-lause vähentää edellisen arvon nykyisestä millisekunnista ja vertaa sitä välimuuttujaan. Jos arvo on pienempi, ohjelma poistuu ehdosta ja aloittaa alusta, jos se on suurempi tai yhtä suuri kuin, niin previousMillis-muuttujalle annetaan nykyinenMillis-arvo ja ohjelma siirtyy seuraavaan vaiheeseen:

// jos LED ei pala, laita se päälle ja päinvastoin:
jos (ledState == LOW)
ledState = KORKEA;
muu
ledState = LOW;

Tässä osiossa selvitetään, mikä tila LEDillä on, jos LEDiin syötettiin LOW, niin ledState-muuttujalle annetaan arvo HIGH ja päinvastoin (osio muu), jos korkea taso oli HIGH, niin ledState. muuttujalle annetaan arvo LOW. Huomaa, että jos käytetään tässä ilman (). Tämä on sallittua, jos sinun ei tarvitse käsitellä enempää kuin 1 rivi suoritusosiossa.

// aseta LED muuttujan ledState kanssa:
digitalWrite(ledPin, ledState);

Ja lopuksi kirjoitamme muuttujan ledPin arvoon (se oli 13), muuttujan ledState arvoon. Nuo. tämä merkkijono voidaan kirjoittaa muodossa digitalWrite(13, LOW); tai digitalWrite(13, KORKEA); riippuen MC:n käyttöajasta. Huomaa, että käytetään digitalWrite-operaattoria - hän ilmoittaa, että arvo on välitettävä loogisessa muodossa, ts. nolla tai yksi. Se ei voi ottaa enempää arvoja. Kaikki muut ledState-arvot asetetaan automaattisesti boolean 1:ksi.

}
}

Tässä on toisen ohjelman työ. Mitä eroa on ensimmäisellä ja toisella ohjelmalla, jos ne suorittavat saman toiminnon, mutta toiseen kirjoitetaan 5 kertaa enemmän rivejä? Kuten sanoin, ensimmäinen ohjelma yksinkertaisesti odottaa, että viiveoperaattori lopettaa työnsä ja vasta sitten jatkaa toimintaansa. Viiveen aikana et voi käsitellä tietoja. Toisen ohjelman avulla voit vastaanottaa, käsitellä ja lähettää tietoja LEDin vilkkuessa. Lisää vain tarvittava koodi silmukkaosaan ja nauti työstä! Ystäväni ja minä laskimme, että koodia ajetaan toisessa tapauksessa noin 4 miljoonaa kertaa sekunnissa, joten viiveitä ei käytännössä ole.

No, nyt se tärkein asia. Jonkin ajan kuluttua, kun olet pelannut tarpeeksi, sanot: "Mitä järkeä on vilkkua hehkulamppua... Missä voin käyttää sitä? Vain merkki siitä, että laite toimii ... "Et ole täysin oikeassa. Sinulla on työkalu, mitä voit tehdä sillä, on vain sinun vikasi, jos et ajattele mitään. Se on kuin antaisi kenelle tahansa täydellisen työkalusarjan ja pyytäisi häntä tekemään jotain, esimerkiksi antamaan miehelle puusepän työkaluja, joku suunnittelee samaa lautaa koko elämänsä ja ihmettelee puhtautta, jolla lentokoneet lentävät ja yrittää teroittaa rautapalaa mahdollisimman jyrkästi, niin joku tekee sitten laadukkaita huonekaluja juuri tähän aikaan. Kenen päätät, on sinun päätettävissäsi. Toinen jostain lukemani neuvo, jota en edes muista, on "ÄLÄ ETSI ONGELMIA, ETSI NIIDEN RATKAISUT!" Jos käytät tätä lähestymistapaa, sinulla on paljon vähemmän tietoa MITEN ja MIKSI. No, nyt vilkkuvasta LEDistä. Netistä löytyy paljon vinkkejä erilaisten indikaattoreiden käyttöön, tietysti se on kaunista, antaa tekijälle jonkinlaisen merkityksen jne... mutta se koskettaa tärkeintä - pinssien ja muistin säästämistä. Ilmaisimen 1602 kytkemiseksi sinun on otettava 6 digitaalista nastaa + 2 virtajohtoa! Tämä tapahtuu, jos et käytä I2C-protokollaa. Lisäksi LCD-näytön kirjasto kestää 4 kt. Ja kukaan ei ajattele lisätoimintoja, no, he leikkivät indikaattorilla ja siinä kaikki, he myös hylkäsivät sen. Kukaan ei varmaankaan ihmetellyt, että kaikki tarvittava tieto on mahdollista saada yhdellä LEDillä? Esimerkiksi virheet. Kirjoita funktio ja välitä sille virhekoodi. Tämä on kätevää - sinun ei tarvitse purkaa koodia uudelleen, vaan katso vain, mikä ei toimi sillä tavalla. Tai vaikkapa ystäväni kokosi ARDUINO miniin kaasukattilaohjaimen, ts. talon lämpötilan mukaan (tallensi Dallas-anturi), kiertovesipumppu kytkettiin päälle / pois päältä. Kun pumppu sammutettiin, kattila lämpeni 40 ° C:seen ja seisoi sytyttimellä, huoneen lämpötila laski - pumppu käynnistyi ja kun jäähdytysneste jäähtyi, kattila käynnistyi itsestään. Erittäin kätevä ja siellä säästyi huomattavasti kaasua! Kaiken kaikkiaan noin 200-300 ruplalla hän säästi useita kuutiometrejä kaasua joka päivä! Sitten hän mietti - kuinka seurata huoneen lämpötilaa ilman WiFi-yhteyttä ja tietokoneita, ehdotin - anna LEDin vilkkua niin monta kertaa kuin huoneessa on asteita... He nauroivat tietysti - voit tehdä virheen laskin 20-25 kertaa, sitten ehdotin - vilkkukoon ensin kymmeniä asteita ja tauon jälkeen - yksiköitä, esim. 24 astetta, ensin välähti 2 kertaa, tauon jälkeen vielä 4. Kaikki! Ei enää indikaattoreita! Ja sitä voidaan soveltaa millä tahansa alueella! Etsi epätyypillisiä lähestymistapoja ja yritä säästää energiaa ja panoksia. Vaikka käytät I2C:tä. Onnea kaikille MK:n ja erityisesti ARDUINO:n hallitsemiseen.

Jos löydät virheen, valitse tekstiosa ja paina Ctrl+Enter.