//------- - 15.04.2021 // DEMO LABIRINTH GAME //------- #include // variables for this sample int tip1 = A0; int tip2 = A1; int tip3 = A2; int tip4 = A3; //--------------- VARIABLES USED IN MODULES - MUST BE char pit = ""; int spd = 8; //--------------- void setup() { //----------- START I2C COMMUNICATION - MUST BE Wire.setClock(100000); Wire.begin(); // join i2c bus //----------- pinMode(tip1, INPUT); pinMode(tip2, INPUT); pinMode(tip3, INPUT); pinMode(tip4, INPUT); begin_def(); // start screen } void loop() { trazi(); if (pit == 9) { end_prog(); } if (pit > 1 && pit < 5) { sound_light(); } if (digitalRead(tip1) == LOW) { ispis("BUT;+;X;2"); } if (digitalRead(tip2) == LOW) { ispis("BUT;-;X;2"); } if (digitalRead(tip3) == LOW) { ispis("BUT;+;Y;2"); } if (digitalRead(tip4) == LOW) { ispis("BUT;-;Y;2"); } delay(50); } //------------------------------------------------------------ SETTINGS void begin_def() // all settings you need in program { ispis("RST"); delay(200); ispis("CLS"); delay(500); ispis("BIT;1;0;0;0;0;0;0;0;195"); ispis("BIT;9;60;126;219;219;255;219;102;255"); // player ispis("BIT;2;8;28;54;99;54;28;8;0"); // PLUS ispis("BIT;3;195;219;60;126;126;60;219;195"); // minus ispis("BIT;5;255;255;129;255;255;129;255;255"); // wall ispis("BIT;4;0;66;36;24;24;36;66;0"); // door (DOR) begin_prog(); ispis("CLS"); ispis("OBJ;1;1;0;0;2"); // dots ispis("OBJ;1;5;2;0;2"); // ispis("OBJ;1;5;5;0;3"); ispis("OBJ;1;5;3;1;1"); ispis("OBJ;1;5;8;1;3"); ispis("OBJ;1;2;6;3;1"); // plus ispis("OBJ;1;2;5;1;1"); // plus ispis("OBJ;1;5;5;2;1"); ispis("OBJ;1;3;4;2;1"); // minus live ispis("OBJ;1;5;0;3;6"); ispis("OBJ;1;5;7;3;2"); ispis("OBJ;1;4;7;2;1"); // door right left ispis("OBJ;1;5;10;3;1"); ispis("OBJ;1;2;3;4;1"); // plus ispis("OBJ;1;5;0;5;4"); ispis("OBJ;1;5;5;5;6"); ispis("PAD;0"); ispis("POZ;1;1"); ispis("FX;1"); ispis("KOL;1"); ispis("BOD;0"); ispis("LIV;2"); ispis("DOR"); ispis("BUT"); } //------------------------------------------------------------ ALL MODULES void ispis(String poruka) { Serial.println(poruka); poruka = poruka + ";"; int duz = poruka.length(); if (duz > 30) { String por1 = poruka.substring(0,30)+"+"; char dio1[31]; por1.toCharArray(dio1,duz); Wire.beginTransmission(0x11); Wire.write(dio1); Wire.endTransmission(); String por2 = poruka.substring(30); duz = por2.length(); char dio2[duz]; por2.toCharArray(dio2,duz); Wire.beginTransmission(0x11); Wire.write(dio2); Wire.endTransmission(); delay(duz*spd); } else { char copy[duz]; poruka.toCharArray(copy,duz); Wire.beginTransmission(0x11); Wire.write(copy); Wire.endTransmission(); delay(duz*spd); } } void trazi(){ Wire.requestFrom(0x11,1); while (Wire.available()) { pit = Wire.read(); } } void begin_prog() { ispis("CLS"); ispis("START;2;1;2"); ispis("G A M E;3;3"); delay(2000); } void end_prog(){ delay(300); trazi(); delay(300); ispis("CLS"); ispis("E N D;2;1;2"); ispis("G A M E;3;3"); ispis("Score:"+String(int(pit))+";3;4"); while (true){ delay(5000); } } void rest(){ ispis("RST"); while(true) { trazi(); if (pit == 5){ break; } delay(20); } } void sound_light(){ if (pit == 2){ // POINTS ispis("BIP;200;50"); ispis("LED;G;50"); } if (pit == 3) { // LIFES ispis("BIP;800;50"); ispis("LED;R;50"); } if (pit == 4){ // FALL ispis("BIP;1200;50"); ispis("LED;R;50"); } }