robot koji pomaže ljudima u borbi protiv zaraznih bolesti

Слични документи
Транскрипт:

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

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)

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

Potrebni dijelovi Arduino MKR 1000 1 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

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

Fritzing shema

3D printani dijelovi

Blynk aplikacija

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 e-mail 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

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);

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();

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();

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()

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.email("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)

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()

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/1000000./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

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;

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();