Blink projekti. Treperi LED

Svaki programer kućne mikroelektronike, prije ili kasnije, suoči se s potrebom da upravlja vlastitim ručno izrađenim uređajem putem daljinskog upravljača koji će biti zgodan za prebacivanje načina rada ili jednostavno pregledavanje trenutnog stanja. Općenito, fraza "programer kućne mikroelektronike" prije 15 godina izazvala bi užasan smijeh, jer u to vrijeme niko nije mogao zamisliti da će se neko kod kuće petljati sa minijaturnim pločama, baviti se firmverom i zaista. Ali pokazalo se da su se pojedinačni entuzijasti pretvorili u domaćine entuzijasta, a sam posao je dobio masovni promet.

No, godine su prošle i tvrdoglave kompanije stvorile su pravu nišu, cijelo tržište na kojem se spremaju milioni entuzijastičnih neprofesionalaca, entuzijastično sklapajući još jedan “arduino uređaj”. Upravo ti entuzijasti plaćaju velike pare proizvođačima štitova i senzora, a postoji potreba da se svojim pametnim uređajima upravlja pomoću daljinskog upravljača. I, začudo, njihova potreba je zadovoljena na najelegantniji mogući način. Blynk je rođen.

Blynk app

Šta Blynk donosi ljubitelju kućne automatizacije? Odgovor na postavljeno pitanje je dvojak. S jedne strane - nimalo ne puno, ali s druge strane, malo se pretvara u gotovo polovinu "troška" cijelog projekta. Blynk vam omogućava da pretvorite običan pametni telefon ili tablet koji koristi Android ili iOS u pravu kontrolnu ploču za elektroniku koju sami razvijaju. Blynk se vrlo dobro uklopio u Arduino eko strukturu i pojavio se u najpovoljnijem trenutku.

U stvari, Blynk nije ništa drugo do aplikacija za mobilni uređaj koja vam omogućava da kreirate potpuno opremljene aplikacije u obliku grafičkog dizajna za njihovo povezivanje s Arduino baziranim i kompatibilnim uređajima (istinito govoreći, bit će ih još mnogo kompatibilne platforme uskoro). Glavnom karakteristikom Blynka sa sigurnošću mogu nazvati jednostavnost kojom se kreira i sama aplikacija i način na koji se implementira veza s programskim kodom u uređaju.

Međutim, da biste započeli i nastavili, samo trebate instalirati Blynk aplikaciju na svoj mobilni ili tablet. Zatim samo pređite prstom preko ekrana, postavite elemente kao što su dugmad, klizači, prekidači, sijalice, ploteri i još mnogo toga. Svaki element ima mogućnost konfiguracije nekoliko parametara, ali osnova leži u vezivanju kontrola ili displeja za pinove fizičkog uređaja. I same igle mogu biti stvarne, fizičke ili virtualne. Ali preporučio bih rad s virtualnim, jer se logika njihove obrade može konfigurirati mnogo fleksibilnije nego s fizičkim.

Na strani uređaja, samo trebate spojiti biblioteku, postaviti vezu između izvornog koda i registracionog koda instalirane aplikacije, staviti u petlju obrađivač događaja, da... Da, općenito, to je sve. Ako je aplikacija vezana samo za fizičke igle, ništa drugo ne treba raditi.

Upravo tako, dobijate praktičan daljinski upravljač za svoj uređaj, koji može ne samo da mu šalje komande, već i prikazuje sve što vam je potrebno na ekranu. Programeri se nisu ni zamarali naprednom i detaljnom dokumentacijom. Sve je skupljeno u jednom dokumentu na jednoj stranici Blynk web stranice. Pa, dobro, radi lakše implementacije, šaljem programerima puno "poštovanje"!

Odakle je Blynk došao?

Pojava Blynka nije se dogodila čisto slučajno. Čak bih primijetio da rođenje Blynka nije ništa drugo do uzoran, sretan slučaj uspješnog crowdfundinga. Izvjesni Pasha Baidurin, nadam se da nisam iskrivio ime, pokrenuo je Kikstarter kampanju sa skromnim iznosom od samo 10.000 dolara. Kao rezultat toga, kampanja je dobila pet puta veći iznos, što joj je omogućilo da se okrene do maksimuma. Prikupljanje sredstava počelo je sredinom januara 2015. godine i do kraja mjeseca prikupljeno je potreban iznos sredstava. To je upravo način na koji mozak osvaja plijen, namotajte ga na brkove.

Za nešto manje od godinu dana, a pišem recenziju u decembru 2016., Blynk je uspio odrasti, steći sve potrebne atribute i, nadam se, uspio je prevladati problem rasta i pretvoriti se u punopravnu korporaciju . Barem se sada Blynk nudi ne samo za fizička lica, već i za pravna lica. Modeli monetizacije za različite tipove korisnika se razlikuju, ali više o tome u nastavku.

Jedinstvenost poslovnog modela

Dakle, šta je još jedinstveno kod Blynka osim mogućnosti da kreirate telefonsku aplikaciju za pet minuta i povežete je sa Arduinom za dodatnih pet? Ono što ga čini jedinstvenim je primijenjeni poslovni model. U svetu softvera prihvaćeni su standardni uslovi korišćenja proizvoda: Freeware (besplatno), Shareware (shareware, sa probnim periodom), Donationware (platite ako vam se sviđa), plaćeni proizvodi. Razne kombinacije su dozvoljene, na primjer, za privatnu upotrebu, proizvod može biti besplatan, dok korporativni sektor mora platiti svaki primjerak. Međutim, postoje i druge vrste licenci, na primjer, mnoge OpenSource, kada se proizvod smatra nekom vrstom izvornog koda dostupnog svima. Ali hajde da ne ulazimo u divljinu i da izbliza pogledamo Blynka.

Interfejs u aplikaciji Blynk na pametnom telefonu

Standardno, običnom privatnom korisniku koji je preuzeo Blynk sa tržišta daje se ograničeni skup, ne, ne elemenata, već baterija. Ova naknada se troši na korištenje elemenata interfejsa za kreiranje vaše aplikacije. Recimo da u početku imate vrijednost od 1000 jedinica punjenja. Svako dugme instalirano u projektu koštaće vas 200 jedinica, a nešto komplikovanije, na primer, graditelj grafova, izaći će već za 400. Tako, gradeći svoju aplikaciju od elemenata, trošite energiju koja vam je prvobitno dodeljena. Kada se energija potroši, više neće biti moguće dodavati nove elemente aplikaciji. Ili ćete morati kupiti dodatnu energiju za pravi novac, a operacija je krajnje jednostavna, kao i sve ostalo u Blynk-u, ili izbrisati stavke iz aplikacije. Kada se ukloni, energija utrošena na instalaciju se vraća u potpunosti.

Stoga programeri omogućavaju novom korisniku da procijeni mogućnosti Blynka i kreira barem jednu više ili manje funkcionalnu aplikaciju. A onda – ako želite da platite, ako ne želite, rastavite ono što ste napravili i ponovo upotrebite. Jedinstvenost situacije leži u činjenici da se korisniku nudi da kupi ne aplikaciju, ne pretplatu na nju, ne ograničenje prometa, već elemente sučelja njegove aplikacije! Punjenje Blynk baterije nije skupo i može se klasifikovati kao mikroplaćanje. Stoga se rastanak s teško zarađenim novcem odvija neprimjetno i bezbolno.

Ali ipak cijenim ideju. Zamislite da koristite MS Word i od vas se traži da napišete tekstove od najviše deset stranica. A da biste napisali jedanaestu, morat ćete ili kupiti više virtuelnog papira ili podići sažetost do dobrotvora i svesti tekst na minimum. I nakon ispisa, potpuno izbrišite sve. Unatoč apsurdnosti implementacije primjera, sve funkcionira s Blynkom. I radi odlično.

Za korporativne korisnike, čiji je rad direktno povezan s izdavanjem aplikacija u komercijalne ili skoro komercijalne svrhe, nudi se nešto drugačija shema plaćanja za rad programera u Blynk-u. Korporacije dobijaju samostalnu aplikaciju koja ne radi u Blynk sandboxu, već odvojeno. Blynk će i dalje biti tamo, skriven iza fasade. I morat ćete platiti pretplatu tokom koje će aplikacija ostati operativna.

Zamislite da proizvodite ultrazvučne ovlaživače zraka. Već ste svaki od svojih modela ukrasili plavim LED diodama i ozbiljno razmišljate kako i tamo ušrafiti IoT. Blynk vam pruža gotovo gotovo rješenje. Zašrafite nešto poput ESP8266 na ovlaživač i ponudite korisnicima da preuzmu aplikaciju. Voila! Sve radi, svi su zadovoljni. Točno sve dok ne odlučite da izbacite novu, poboljšanu liniju ovlaživača, koji se razmeću ne samo plavim, već i ljubičastim LED diodama. I sasvim razumno vjerujete da više ne možete plaćati staru aplikaciju. To troši novac, a vrijeme je da potrošač dođe po novi ovlaživač, jer imate djecu, ona moraju na fakultet.

Programabilni životni vijek potrošačkih proizvoda je njegovani san svakog proizvođača. Rješavanje koje je, uz pomoć Blynka, vrlo jednostavno. Kao, međutim, i sve što se tiče Blynka.

Šta je zauzvrat?

Ali nisu svi pojedinci spremni da plate novac, posebno za nešto što se može učiniti besplatno. I misao ljudi je trenutno orijentisana, entuzijasti počinju da iskapaju alternativne opcije za besplatnu upotrebu analoga Blynk funkcija. I koliko god to čudno zvučalo, ja sam jedan od njih.

Web server

Najlakši način za implementaciju daljinskog upravljanja, rekao bih, je korištenje web servera na svom uređaju. Takvi moderni čipovi kao što su EPS8266 i mnogi drugi omogućavaju vam povezivanje na IP mreže, uključujući lokalne mreže u stanu, pa čak i s pristupom Internetu. A u memoriji kontrolera ima dovoljno slobodnog prostora za smještaj punopravnog servera.

Shodno tome, na takvom uređaju možete postaviti jednostavan web server optimiziran za ekrane mobilnih uređaja. Možete ga pozvati preko prečice na radnoj površini vašeg pametnog telefona. Da, u većini slučajeva i uređaj i mobilni bi trebali biti unutar iste mreže, ali koliko često vam padne na pamet da uključite ovlaživač zraka kod kuće kada ste i sami na Himalajima, penjući se užadima na sljedeći vrh?

Kada koristite opciju web servera, morat ćete obraditi odgovore klijenta i prikazati kontrole kao HTML. Možda neće ispasti tako lijepo i brzo kao kod Blynka, ali je potpuno besplatno.

Cayenne

Dodavanje stavki na kontrolnu tablu u Caynneu (preglednik)

Šta je urađeno? Uz pomoć Cayenne stručnjaka, metoda CayenneWiFiClient je preopterećena, u kojoj je dodan konstruktor za kreiranje Cayenne objekta kojem je proslijeđen samo identifikator autentifikacije na servisu Cayenne. U tom slučaju morate sami stvoriti internetsku vezu.

Potrebno je nadograditi standardnu ​​Cayenne biblioteku i staviti izmijenjenu datoteku u direktorij sa svojom skicom:

#ifndef _CAYENNEESP8266WIFICLIENT_h #define _CAYENNEESP8266WIFICLIENT_h #include "CayenneClient.h" klasu CayenneWiFiClient: javni CayenneClient (javno: /** * Počinje Cayenneeps do WiFi mreže * lozinka */ void begin(const char* token, const char* ssid, const char* pass) ( Blynk.begin(token, ssid, pass, CAYENNE_DOMAIN, CAYENNE_PORT); ) /* void config(const char* auth, const char * domain = CAYENNE_DOMAIN, uint16_t port = CAYENNE_PORT) ( Base::begin(auth); this->conn.begin(domain, port); )*/ void config(const char* auth) ( Blynk.config(auth, CAYENNE_DOMAIN) , CAYENNE_PORT); ) ); CayenneWiFiClient Cayenne; #endif

I sama skica:

#include #define CAYENNE_PRINT Serial // Komentirajte ovo kako biste onemogućili ispise i uštedjeli prostor #include "CayenneDefines.h" #include "BlynkSimpleEsp8266.h" #include "CayenneESP8266WiFiClient.h" #define VIRTUAL_PIN LED na DIN ploci #definiraj VIRTUAL_PIN LED na VP04 pločici token = "YourCayenneSecurityToke"; const char* ssid = "Vaša WiFiNetwork"; const char* password = "YourWiFiNetworkKeyPhrase"; void setup() ( // stavite svoj kod za podešavanje, da se pokrene jednom: Serial.begin(115200); Serial.println("YaHoo..."); WiFi.mode(WIFI_STA); WiFi.begin(ssid, lozinka ); while (WiFi.waitForConnectResult() != WL_CONNECTED) ( Serial.println("Connection Failed! Rebooting..."); delay(5000); ESP.restart(); ) Cayenne.config(token); pinMode( ledPin, OUTPUT); ) CAYENNE_IN(VIRTUAL_PIN)( int value = getValue.asInt(); // Dobiti vrijednost kao cijeli broj Serial.print("Primljena vrijednost V1P: "); Serial.print(value); Serial.println(" "); if (value==1)( digitalWrite(ledPin, LOW); )else( digitalWrite(ledPin, HIGH); ) ) void loop() ( // stavite svoj glavni kod ovdje, da se izvodi više puta: Cayenne.run (); kašnjenje(100); //Serial.print("."); )

Ako ništa nije jasno iz gore navedenog, pokušaću da objasnim. Prvo, Cayenne se oslanja na Blynk... Da, Cayenne koristi Blynk, ali ne aplikaciju koju sam opisao nekoliko paragrafa gore, već Blynk framework, objavljen pod MIT licencom. Dakle, ispada da i Blynk aplikacija i Cayenne, na ovaj ili onaj način, obavljaju istu funkciju. U stvari, tako je.

Gotova kontrolna tabla u Cayenneu kada se gleda kroz pretraživač

Razlika između projekata je sljedeća: Blynk se fokusira na mobilnu aplikaciju i jednostavnost razvoja aplikacija, Blynk je već aktivno monetiziran. Cayenne, osim mobilne aplikacije, na svojoj web stranici nudi i potpuno funkcionalan kontrolni panel. A ipak ne prikuplja novac od svojih korisnika. Koncept rada Cayennea je identičan onom kod Blynka. U aplikaciji ili putem web pretraživača korisnik kreira projekat, dodaje dugmad, sijalice i druge indikatore koji se mogu povezati sa virtuelnim ili stvarnim pinom vašeg uređaja. Uz to, Cayenne ima mehanizam za okidače i događaje. Okidači upravljaju događajima primljenim od uređaja. A model događaja je zasnovan na kalendarskom rasporedu.

Komunikacija između uređaja i aplikacije se obavlja na isti način kao i kod Blynka, dodavanjem malih dijelova programskog koda za obradu poslovne logike ugrađene u vaš uređaj. Ali u početku je projekat bio izbrušen da koristi minimalnu količinu programiranja na strani klijentskog uređaja. Sve bi nekako trebalo da pokupe Cayenne biblioteke. Upravo iz tog razloga u Cayenneu možete pronaći mnoge ploče i opcije za povezivanje na mrežu, uključujući razne senzore određenih proizvođača. S jedne strane, raznolikost smanjuje potrebu za programiranjem skica, s druge strane smanjuje mogućnost korištenja univerzalnih uređaja.

Interfejs Cayenne operativnog panela na tabletu

Iz tog razloga sam imao poteškoća kako spojiti Cayenne na već povezanu Wi-Fi vezu. I morao sam objasniti programerima zašto mi je to potrebno. Moguće je da je sistem zamišljen za početni nivo obuke krajnjih programera, na šta posredno ukazuje i broj primera skica koji izlaze uz svaku radnju.

Malo iznenađen graditeljem na web stranici. Morate se naviknuti na njegovu logiku. Prvo dodajemo uređaj, dobijamo identifikacioni kod, zatim ga povezujemo na uređaj i pokušavamo da se povežemo na Cayenne servere. Ako smo uspjeli u povezivanju, na povezani uređaj će biti moguće povezati widgete, dugmad, semafore i druge alate za vizualizaciju.

Sumirajući nakon testiranja Cayennea, mogu reći da nisam mogao odlučiti da li mi se sistem sviđa ili ne. S jedne strane, da, sve što se od nje traži je na svom mjestu. S druge strane, stalno sam imao osjećaj da je tu nešto nedovršeno. Razumljivo, sistem je nov i plan rada za implementaciju svih funkcija još nije završen. Još više zabrinjava mamac Try it for Free, bez ikakve publikacije, ali šta se dešava kada se „testni“ period završi? Barem u ovom trenutku (decembar 2016.), Cayenne možete koristiti u vlastite svrhe bez ikakve naknade, trenirati, kreirati vlastite aplikacije. I što je najvažnije - nema ograničenja u smislu skladištenja energije u bateriji.

Virtuino

Za razliku od Blynka ili Cayennea, Virtuino razvija jedna osoba. I uprkos vrlo ograničenim resursima, rezultat se pokazao ništa lošijim, a možda čak i boljim od gore opisanog. Dakle, Virtuino je plod marljivosti grčkog programera, koji se može naći i na zasebnoj stranici (na grčkom) i direktno na stranici za preuzimanje Virtuino aplikacije sa tržišta. Za one koji su u žurbi da se bore, dajem direktnu vezu do tutorijala o povezivanju Virtuina, jer u početku procedura možda neće biti trivijalna.

Kao i Blynk, Virtuino koristi samo mobilnu aplikaciju za kreiranje korisničkog interfejsa. Kao i Cayenne i Blynk, Virtuino koristi tehnologiju aplikacija u aplikaciji. To znači da vaš rad ostaje u pješčaniku Virtuina i ne može postojati odvojeno od Virtuina. Ali Virtuino također ima razliku od dva konkurenta. Virtuino ne koristi posredni server.

Virtuino sučelje aplikacije na tabletu

Na ovoj činjenici ću se zadržati malo detaljnije, jer je ona za mene ključna. Blynk i Cayenne koriste serversku stranu i rade samo preko nje. Ne možete pristupiti uređaju bez internetske veze, barem za veze koje nisu Bluetooth i USB veze. A ako je veza nestabilna, tada će se vaša skica usporiti na mrežnim vezama. Za neke aplikacije usporavanje izvršavanja instrukcija može biti vrlo kritično. Štaviše, i Blynk i Cayenne mogu da rade ispod ozbiljnog NAT-a, što znači da će vaš uređaj periodično anketirati, bukvalno u svakom ciklusu, server na Internetu. Ako je veza loša, izvođenje skice možda uopće neće ići kako je prvobitno zamišljeno.

U Virtuinu programer može ići na dva načina. Prvo, može koristiti ThingSpeak uslugu kao isti posredni server. I drugo, komunikacija između aplikacije i uređaja se odvija pomoću web servera podignutog na samom uređaju! Da, u ovom slučaju, pristup uređaju izvan vaše lokalne mreže će najvjerovatnije biti nemoguć. S druge strane, malo ljudi to treba. Ali nema kašnjenja i problema sa eksternom vezom. Sve je implementirano transparentno do nemogućnosti, to je ono što nedostaje IoT gigantima. Kada radite sa Cayenneom, stalno imate osjećaj da se u svakom trenutku može uvesti naknada za korištenje usluge, a Blynkove cijene će biti podignute i vaš već plaćeni set će biti nefunkcionalan. Uz Virtuino, nastavit ćete koristiti aplikaciju i upravljati svojim uređajem pomoću nje. U svakom slučaju, aplikacija se ne može ažurirati.

Kao i Cayenne, Virtuino ima ožičenu mogućnost povezivanja na Wi-Fi mrežu koristeći Virtuino bez mogućnosti korištenja već uspostavljene veze. Prisustvo dva identična pristupa implementaciji dovodi do nesretnih misli. Iz nekog nevjerovatnog razloga, programeri značajno ograničavaju korisničko iskustvo svojih proizvoda. Ako sam s Cayenneom uspio riješiti problem korištenja vlastite mrežne veze, onda u Virtuinu nisam uspio. Čak i uz pomoć programera, nisam uspio povezati svoj ESP8266 na mrežu i koristiti Virtuino. Poenta je da Virtuino podržava ESP8266 samo kao eksterni Wi-Fi modul za Arduino, a ne kao samostalnu ploču. I potpuno sam prešao na ESP8266 u svojim uređajima s obzirom na njihove izvanredne karakteristike.

Da, u težnji da potrošaču olakšaju život, neki programeri tjeraju njega, potrošača, u vrlo uske granice i ne dozvoljavaju mu da ih pređe. Na primjeru 1C, sjećamo se da što je platforma fleksibilnija i otvorenija, to je više uspjeha čeka na tržištu. Gdje su sva ta "jedra", "galaksije" i "abakusi"? Međutim, kontaktirao sam programera i saznao njegove trenutne planove. Prije svega, bit će implementirani prilagodljivi gumbi i indikatori. Ovaj posao bi trebao biti završen do objavljivanja članka, a onda će doći red na dodavanje novih ploča u redovnu biblioteku. Nadam se da će se izvorna podrška za ESP8266 za Arduino pojaviti u biblioteci.

Općenito, Virtuino je na mene ostavio vrlo povoljan utisak, prije svega, činjenicom da postoji mogućnost da se ne koristi srednji server. Ali ograničeni resursi jedne osobe ne dopuštaju implementaciju svih ideja odjednom, na primjer, dodati englesku verziju stranice ili stvoriti univerzalnu verziju svoje biblioteke, a istovremeno je staviti na GitHub. Radujemo se daljem razvoju i novostima od Illiasa.

zaključci

Veoma sam zadovoljan činjenicom da su se počele pojavljivati ​​implementacije stvarne konvergencije mobilnih uređaja i uređaja iz IoT svijeta. Sve dok ne budemo imali mogućnost da lako komuniciramo sa našim uređajima, ako je moguće preko jednog ili univerzalnog interfejsa, neće se posmatrati ukupni marš IoT-a širom planete. Čovjek je takva zvijer koja je previše lijena da se navikne na nešto novo, a prisustvo desetak različitih interfejsa za upravljanje IoT uređajima će uzrokovati beskrajne egzistencijalne bolove u zglobovima krajnjeg korisnika.

Naravno, ne treba računati na totalno ujedinjenje. Sjećate li se priče o pametnim kućama? Kada je došao kraj čitavom bumu? A sve zbog nekompatibilnosti sistema jedan s drugim i nedostatka jasnog, jedinstvenog standarda. Sličan rizik postoji i kod IoT-a. U principu, nekako smo se snašli i bez pametnih utikača, frižidera i mašina za pranje veša, a dodavanje novih „pametnih“ funkcija ne dodaje veliku vrednost uređajima. Stoga ćemo pomno pratiti borbu za kuhanje, moguće je da će jedna od gore navedenih metoda komunikacije između osobe i uređaja pobijediti pred našim očima. Da vidimo, da vidimo.

Programiranje raznih mikrokontrolera i mikroračunara, kao što su Arduino, Raspberry Pi i slični, jedna je od najzanimljivijih i najrelevantnijih aktivnosti. Dizajniranje uređaja na ovim platformama prevazišlo je hobi štrebera i profesionalnih programera: ove ploče se koriste za izradu robota, alatnih mašina, kvadrokoptera, IoT uređaja (pametne kuće), servera, pa čak i Hi-Fi audio interfejsa.

Nažalost, tržište mikrokontrolera je veoma segmentirano. Njihovo programiranje se odvija kroz različita okruženja i interfejse. Situacija je pozvana da spasi projekat pod nazivom Blynk.

Blynk je usluga zasnovana na oblaku za kreiranje grafičkih kontrolnih panela i pogodna je za širok spektar mikroračunara i mikrokontrolera. Gdje je ranije bilo potrebno napisati punopravni I/O sučelje ili kupiti dodatne module za prikupljanje informacija sa senzora, sada možete proći sa pet minuta rada u Blynku.

Za kreiranje vlastitog projekta kojim se upravlja putem Blynka, potrebno vam je vrlo malo: instalirati aplikaciju (dostupne su verzije za iOS i Android) ili koristiti web obrazac. Ovdje ćete se morati registrirati u jednom koraku - unesite svoju e-poštu i lozinku. Registracija je neophodna zbog činjenice da je Blynk rješenje u oblaku i bez njega svaki korisnik može dobiti kontrolu nad komadom željeza.

Oni koji žele mogu instalirati server lokalno. U ovom slučaju pristup Internetu nije potreban.

Rad aplikacije zahtijeva određene vještine. Prvo morate povezati računar ili pametni telefon sa programabilnom pločom. Program podržava povezivanje sa pločama preko raznih interfejsa:

  • USB (serijski)
  • Adafruit CC3000 WiFi,
  • Zvanični Arduino WiFi štit,
  • Zvanični Ethernet štit (W5100),
  • ENC28J60,
  • ESP8266 (WiFi modem),
  • SeeedStudio Ethernet Shield V2.0 (W5200),
  • RN-XV WiFi,
  • ESP8266.

Osim postavljanja veze, potrebno je samo pravilno povezati module budućeg uređaja. Nakon toga, u radnom obliku aplikacije potrebno je dodati dostupne module (widgete), konfigurirati potrebne izlazne adrese i odrediti željene parametre (ako je potrebno, možete napisati vlastiti kod). Inače, drag’n’drop se koristi za kreiranje widgeta ili programa. Za upravljanje je dostupno mnogo simulatora upravljačkih uređaja - prekidača, klizača, displeja, za svaki od kojih možete napisati svoju logiku. Postoje odvojeni oblici za prikaz i organizovanje informacija sa potrebnih senzora u obliku grafikona.

Dakle, platforma je pogodna i za početnike i za naprednije korisnike koji ne žele trošiti vrijeme na pisanje aplikacija za upravljanje projektima: od čitanja podataka s meteorološke stanice i upravljanja pametnim domom do upravljanja robotima.

Sve informacije koje su vam potrebne za početak dostupne su na službenoj web stranici. Blynk je , tako da svi mogu učestvovati u kreiranju novih funkcija. Trenutno je korištenje usluge potpuno besplatno, u budućnosti će se situacija donekle promijeniti – prvenstveno zbog monetizacije novih funkcija. Dakle, već je poznato da će pristup GPIO interfejsima biti kupljen kao kupovina u aplikaciji.

Blynk trenutno radi sa sljedećim pločama:

  • Arduino: Uno, Nano, Mini, Pro Mini, Pro Micro, Mega, YÚN (most), Due;
  • Raspberry Pi;
  • Čestica (bivši jezgro Spark);
  • ESP8266;
  • TinyDuino (CC3000);
  • Wicked WildFire (CC3000).

  • Otpornik 220 oma

Circuit

Ovaj primjer koristi ugrađenu LED diodu koju ima većina Arduino i Genuino ploča. Ova LED dioda je povezana na digitalni pin i njen broj može varirati od tipa ploče do tipa. Da bismo vam olakšali život, imamo konstantu koja je navedena u svakoj datoteci deskriptora ploče. Ova konstanta je LED_BUILTIN i omogućava vam laku kontrolu ugrađenog LED-a. Evo korespondencije između konstante i digitalnog pina.

  • D13-101
  • D13- Rok
  • D1-Gemma
  • D13 - Intel Edison
  • D13 - Intel Galileo Gen2
  • D13 - Leonardo i Mikro
  • D13 - LilyPad
  • D13 - LilyPad USB
  • D13-MEGA2560
  • D13 - Mini
  • D6-MKR1000
  • D13-Nano
  • D13-Pro
  • D13-Pro Mini
  • D13- UNO
  • D13 - Jun
  • D13-Nula

Ako želite da upalite eksternu LED diodu sa ovom skicom, potrebno je da napravite ovo kolo, gde spojite jedan kraj otpornika na digitalni pin koji odgovara na LED_BUILTIN konstantan. Povežite dugu nogu LED diode (pozitivnu nogu, koja se zove anoda) na drugi kraj otpornika. Spojite kratku nogu LED-a (negativna noga, nazvana katoda) na GND. Na donjem dijagramu prikazujemo UNO ploču koja ima D13 kao LED_BUILTIN vrijednost.

Vrijednost otpornika u seriji sa LED-om može biti drugačija od vrijednosti od 220 ohma; LED će se upaliti i sa vrijednostima do 1K ohma.

Shematski

Kod

Nakon što izgradite kolo, uključite svoju Arduino ili Genuino ploču u svoj računar, pokrenite Arduino softver (IDE) i unesite kod ispod. Takođe ga možete učitati iz menija File/Examples/01.Basics/Blink . Prva stvar koju uradite je da inicijalizirate LED_BUILTIN pin kao izlazni pin sa linijom

pinMode(LED_BUILTIN, OUTPUT);

U glavnoj petlji palite LED sa linijom:

digitalWrite(LED_BUILTIN, HIGH);

Ovo dovodi do 5 volti LED anode. To stvara razliku napona na pinovima LED-a i pali ga. Zatim ga isključite linijom:

digitalWrite(LED_BUILTIN, LOW);

To vraća LED_BUILTIN pin na 0 volti i isključuje LED. Između uključivanja i isključivanja, želite dovoljno vremena da osoba vidi promjenu, tako da naredbe delay() govore ploči da ne radi ništa 1000 milisekundi ili jednu sekundu. Kada koristite naredbu delay(), ništa drugo se ne dešava za to vreme. Kada shvatite osnovne primjere, pogledajte primjer da naučite kako stvoriti kašnjenje dok radite druge stvari.

Kada shvatite ovaj primjer, pogledajte primjer da naučite kako čitati prekidač spojen na ploču.

Dakle, počnimo da učimo. Prva lekcija od vas neće zahtijevati nikakve materijale i jednostavno je dizajnirana da vas upozna s jednostavnošću ARDUINO-a. Kao i kod većine programa, uvod počinje sa "Hello World!" pa ćemo početi s najjednostavnijim - treptanjem LED-a. Šta vam je potrebno za ovo: sama ARDUINO ploča, USB kabl za povezivanje ARDUINO-a na računar, ARDUINO programska školjka. Školjke su objavljene nove, ali verzija 1.0.6 je prepoznata kao najstabilnija. Skinuti možete na službena web stranica. Ovo je verzija za Windows, preuzmite za Linux. Vrijedi odmah shvatiti da će vam za nastavak učenja trebati matična ploča (naručite u Kini ili kupite u online trgovini), žice (možete kupiti na istom mjestu ili pronaći stare sistemske jedinice i izvući žice koje idu do prednji panel, prije je i USB na prednjoj ploči bio spojen pojedinačnim žicama a ne cijelim konektorom, oni su ti koji će vam odgovarati - izvucite žicu, zalemite pinove od konektora na ploči na drugi kraj, zatim stavite mali komad termoskupljajuće cijevi na mjesto lemljenja da žica ne pukne na mjestu lemljenja, zagrijte se i imate gotovu žicu mama (čep sa rupom) - muški (pin sa ploče).

Domaće žice za ARDUINO

Na isti način napravite muško-muške žice, one su korisne za uključivanje matične ploče i povezivanje ARDUINO-a na matičnu ploču. Usput, moguće je, čak i potrebno, napraviti takve žice u obliku petlje - mnogo je praktičnije povezati ARDUINO s blokovima), a blokove s kojima ćete raditi (također kupljeni u Kini ili na internetu prodavnice). Izbor senzora i aktuatora je ogroman i ne ograničava vašu maštu. Ali u početku će senzor temperature biti dovoljan Dallas, indikator (možete, naravno, imati i 7-segmentne LED diode, ali one troše struju nekoliko puta veću od 1602, a to će negativno utjecati kada se napajaju iz baterija i baterija, a prikazuju samo digitalne informacije), relej Sve što vam treba, uvek možete kupiti. Za one koji nisu ograničeni sredstvima, bolje je odmah kupiti set. Iako je malo skuplji, odmah odbacuje sve probleme oko nabavke senzora i odmah ćete moći proizvoditi uređaje. Izbor će i dalje biti vaš. Dobro, pričamo, bliže temi.

Povezujemo ARDUINO na računar, pokrećemo program, u programu idemo na Service-Pay-odaberite svoju ploču, to je sve-možete raditi!

Inače, kineski klon se može sastaviti na čipu ch340 a vašem računaru će biti potreban drajver za USB port. Da biste instalirali, preuzmite drajver, raspakujte i, kada se od vas zatraži upravljački program, pokažite na fasciklu sa raspakovanim datotekama.

Uradite sljedeće bez gubljenja vremena: Datoteka-Primjeri-Osnove-Blink. Otvoriće se novi prozor


Trepnite na ARDUINO-u

u kojem vidite program, možete odmah kliknuti na drugo dugme u panelu programa sa strelicom, program će se kompajlirati i prenijeti u ARDUINO, LED na ploči će početi da treperi! 1 sekunda uključena, 1 sekunda isključeno. Razmotrite sam program. Vidjet ćete prije svega komentare označene sa /* tekst */ i //tekst . Prvi znači da je tekst iz znaka /* do potpisivanja */ je komentar i kompajler jednostavno ne obrađuje i ne uzima u obzir ove informacije, vrlo je zgodno napisati u takvim kombinacijama opis programa, njegov algoritam, autorstvo i još mnogo toga. Potpiši // komentariše samo red. Štaviše, ovaj znak možete napisati i na početku reda i nakon bilo kojeg reda programa, ali ni u kojem slučaju prije redova programa - program će cijeli red smatrati komentarom.

Na primjer:

digitalWrite(13, HIGH); // upali LED diodu (VISOKI je nivo napona)- u redu

// uključiti LED (HIGH je nivo napona) digitalWrite(13, HIGH);- ne valja

Ako želite dati komentar ispred operatora na jednom redu, onda koristite kombinaciju /* tekst */ , one. linija će izgledati ovako: /* upaliti LED (HIGH je nivo napona) */ digitalWrite(13, HIGH);

Pokušajte što češće komentirati svoje postupke, kompajler ih izbacuje iz programa, a vi ćete s vremenom jednostavno zaboraviti šta ste i kako radili.

Sljedeće što ćete vidjeti je sljedeći tekst:

// funkcija podešavanja se pokreće jednom kada pritisnete reset ili uključite ploču
void setup()(
// inicijalizira digitalni pin 13 kao izlaz.
pinMode(13, IZLAZ);
}

Komentar kaže da se funkcija podešavanja poziva samo jednom kada resetujete ili ponovo uključite ARDUINO. One. ili pritisnite dugme za resetovanje na samoj ploči ili ponovo uključite napajanje.

Zatim dolazi operater void setup() (….)- pokretanje sekcije stvarnih postavki za ovu skicu (ovo je naziv programa za ARDUINO).

Sljedeći komentar kaže da definiramo ARDUINO pin 13 kao izlaz. Želim da vas podsjetim da su pinovi ploče opisani na stranici, tako da je 13. izlaz digitalan (što piše u natpisima na izlazima) i može imati samo 2 stanja - uključeno (istovremeno, a na njega se primjenjuje napon od oko 5V), tj. logički 1 (jedan), ili isključeno (bez napona), tj. boolean 0 (nula). Na nuli još uvijek postoji mali napon na pinu, ali su oni niski u odnosu na logičku jedinicu. Osim toga, LED na samoj ploči spojen je na pin 13 kroz otpornik, on je taj koji treperi kada se program izvršava.

pinMode(13, IZLAZ);- pinMode - prevodi se kao pin mod, 13 - broj pina, OUTPUT - izlaz, tj. linija znači da će pin 13 raditi kao izlaz, OUTPUT , ako upišete INPUT onda će to već biti DIGITALNI INPUT, tj. možete obraditi DIGITALNE podatke koji dolaze na ovaj pin.

Ako na pin 13 povežete LED sa otpornikom od 1kΩ u seriji, a drugi pin na GND pin, LED će treptati zajedno sa LED diodom na ploči. Ako ne treperi, obrnite polaritet LED diode.

Sljedeći redovi su program koji opisuje radnje s portom:

// funkcija petlje se izvodi iznova i iznova zauvijek
void loop()(
digitalWrite(13, HIGH); // upali LED diodu (VISOKI je nivo napona)

digitalWrite(13, LOW); // isključite LED tako što ćete učiniti napon NISKI
kašnjenje (1000); // čekaj sekundu


void loop() (…)
- odeljak programa gde su opisane radnje za rad, podaci u ovom ciklusu se mogu menjati i obrađivati ​​u skladu sa uslovima.Komentar kaže da će se sledeći ciklus izvršavati uvek iznova

digitalWrite(13, HIGH);// upaliti LED (HIGH je nivo napona) - digitalWrite - upisati DIGITALNI signal, 13 - pin broj, HIGH - visoki nivo, tj. logička jedinica (napon oko 5V), zatim komentar da palimo LED sa visokim logičkim nivoom.

kašnjenje (1000);// čekati sekundu- kašnjenje (kašnjenje), čekati 1000 milisekundi ili 1 sekundu. Potreban operater, posebno kada se pritisne dugme za obradu, u ovom slučaju se koristi kao indikacija da se sačeka 1 sekunda nakon uključivanja pina 13.

digitalWrite(13, LOW);// isključite LED tako što ćete učiniti napon LOW - kao što prva linija ciklusa označava da pin 13 treba prebaciti, samo sada na LOW nivo - nizak nivo, logička nula (napon je oko 0V).

kašnjenje (1000);// pričekajte sekundu - opet kašnjenje od 1 sekunde prije nego što petlja ponovo počne.

Pokušajte da promenite vrednosti kašnjenja, videćete da se menja trajanje uključivanja i pauze između treptaja.

Program je jednostavan, razumljiv od prvog puta, ali ima nedostatke: operator kašnjenja tjera ARDUINO da čeka dok ne završi svoj rad, tj. u ovom trenutku, MK ne obrađuje nikakve podatke, jednostavno rečeno, čeka izvršenje operatora, u redu ako su vrijednosti niske, ali ako trebate brzo obraditi podatke? Za 1 sekundu podaci se mogu promijeniti više od sto puta, a MK ih ne uzima u obzir, već čeka da se program izvrši. Da ne biste propustili dolazne podatke, možete koristiti sljedeću skicu. Otvaranje skice: Datoteka- Primjeri- Digital- BlinkWithoutDelay. Otvorit će se sljedeći prozor:

/* Treperi bez odlaganja

Uključuje i isključuje diodu koja emituje svjetlost (LED) spojenu na digitalni
pin, bez upotrebe funkcije delay(). To znači da drugi kod
može raditi u isto vrijeme bez prekida LED koda.

Krug:
* LED od pričvršćenog pina 13 na masu.
*Napomena: na većini Arduina već postoji LED na ploči
koji je pričvršćen na pin 13, tako da za ovaj primjer nije potreban hardver.

kreiran 2005
David A. Mellis
8. februar 2010
autora Paula Stoffregena
11. novembar 2013
od Scotta Fitzgeralda

Ovaj primjer koda je u javnoj domeni.

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

// konstante se neće promijeniti. Ovdje se koristi za postavljanje PIN broja:
const int ledPin = 13; // broj LED pina

// Varijable će se promijeniti:
int ledState = LOW; // LEDState se koristi za postavljanje LED-a

// Općenito, trebali biste koristiti "unsigned long" za varijable koje drže vrijeme
// Vrijednost će brzo postati prevelika za pohranjivanje int
unsigned long previousMillis = 0; // će pohraniti zadnji put kada je LED dioda ažurirana

// konstante se neće promijeniti:
const long interval = 1000; // interval u kojem treba treptati (milisekunde)

void setup()(

pinMode(ledPin, OUTPUT);
}

void loop()
{




// treperi LED.

if (trenutni Milis - prethodni Milli >= interval) (


if (ledState == LOW)
LEDState = HIGH;
ostalo
ledState = LOW;



}
}

Preskočite sve komentare i idite na red:

// konstante se neće promijeniti. Ovdje se koristi za postavljanje PIN broja:
const int ledPin = 13;// broj LED pina

Linija komentara kaže da konstante ne treba mijenjati, odnosno naziv konstanti ne treba mijenjati. Ali možete promijeniti cifru koja znači pin broj.

const int ledPin = 13; // broj LED pin-const označava konstantu, tj. konstantnu vrijednost koja se ne može promijeniti u programu, int. za cijeli broj, znači tip podataka koji može uzeti vrijednosti od -32768 do 32768. na cijeli broj, postoji još 5 tipova podataka. Koja je razlika? Razlikuju se po veličini, tj. na primjer, samo 256 vrijednosti se može upisati u varijablu tipa bajta, razlika u veličini je int-2 bajta (osim za ARDUINO DUE, INT već zauzima 4 bajta u sebi, ali uzima vrijednosti od -2147483648 do 2147483647), bajt kako je napisano - 1 bajt. U velikim programima, ušteda memorije je vrlo važna tačka, i stoga pokušajte izbjeći korištenje više "teških" tipova gdje god je to moguće ako možete proći sa "laganim" tipovima. Na primjer, ovdje bi bio dovoljan tip bajta. 13 se uklapa u granicu između 0 i 255, a ostali digitalni pinovi bi se također uklapali u ovaj tip podataka. ledPin je ime same konstante. 13 je vrijednost konstante, iz gornjeg komentara je jasno da će se ova konstanta koristiti za odabir pina.

// Varijable će se promijeniti:
int ledState = LOW;// LEDState se koristi za postavljanje LED-a

Komentar kaže da će se varijabla promijeniti u programu

int ledState = LOW;// ledState se koristi za postavljanje LED-a - deklarira varijablu ledState sa početnom vrijednošću LOW (logička nula) i komentarom da će se varijabla ledState koristiti za LED (ne našu LED).

// Općenito, trebali biste koristiti "unsigned long" za varijable koje drže vrijeme
// Vrijednost će brzo postati prevelika za pohranjivanje int
// će pohraniti zadnji put kada je LED dioda ažurirana

Komentar kaže da biste trebali koristiti neoznačenu dugu varijablu za vrijeme, sljedeći red upozorava da će vrijednost biti prevelika za pohranjivanje int varijable. Unsigned long se koristi za pohranjivanje BROJEVA i može pohraniti vrijednosti od 0 do 4294967295 u 4 bajta.

unsigned long previousMillis = 0;// će pohraniti zadnji put kada je LED dioda ažurirana - kreira varijablu previousMillis tipa unsigned long i dodjeljuje vrijednost 0, pohranit će vrijeme kada je stanje LED diode ažurirano.

// konstante se neće promijeniti:
const long interval = 1000;// interval u kojem treba treptati (milisekunde)

Konstanta tipa long je također namijenjena za pohranjivanje BROJEVA, zauzima 4 bajta i može imati vrijednosti od -2147483648 do 2147483647, interval je ime varijable, 1000 je vrijednost varijable. Komentar kaže da će to biti interval treptanja u milisekundama.

void setup()(
// postaviti digitalni pin kao izlaz:
pinMode(ledPin, OUTPUT);
}

Funkcija je poznata iz prethodnog primjera, samo što je ovdje pin naznačen ne eksplicitno već kroz varijablu ledPin, koju mi ​​opisujemo kao konstantu i ima vrijednost 13. To jest, ovo je ekvivalentno činjenici da ako je napisano pinMode(13, IZLAZ);

Pa, stvarno tijelo programa:

void loop()
{
// ovdje biste stavili kod koji treba stalno raditi.

// provjeravamo da li je vrijeme da treperi LED; odnosno, ako je
// razlika između trenutnog vremena i vremena kada ste zadnji put treptali
// LED je veća od intervala u kojem želite
// treperi LED.

Ovdje komentari opisuju kako program radi. Usput, možete koristiti kombinaciju /*tekst*/ umjesto da pišem na svakom redu // . Ovdje piše da kada je razlika između trenutnog i posljednjeg puta kada je LED treptala veća od navedenog intervala, onda trebate ponovo upaliti LED.

unsigned long currentMillis = millis();

Deklarisana je varijabla currentMillis tipa unsigned long, koja pohranjuje podatke operatora millis(). millis()- interni operater MK-a pokazuje koliko je milisekundi ARDUINO radio.

if (trenutni Milis - prethodni Milli >= interval) (
// sačuvati zadnji put kada ste treperili LED
prethodniMillis = CurrentMillis;

Došli smo do proračuna. Sada postoji divan if operator uvjeta (if) - koji je korišten, koristi se i koristit će se jako dugo. Razmotrimo to detaljnije. Struktura uslova izgleda ovako:

if (uvjet==vrijednost)(

Radnja ako je uslov ispunjen

drugo(

Radnja ako uslov nije ispunjen

Znak == se može promijeniti u bilo koji drugi znak >,<,>=, <=, != (не равно). Условие как и значение может высчитываться. Если условие не выполнено то программа переходит в секцию else. Довольно часто секцию else не используют а просто пишут программу дальше. Это уже зависит от алгоритма работы программы и должно быть продумано заранее. Условий может быть сколько угодно и они могу быть вложены друг в друга, т.е. пока не выполнится одно условие- другое даже выполняться не начнет.

Dakle, if naredba oduzima prethodnu vrijednost od trenutnih milisekundi i upoređuje je sa intervalnom varijablom. Ako je vrijednost manja onda program izlazi iz uvjeta i počinje ispočetka, ako je veća ili jednaka tada se varijabli previousMillis dodjeljuje currentMillis vrijednost i program prelazi na sljedeći korak:

// ako je LED ugašen upalite ga i obrnuto:
if (ledState == LOW)
LEDState = HIGH;
ostalo
ledState = LOW;

U ovom dijelu se saznaje u kakvom je stanju LED dioda, ako je na LED diodu primijenjen LOW nivo, tada se varijabli ledState dodijeljuje vrijednost HIGH, i obrnuto (drugi dio) ako je postojao visoki HIGH nivo, tada varijabli ledState je dodijeljena vrijednost LOW. Imajte na umu da se if ovdje koristi bez (). Ovo je dozvoljeno ako ne trebate obraditi ne više od 1 reda u dijelu za izvršavanje.

// postaviti LED sa ledState varijable:
digitalWrite(ledPin, ledState);

I konačno, upisujemo vrijednost varijable ledPin (bila je jednaka 13), vrijednost varijable ledState. One. ovaj niz se može napisati kao digitalWrite(13, LOW); ili digitalWrite(13, HIGH); ovisno o vremenu rada MC-a. Imajte na umu da se koristi operator digitalWrite - on je taj koji označava da vrijednost mora biti proslijeđena u logičkom formatu, tj. nula ili jedan. Ne može poprimiti više vrijednosti. Sve druge vrijednosti ledState će automatski biti postavljene na boolean 1.

}
}

Evo rada drugog programa. Koja je razlika između prvog i drugog programa ako izvode istu radnju, ali je u drugom napisano 5 puta više redova? Kao što sam rekao, prvi program jednostavno čeka da operater kašnjenja završi sa radom i tek onda nastavlja sa radom. Tokom kašnjenja nećete moći obraditi nikakve podatke. Drugi program vam omogućava da primate, obrađujete i šaljete podatke dok LED lampica treperi. Samo dodajte potreban kod u sekciju petlje i uživajte u radu! Moj prijatelj i ja smo izračunali da se kod u drugom slučaju pokreće oko 4 miliona puta u sekundi, tako da praktično nema kašnjenja.

E, sad ono najvažnije. Nakon nekog vremena, kada ste se dovoljno igrali, reći ćete: „Koja je svrha treptati sijalicom... Gdje je mogu koristiti? Samo indikator da uređaj radi... "Nećete biti sasvim u pravu. Imate alat, ono što možete da uradite sa njim je samo vaša greška ako ne možete da smislite ništa. To je kao da nekome date kompletan set alata i zamolite ga da uradi nešto, na primjer, da čovjeku uruči set alata za stolariju, neko će cijeli život planirati istu ploču, diveći se čistoći s kojom avion leti i pokušavajući da naoštrite komad željeza što je oštrije moguće, a neko će tada napraviti kvalitetan namještaj upravo u ovom trenutku. Koga ćete odlučiti zavisi od vas. Još jedan savjet koji sam negdje pročitao, čak se i ne sjećam, je “NE TRAŽITE PROBLEME, TRAŽITE NJIHOVA RJEŠENJA!” Ako koristite ovaj pristup, imat ćete mnogo manje KAKO i ZAŠTO. Pa, sada o trepćućem LED-u. Na internetu ima puno savjeta kako koristiti razne indikatore, naravno da je lijepo, daje neki značaj autoru itd... ali dotiče ono najvažnije - čuvanje igle i memorije. Da biste povezali indikator 1602, potrebno je uzeti 6 digitalnih pinova + 2 žice za napajanje! Ovo je ako ne koristite I2C protokol. Pored toga, biblioteka na LCD-u zauzima 4 kB. I niko ne razmišlja o daljoj funkcionalnosti, eto, igrali su se sa indikatorom i to je sve, i njega su napustili. Sigurno se niko nije zapitao da je sa jednom LED diodom moguće dobiti sve potrebne informacije? Na primjer greške. Napišite funkciju i proslijedite joj kod greške. Ovo je zgodno - ne morate ponovo rastavljati kod, već samo pogledajte šta ne radi na taj način. Ili, na primjer, moj prijatelj je sklopio regulator plinskog kotla na ARDUINO mini, tj. prema temperaturi u kući (zabilježena senzorom Dallas), cirkulacijska pumpa je uključena/isključena. Kada je pumpa isključena, kotao se zagrijao na 40 ° C i stao na upaljač, temperatura u prostoriji je pala - pumpa se uključila i kada se rashladna tekućina ohladila, bojler se sam uključio. Vrlo zgodno i došlo je do značajne uštede plina! Ukupno je za nekih 200-300 rubalja uštedio nekoliko kubnih metara gasa svaki dan! On je tada stalno razmišljao - kako pratiti temperaturu u prostoriji bez povezivanja WiFi i kompjutera, predložio sam - neka LED lampica treperi onoliko puta koliko ima stepeni u prostoriji... Smijali su se naravno - možete pogriješiti 20-25 puta, onda sam predložio - neka trepne prvo desetine stepeni i nakon pauze - jedinice, na primjer 24 stepena, prvo trepće 2 puta, nakon pauze još 4. Sve! Nema više indikatora! I može se primijeniti u bilo kojoj oblasti! Potražite nestandardne pristupe i pokušajte uštedjeti energiju i inpute. Čak i ako koristite I2C. Sretno svima u savladavanju MK-a, a posebno ARDUINO-a.

Ako pronađete grešku, odaberite dio teksta i pritisnite Ctrl+Enter.