robot koji pomaže ljudima u borbi protiv zaraznih bolesti

Величина: px
Почињати приказ од странице:

Download "robot koji pomaže ljudima u borbi protiv zaraznih bolesti"

Транскрипт

1 robot koji pomaže ljudima u borbi protiv zaraznih bolesti Učenik: Mihael Orak Mentor: Roman Rubčić OŠ Iver, Sesvetski Kraljevec

2 Opis projekta PROZABO je robot koji pomaže ljudima na razne načine u borbi protiv zaraznih bolesti. Mogućnosti robota: daljinsko upravljanje robotom preko WiFi mreže programiranje puta robota kojim će se automatski kretati i obavljati neki posao preko upravljačkog uređaja (tableta ili mobitela) robot šalje obavijesti preko WiFi mreže o na upravljački uređaj (tablet ili mobitel) o na e mail posluživanje ljudima u sobama, za stolovima,... : Na primjer: o u restoranima i kafićima može ljudima do stolova donositi hranu i piće o robot u bolnicama i staračkim domovima u svaku sobu do kreveta odnese hranu, lijek i druge potrepštine pomoć medicinskom osoblju dijeljenje lijekova je pogotovo korisno kod privremenih bolnica u sportskim dvoranama i sl., gdje imamo velik broj zaraženih ljudi na jednom mjestu sterilizacija prostorija UV svjetlom (bolnice, restorani, frizerski saloni,...) o robot sterilizira po zadanom putu i zadanom vremenu zadržavanja na određenim mjestima u prostoriji (na primjer duži period sterilizacije UV svjetlom na mjestima gdje je to više potrebno)

3 nakon što odradi zadani posao, robot se sam vrača na određenu lokaciju, te šalje poruku upravljačkom uređaju (tabletu ili mobitelu) da je obavio posao kontrola ljudi prilikom ulaska u neku javnu ustanovu (trgovački centar, ljekarne, bolnice, škole, trgovine, frizerski saloni, tržnice, pošte, banke,...) o robot glasovno pozove osobu, na ruku joj da sredstvo za dezinfekciju, glasovno joj daje upute kako se treba ponašati u prostoru u koji ulazi (držanje distancu od 2 metra, zaštitna maska na ustima i nosu i dr.) o ako osoba ne uzme dezinfekcijsko sredstvo, robot na e mail šalje obavijest zaštitaru o robot se može nadograditi beskontaktnim infracrvenim modulom za mjerenje temperature, te upozoravati na povišenu temperaturu ljudi Prednosti robota: ne može se zaraziti (u odnosu na ljude) lako se dezinficira nakon kontakta s ljudima (samo se prebriše dezinfekcijskim sredstvom) ne treba zaštitno odijelo, zaštitne vizire i zaštitne rukavice kao ljudi o nema svakodnevnog stvaranja kontaminiranog otpada o smanjen financijski trošak na zaštitnu opremu

4 Potrebni dijelovi Arduino MKR kom Ultrazvučni senzor 1 kom 28BYJ 48 koračajni motori i ULN2003 upravljači za koračajne motore 2 kom Led diode: crvena i zelena po 1 kom Servo motori SG90 2 kom DFPlayer mini (MP3 player) 1 kom Zvučnik 1 kom Kotačić koji se slobodno okreće (kao prednji kotač robota) 1 kom SD kartica 1 kom Otpornik 1 ohm 1 kom Otpornik 1k ohm 1 kom Otpornici 10k ohm 2 kom Foto otpornici 2 kom Vijak i matrica M3 8 kom Gumene spojnice za odvodne cijevi fi 75mm (kao gume na kotačima robota) 2 kom Baterija 5V (power bank) 1 kom

5 Utičnica za micro usb za napajanje tiskane pločice 1 kom Prototipna tiskana pločica 1 kom Led traka s mogućnošću adresiranja dioda (NeoPixel LED Strip) 5 traka po 4 diode o samo za prezentacijske svrhe zamjena za UV svjetlo koje je štetno

6 Fritzing shema

7 3D printani dijelovi

8 Blynk aplikacija

9 PROGRAM // koračajni motor - Lijevi #define S1P1 A0 #define S1P2 A1 #define S1P3 A2 #define S1P4 A3 // koračajni motor - Desni #define S2P1 2 #define S2P2 3 #define S2P3 4 #define S2P4 5 #define LED_STRIP_PIN 8 #define SERVO_DEZ 0 #define SERVO_LIJEK 1 #define ULTRA_ZVUCNI_TRIG 6 #define ULTRA_ZVUCNI_ECHO 7 #define FOTO_OTPORNIK_DEZ A6 #define FOTO_OTPORNIK_LIJEK A5 #define DIODA_DEZ 11 #define DIODA_LIJEK 12 #define DEZ_ZATVOREN 3 #define DEZ_OTVOREN 25 #define LIJEK_ZATVOREN 130 #define LIJEK_OTVOREN 30 #define KORACI 32 #define POSTOTAK_SVIJETLA 0.5 // potrebna promjena osvjetljenja na fotootporniku za neku akciju #define MIN_UDALJENOST 45 //minimalna udaljenost u cm za dezinfekciju ruku #define DEZ_TRAJANJE 1000 //millis - ispuštanje dezinfekcijskog sredstva #define BROJ_SVJETLA 4 // led traka - broj dioda #define MAX_BROJ_SOBA 5 // maksimalni broj soba odnosno programa koji se mogu izvoditi #define MAX_BROJ_NAREDBI 50 // maksimalni broj naredbi u jednom programu #define BROJ_CEKANJA 5 // broj mogućih odabira za trajanje čekanja #define PRAVI_KUT 1024 // broj koraka koračajnog motora za napraviti pravi kut s dva kotača #define NAPRIJED 770 // broj koraka koračajnog motora za pokrenuti se jedan korak unaprijed #define MAIL_POSLATI_CEKANJE 10 //u sekundama #include <Stepper.h> #include <SPI.h> #include <WiFi101.h> #include <BlynkSimpleMKR1000.h> #include <FastLED.h> #include <DFPlayerMini_Fast.h> #include <Servo.h> Servo servo_dez; Servo servo_lijek; CRGB svjetla[broj_svjetla]; Stepper motor_1(koraci, S1P1, S1P3, S1P2, S1P4); // pinovi 1, 3, 2, 4 Stepper motor_2(koraci, S2P1, S2P3, S2P2, S2P4); // pinovi 1, 3, 2, 4 DFPlayerMini_Fast MP3; char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //kod koji dobijemo na za blink aplikaciju (projekt) char ssid[] = "XXXXXXXXX"; // ime rutera char pass[] = "XXXXXXXXXXXXXXXXXXXXXXX"; // lozinka rutera int programi_uv[max_broj_soba][max_broj_naredbi][2]; // programi kretanja robota pri sterilizaciji UV svjetlom (0- smjer kretanja, 1 - trajanje čekanja (sterilizacije)) int programi_uv_broj_naredbi[max_broj_soba]; // broj naredbi u pojedinom programu sterilizacije

10 int programi_lijek[max_broj_soba][max_broj_naredbi][2]; // programi kretanja robota pri podjeli lijekova (0- smjer kretanja, 1 - podjela lijeka ili samo vožnja) int programi_lijek_broj_naredbi[max_broj_soba]; // broj naredbi u pojedinom programu podjele lijekova int programi_hrana[max_broj_soba][max_broj_naredbi][2]; // programi kretanja robota pri podjeli lijekova (0- smjer kretanja, 1 - podjela lijeka ili samo vožnja) int programi_hrana_broj_naredbi[max_broj_soba]; // broj naredbi u pojedinom programu podjele lijekova //byte cekanja[broj_cekanja] = -1, 0, 600, 1200, 1800; // prave vrijednosti čekanja u sekundama int cekanja[broj_cekanja] = -1, 0, 2, 4, 6; // vrijednosti čekanja u sekundama ZA PREZENTACIJU: 0sec, 2sec, 4sec,...) enum govori NISTA,DEZINFICIRAJTE_RUKE,UDJITE,UZMITE_LIJEK,UZELI_STE_LIJEK,UZMITE_HRANU,UZELI_STE_HRANU ; int trajanje_govora[7] = 0, 5600, 5560, 3820, 3100, 3500, 1000; // trajanje pojedinog govora u milis (0. datoteka nula jer ne postoji; 1. datoteka traje 7500, stavio 5600 da pokaze gdje staviti ruku (led dioda), toliko traje, toliko traje) int x_joystick = 0; int y_joystick = 0; int mod; int program; int cekanje; int zadnji_x_joystick; int zadnji_y_joystick; int dez_zadnji_foto; int lijek_zadnji_foto; int pokreni; int spremi; int mjesto_program; int naredba; int UzvUdaljenost; unsigned long mail = 0; int mail_poslao = 0; void cekaj_da_uzme_lijek() MP3.play(UZMITE_LIJEK); //uzmite lijek delay(trajanje_govora[uzmite_lijek]); servo_lijek.write(lijek_otvoren); delay(300); digitalwrite(dioda_lijek, HIGH); delay(10); // cekaj da dioda zasvjetli lijek_zadnji_foto = analogread(foto_otpornik_lijek); while (analogread(foto_otpornik_lijek) < lijek_zadnji_foto * (1 + POSTOTAK_SVIJETLA)); // sve dok je fotootpornik zamracen delay(1000); servo_lijek.write(lijek_zatvoren); digitalwrite(dioda_lijek, LOW); MP3.play(UZELI_STE_LIJEK); delay(trajanje_govora[uzeli_ste_lijek]); // popijte lijek odmah void cekaj_da_uzme_hranu() MP3.play(UZMITE_HRANU); //uzmite hranu delay(trajanje_govora[uzmite_hranu]); digitalwrite(dioda_lijek, HIGH); delay(10); // cekaj da dioda zasvjetli lijek_zadnji_foto = analogread(foto_otpornik_lijek);

11 while (analogread(foto_otpornik_lijek) < lijek_zadnji_foto * (1 + POSTOTAK_SVIJETLA)); // sve dok je fotootpornik zamracen digitalwrite(dioda_lijek, LOW); delay(4000); MP3.play(UZELI_STE_HRANU); delay(trajanje_govora[uzeli_ste_hranu]); // pojedite hranu odmah void pokreni_robota_upravljanje(int smjer) if (smjer == 1) //naprijed motor_1.step(1); motor_2.step(-1); if (smjer == 3) //nazad motor_1.step(-1); motor_2.step(1); if (smjer == 4) //lijevo motor_1.step(-1); motor_2.step(-1); if (smjer == 2) //desno motor_1.step(1); motor_2.step(1); void pokreni_robota(int smjer, int cekanje) if (smjer == 1) //naprijed for(int y = 0; y < NAPRIJED; y++) motor_1.step(1); motor_2.step(-1); //for(int y = 0; y < NAPRIJED; y++) if (smjer == 3) //nazad for(int y = 0; y < NAPRIJED; y++) motor_1.step(-1); motor_2.step(1); //for(int y = 0; y < NAPRIJED; y++) if (smjer == 4) //lijevo for(int y = 0; y < PRAVI_KUT; y++) motor_1.step(-1); motor_2.step(-1); //for(int y = 0; y < PRAVI_KUT; y++) if (smjer == 2) //desno for(int y = 0; y < PRAVI_KUT; y++) motor_1.step(1); motor_2.step(1); //for(int y = 0; y < PRAVI_KUT; y++) if (cekanje == -1) if (mod == 2) //nista ne ceka if(mod == 4) cekaj_da_uzme_lijek(); if(mod == 8) cekaj_da_uzme_hranu();

12 if (cekanje == 0) //nista ne ceka Serial.println(cekanje); delay(50); uv(true); delay(cekanje * 1000); uv(false); //void pokreni_robota(int smjer, int cekanje) void programiranje() if (x_joystick!= 0 or y_joystick!= 0) // ako je pomak joystika onda spremi zadnji_x_joystick = x_joystick; zadnji_y_joystick = y_joystick; if (spremi == 1) Serial.println(zadnji_x_joystick); Serial.println(zadnji_y_joystick); if (zadnji_y_joystick!= 0) Serial.println("zadnji_y_joystick!= 0"); if (zadnji_y_joystick == 1) programi_uv[program][mjesto_program][0] = 1; Serial.println("program = 1"); //if (zadnji_y_joystick == 1) programi_uv[program][mjesto_program][0] = 3; Serial.println("program = 3"); // //if (zadnji_y_joystick!= 0) Serial.println("zadnji_x_joystick!= 0"); if (zadnji_x_joystick == 1) programi_uv[program][mjesto_program][0] = 2; Serial.println("program = 2"); //if (zadnji_x_joystick = 1) programi_uv[program][mjesto_program][0] = 4; Serial.println("program = 4"); // // programi_uv[program][mjesto_program][1] = cekanja[cekanje - 1]; programi_uv_broj_naredbi[program] = mjesto_program + 1; Serial.println(programi_uv[program][0][2]); Serial.println(programi_uv[program][mjesto_program][0]); Serial.println(programi_uv[program][mjesto_program][1]); while (spremi == 1) // čekaj dok se ne otpusti tipka "spremi" Blynk.run(); mjesto_program ++; //if (spremi == 1) //void programiranje() void voznja() if (pokreni == 1) while (pokreni == 1) Blynk.run();

13 Serial.println(programi_uv_broj_naredbi[program]); for (int i = 0; i < programi_uv_broj_naredbi[program]; i++) Serial.println(programi_uv[program][i][0]); Serial.println(programi_uv[program][i][1]); pokreni_robota(programi_uv[program][i][0], programi_uv[program][i][1]); //for (int i = 0; i < programi_uv_broj_naredbi[program]; i++) Blynk.notify("Sterilizacija uspješno završena"); // if (pokreni = 1) //void voznja() void programiranje_podijeli_lijek() if (x_joystick!= 0 or y_joystick!= 0) // ako je pomak joystika onda spremi zadnji_x_joystick = x_joystick; zadnji_y_joystick = y_joystick; if (spremi == 1) Serial.println(zadnji_x_joystick); Serial.println(zadnji_y_joystick); if (zadnji_y_joystick!= 0) Serial.println("zadnji_y_joystick!= 0"); if (zadnji_y_joystick == 1) programi_lijek[program][mjesto_program][0] = 1; Serial.println("program = 1"); //if (zadnji_y_joystick == 1) programi_lijek[program][mjesto_program][0] = 3; Serial.println("program = 3"); // //if (zadnji_y_joystick!= 0) Serial.println("zadnji_x_joystick!= 0"); if (zadnji_x_joystick == 1) programi_lijek[program][mjesto_program][0] = 2; Serial.println("program = 2"); //if (zadnji_x_joystick = 1) programi_lijek[program][mjesto_program][0] = 4; Serial.println("program = 4"); // // if (cekanje == 1) programi_lijek[program][mjesto_program][1] = cekanja[cekanje - 1]; programi_lijek[program][mjesto_program][1] = 0; programi_lijek_broj_naredbi[program] = mjesto_program + 1; Serial.println(programi_lijek[program][0][2]); Serial.println(programi_lijek[program][mjesto_program][0]); Serial.println(programi_lijek[program][mjesto_program][1]); while (spremi == 1) // čekaj dok se ne otpusti tipka "spremi" Blynk.run(); mjesto_program ++; //if (spremi == 1) //void programiranje_podijeli_lijek()

14 void voznja_podijeli_lijek() if (pokreni == 1) while (pokreni == 1) Blynk.run(); // čekaj dok se ne otpusti tipka "pokreni" Serial.println(programi_lijek_broj_naredbi[program]); for (int i = 0; i < programi_lijek_broj_naredbi[program]; i++) Serial.println(programi_lijek[program][i][0]); Serial.println(programi_lijek[program][i][1]); pokreni_robota(programi_lijek[program][i][0], programi_lijek[program][i][1]); //for (int i = 0; i < programi_lijek_broj_naredbi[program]; i++) Blynk.notify("Podijela lijekova uspješno završena"); // if (pokreni = 1) //void voznja_podijeli_lijek() void patrola() UzvUdaljenost = ocitaj_ultra_zvucni(); Serial.println(UzvUdaljenost); if (UzvUdaljenost <= MIN_UDALJENOST) MP3.play(DEZINFICIRAJTE_RUKE); // molim vas dezinficirajte ruku ovdje delay(trajanje_govora[dezinficirajte_ruke]); digitalwrite(dioda_dez, HIGH); delay(10); // cekaj da dioda zasvjetli dez_zadnji_foto = analogread(foto_otpornik_dez); mail = millis(); mail_poslao = 0; while (analogread(foto_otpornik_dez) > dez_zadnji_foto * (1 - POSTOTAK_SVIJETLA)) // sve dok je fotootpornik osvijetljen if (millis() - mail >= MAIL_POSLATI_CEKANJE * 1000 and mail_poslao == 0) Blynk. ("xxxxxxx.xxxxx@outlook.com", "NIJE DEZINFICIRAO RUKE", "Osoba na ulazu 1. nije dezinficirala ruke!"); Serial.println("poslao mail"); mail_poslao = 1; Blynk.run(); servo_dez.write(dez_otvoren); delay(dez_trajanje); servo_dez.write(dez_zatvoren); digitalwrite(dioda_dez, LOW); MP3.play(UDJITE); // hvala vam što se pridržavate pravila delay(trajanje_govora[udjite]); while (UzvUdaljenost < MIN_UDALJENOST) UzvUdaljenost = ocitaj_ultra_zvucni(); delay(5000); // čekaj - ovo je zbog lakše prezentacije void upravljanje() if (x_joystick!= 0 or y_joystick!= 0) zadnji_x_joystick = x_joystick; zadnji_y_joystick = y_joystick; if (zadnji_y_joystick!= 0) Serial.println("zadnji_y_joystick!= 0"); if (zadnji_y_joystick == 1) naredba = 1; Serial.println("program = 1"); //if (zadnji_y_joystick == 1) naredba = 3; Serial.println("program = 3"); // //if (zadnji_y_joystick!= 0)

15 Serial.println("zadnji_x_joystick!= 0"); if (zadnji_x_joystick == 1) naredba = 2; Serial.println("program = 2"); //if (zadnji_x_joystick = 1) naredba = 4; Serial.println("program = 4"); // // pokreni_robota_upravljanje(naredba); //if (pokreni == 1) //void upravljanje() void programiranje_hrana() if (x_joystick!= 0 or y_joystick!= 0) // ako je pomak joystika onda spremi zadnji_x_joystick = x_joystick; zadnji_y_joystick = y_joystick; if (spremi == 1) Serial.println(zadnji_x_joystick); Serial.println(zadnji_y_joystick); if (zadnji_y_joystick!= 0) Serial.println("zadnji_y_joystick!= 0"); if (zadnji_y_joystick == 1) programi_hrana[program][mjesto_program][0] = 1; Serial.println("program = 1"); //if (zadnji_y_joystick == 1) programi_hrana[program][mjesto_program][0] = 3; Serial.println("program = 3"); // //if (zadnji_y_joystick!= 0) Serial.println("zadnji_x_joystick!= 0"); if (zadnji_x_joystick == 1) programi_hrana[program][mjesto_program][0] = 2; Serial.println("program = 2"); //if (zadnji_x_joystick = 1) programi_hrana[program][mjesto_program][0] = 4; Serial.println("program = 4"); // // if (cekanje == 1) programi_hrana[program][mjesto_program][1] = cekanja[cekanje - 1]; programi_hrana[program][mjesto_program][1] = 0; programi_hrana_broj_naredbi[program] = mjesto_program + 1; Serial.println(programi_hrana[program][0][2]); Serial.println(programi_hrana[program][mjesto_program][0]); Serial.println(programi_hrana[program][mjesto_program][1]); while (spremi == 1) // čekaj dok se ne otpusti tipka "spremi" Blynk.run(); mjesto_program ++; //if (spremi == 1) //void programiranje_podijeli_hrana()

16 void voznja_hrana() if (pokreni == 1) while (pokreni == 1) Blynk.run(); // čekaj dok se ne otpusti tipka "pokreni" Serial.println(programi_hrana_broj_naredbi[program]); for (int i = 0; i < programi_hrana_broj_naredbi[program]; i++) Serial.println(programi_hrana[program][i][0]); Serial.println(programi_hrana[program][i][1]); pokreni_robota(programi_hrana[program][i][0], programi_hrana[program][i][1]); //for (int i = 0; i < programi_lijek_broj_naredbi[program]; i++) // if (pokreni = 1) //void voznja_hrana() void uv(bool ukljuciti) if (ukljuciti) for(int z; z < BROJ_SVJETLA; z++) svjetla[z] = CRGB(127, 0, 255); for(int z; z < BROJ_SVJETLA; z++) svjetla[z] = CRGB(0, 0, 0); FastLED.show(); //void uv(bool ukljuciti) // simuliraj ultraljubičasto svjetlo int ocitaj_ultra_zvucni() digitalwrite(ultra_zvucni_trig, LOW); delaymicroseconds(2); digitalwrite(ultra_zvucni_trig, HIGH); delaymicroseconds(10); digitalwrite(ultra_zvucni_trig, LOW); int UzvTrajanje = pulsein(ultra_zvucni_echo, HIGH); // trajanje u mikrosekundama delay(50); // cekaj zbog UZV senzora return(uzvtrajanje/ /2*343*100); // tranje u micro s, pretvoriti u s, /2 jer pola puta, +343 brzina zvuka, *100 iz m u cm BLYNK_WRITE(V3) // čitanje V3 virtualnog pina x_joystick = param.asint(); Serial.println(x_joystick); BLYNK_WRITE(V4) // čitanje V4 virtualnog pina y_joystick = param.asint(); Serial.println(y_joystick); BLYNK_WRITE(V0) // čitanje V0 virtualnog pina mjesto_program = 0; mod = param.asint(); Serial.println(mod); BLYNK_WRITE(V1) // čitanje V2 virtualnog pina mjesto_program = 0; program = param.asint() - 1; // -1 jer polja idu od 0 Serial.println(program); BLYNK_WRITE(V6) // čitanje V6 virtualnog pina

17 cekanje = param.asint(); Serial.println(cekanje); BLYNK_WRITE(V2) // čitanje V2 virtualnog pina pokreni = param.asint(); Serial.println(pokreni); BLYNK_WRITE(V5) // čitanje V5 virtualnog pina spremi = param.asint(); Serial.println(spremi); void setup() motor_1.setspeed(1000); motor_2.setspeed(1000); servo_dez.attach(servo_dez); servo_lijek.attach(servo_lijek); servo_dez.write(dez_zatvoren); servo_lijek.write(lijek_zatvoren); pinmode(foto_otpornik_dez, INPUT); pinmode(foto_otpornik_lijek, INPUT); pinmode(dioda_dez, OUTPUT); pinmode(dioda_lijek, OUTPUT); pinmode(ultra_zvucni_trig, OUTPUT); pinmode(ultra_zvucni_echo, INPUT); FastLED.addLeds<WS2812, LED_STRIP_PIN, GRB>(svjetla, BROJ_SVJETLA); uv(false); Serial.begin(9600); Blynk.begin(auth, ssid, pass); Serial1.begin(9600); MP3.begin(Serial1); MP3.EQSelect(4); MP3.volume(30); delay(20); // // za prezentaciju dva primjera programa programi_uv[0][0][0] = 1; programi_uv[0][0][1] = 0; programi_uv[0][1][0] = 1; programi_uv[0][1][1] = 2; programi_uv[0][2][0] = 4; programi_uv[0][2][1] = 0; programi_uv[0][3][0] = 1; programi_uv[0][3][1] = 6; programi_uv[0][4][0] = 3; programi_uv[0][4][1] = 0; programi_uv[0][5][0] = 2; programi_uv[0][5][1] = 0; programi_uv[0][6][0] = 1; programi_uv[0][6][1] = 0; programi_uv[0][7][0] = 1; programi_uv[0][7][1] = 0; programi_uv[0][8][0] = 1; programi_uv[0][8][1] = 2; programi_uv[0][9][0] = 4; programi_uv[0][9][1] = 0; programi_uv[0][10][0] = 1; programi_uv[0][10][1] = 6; programi_uv[0][11][0] = 3; programi_uv[0][11][1] = 0; programi_uv[0][12][0] = 2; programi_uv[0][12][1] = 0; programi_uv[0][13][0] = 1; programi_uv[0][13][1] = 2; programi_uv[0][14][0] = 3; programi_uv[0][14][1] = 0; programi_uv[0][15][0] = 3; programi_uv[0][15][1] = 0; programi_uv[0][16][0] = 3; programi_uv[0][16][1] = 0; programi_uv[0][17][0] = 3; programi_uv[0][17][1] = 0; programi_uv[0][18][0] = 3; programi_uv[0][18][1] = 0; programi_uv[0][19][0] = 3; programi_uv[0][19][1] = 0; programi_uv_broj_naredbi[0] = 20; programi_lijek[0][0][0] = 1; programi_lijek[0][0][1] = 0; programi_lijek[0][1][0] = 1; programi_lijek[0][1][1] = 0; programi_lijek[0][2][0] = 4; programi_lijek[0][2][1] = 0; programi_lijek[0][3][0] = 1; programi_lijek[0][3][1] = 0; programi_lijek[0][4][0] = 2; programi_lijek[0][4][1] = -1; programi_lijek[0][5][0] = 2; programi_lijek[0][5][1] = 0;

18 programi_lijek[0][6][0] = 1; programi_lijek[0][6][1] = 0; programi_lijek[0][7][0] = 4; programi_lijek[0][7][1] = 0; programi_lijek[0][8][0] = 1; programi_lijek[0][8][1] = 0; programi_lijek[0][9][0] = 1; programi_lijek[0][9][1] = 0; programi_lijek[0][10][0] = 1; programi_lijek[0][10][1] = 0; programi_lijek[0][11][0] = 4; programi_lijek[0][11][1] = 0; programi_lijek[0][12][0] = 1; programi_lijek[0][12][1] = 0; programi_lijek[0][13][0] = 2; programi_lijek[0][13][1] = -1; programi_lijek[0][14][0] = 2; programi_lijek[0][14][1] = 0; programi_lijek[0][15][0] = 1; programi_lijek[0][15][1] = 0; programi_lijek[0][16][0] = 2; programi_lijek[0][16][1] = 0; programi_lijek[0][17][0] = 1; programi_lijek[0][17][1] = 0; programi_lijek[0][18][0] = 1; programi_lijek[0][18][1] = 0; programi_lijek[0][19][0] = 1; programi_lijek[0][19][1] = 0; programi_lijek[0][20][0] = 1; programi_lijek[0][20][1] = 0; programi_lijek[0][21][0] = 1; programi_lijek[0][21][1] = 0; programi_lijek_broj_naredbi[0] = 32; // void loop() Blynk.run(); if (mod == 1) programiranje(); if (mod == 2) voznja(); if (mod == 3) programiranje_podijeli_lijek(); if (mod == 4) voznja_podijeli_lijek(); if (mod == 5) patrola(); if (mod == 6) upravljanje(); if (mod == 7) programiranje_hrana(); if (mod == 8) voznja_hrana();