RGB svijelto
Prva Riječka Hrvatska GimnazijaIzrada projekta
Mobilna aplikacija
Shema projekta
RGB svijeto je spojeno na Arduino plocicu. Crveno svjetlo je spojeno na pin A0, zeleno na A3 i plavo na A4. Ground je spojen na ground.
Shemu ovoga projekta možete preuzeti ovdje.
Arduino program
#define BLYNK_PRINT /* /************************************************************* Download latest Blynk library here: https://github.com/blynkkk/blynk-library/releases/latest Blynk is a platform with iOS and Android apps to control Arduino, Raspberry Pi and the likes over the Internet. You can easily build graphic interfaces for all your projects by simply dragging and dropping widgets. Downloads, docs, tutorials: http://www.blynk.cc Sketch generator: http://examples.blynk.cc Blynk community: http://community.blynk.cc Follow us: http://www.fb.com/blynkapp Tweets by blynk_app Blynk library is licensed under MIT license This example code is in public domain. ************************************************************* You’ll need: - Blynk App (download from AppStore or Google Play) - Arduino MKR1000 board - Decide how to connect to Blynk (USB, Ethernet, Wi-Fi, Bluetooth, ...) There is a bunch of great example sketches included to show you how to get started. Think of them as LEGO bricks and combine them as you wish. For example, take the Ethernet Shield sketch and combine it with the Servo example, or choose a USB sketch and add a code from SendData example. *************************************************************/ /* Comment this out to disable prints and save space */ #define BLYNK_PRINT SerialUSB #include #include #include // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "8fe8be353019409db433158035bfa1c1"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "nastavnici"; char pass[] = "1rHG1m4A"; int pin1 = A0; //crvena dioda na analognom pinu 0 postavljena u varijablu pin1 int pin2 = A3; //zelena dioda na analognom pinu 3 postavljena u varijablu pin2 int pin3 = A4; //plava dioda na analognom pinu 4 postavljena u varijablu pin3 long value3; //postavljanje varijable value1, value2, value3 long value2; long value1; long current_value3; //postavljanje varijable current_value1, current_value2, current_value3 long current_value2; long current_value1; int x; //postavljanje varijable x void setup() { // Debug console SerialUSB.begin(9600); Blynk.begin(auth, ssid, pass); randomSeed(analogRead(0)); //određivanje random broja value1 = random(255); //postavljanje random vrijednosti do 255 u varijablu value1 current_value1 = value1; //postavljanje vrijednosti varijable value1 u varijablu current_value1 value2 = random(255); //postavljanje random vrijednosti do 255 u varijablu value2 current_value2 = value2; //postavljanje vrijednosti varijable value2 u varijablu current_value2 value3 = random(255); //postavljanje random vrijednosti do 255 u varijablu value3 current_value3 = value3; //postavljanje vrijednosti varijable value3 u varijablu current_value3 /*analogWrite(pin1, current_value1); //potencijalna funkcija za pokretanje RGB svijetla pri pokretanju samog programa bez potrebe gumba analogWrite(pin2, current_value2); analogWrite(pin3, current_value3); */ value1 = random(255); //postavljanje nove random vrijednosti u varijablu value1, dok u current_value1 ostaje stara random vrijednost value2 = random(255); //postavljanje nove random vrijednosti u varijablu value2, dok u current_value2 ostaje stara random vrijednost value3 = random(255); //postavljanje nove random vrijednosti u varijablu value3, dok u current_value3 ostaje stara random vrijednost } void ambiLight () { //deklaracija ambiLight funkcije koje određuje jačinu pojedine diode da bi se postiglo što bolje izmjenjivanje boja x = random(3, 9); //određuje random broj od 3 do 9 za nasumično vrijeme zadržavanja pojedine boje //objašnjenje prve if funkcije: ako je random vrijednosti value1 veća od vrijednosti current_value1, current_value1 se povećava i šalje diodi spojenoj na pin1. Ovo se izvodi dok current_value1 ne bude jednak value1 sa nausmičnim razmacima if (value1 > current_value1){ current_value1++; analogWrite(pin1, current_value1); delay(x); } //objašnjnje druge if funkcije: ako je random vrijednost value1 manji od current_value1, current_value1 se smanjuje i šalje diodi spojenoj na pin1. Izvodi se dok current_vaue1 nije jednak value1 if (value1 < current_value1){ current_value1--; analogWrite(pin1, current_value1); delay(x); } //objašnjenje treće if funkcije: ako je value1 jednak current_value1, current_value1 se šalje diodi spojenoj na pin1, te se varijabli value1 pridaje nova random vrijednost za ponovno, drugačije biranje jačine svijetlosti diode spojene na pin1 if (value1 == current_value1){ analogWrite(pin1, current_value1); value1 = random(255); } //prethodna objašnjenja prve, druge i treće if funkcije vrijede i za diode spojene na pin2 i pin3 if (value2 > current_value2){ current_value2++; analogWrite(pin2, current_value2); delay(x); } if (value2 < current_value2){ current_value2--; analogWrite(pin2, current_value2); delay(x); } if (value2 == current_value2){ analogWrite(pin2, current_value2); value2 = random(255); } if (value3 > current_value3){ current_value3++; analogWrite(pin3, current_value3); delay(x); } if (value3 < current_value3){ current_value3--; analogWrite(pin3, current_value3); delay(x); } if (value3 == current_value3){ analogWrite(pin3, current_value3); value3 = random(255); } } BLYNK_WRITE(V1) // At global scope (not inside of the function) //deklariranje funkcije virtualnog gumba za paljenje RGB svijetla { int i=param.asInt(); //očitavanje vrijednosti gumba (1 ili 0) te postavljanje te vrijednosti u varijablu i while (i==1) //kada je i=1, odnosno virtualni gumb pritisnut, pokreće se ambiLight funkcija { ambiLight(); } } void loop() { Blynk.run(); }
Arduino program ovoga projekta možete preuzeti ovdje.
Autori
Projekt su izradili Jakov Mozetić i Ani Perušić uz mentorstvo Vedrana Vedriša iz Prve Riječke Hrvatske Gimnazije.
Projekt je prijavljen na temu: Internet of Things: Pametna rasvjeta.