Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed OLED_SSD1306
Revision 0:fa9ec70cc128, committed 2022-01-31
- Comitter:
- oh_snaep
- Date:
- Mon Jan 31 20:44:44 2022 +0000
- Commit message:
- Predaja projekta
Changed in this revision
diff -r 000000000000 -r fa9ec70cc128 OLED_SSD1306.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OLED_SSD1306.lib Mon Jan 31 20:44:44 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/Helmut64/code/OLED_SSD1306/#99a409809366
diff -r 000000000000 -r fa9ec70cc128 ikone.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ikone.h Mon Jan 31 20:44:44 2022 +0000
@@ -0,0 +1,45 @@
+const unsigned static char settings_48x48[] = {
+ 0x00, 0x00, 0xC0, 0x02, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00,
+ 0x00, 0x07, 0xF8, 0x1F, 0xE0, 0x00, 0x80, 0x1F, 0xFC, 0x3F, 0xF8, 0x01,
+ 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0x80, 0xFF, 0x3F, 0xFD, 0xFF, 0x01, 0x80, 0xFF, 0x07, 0xE0, 0xFF, 0x00,
+ 0x00, 0xFF, 0x01, 0x80, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00,
+ 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xFC, 0x01,
+ 0x80, 0x3F, 0x00, 0x00, 0xF8, 0x01, 0xC0, 0x1F, 0x00, 0x00, 0xF8, 0x07,
+ 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x1F, 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0x7F,
+ 0xFF, 0x0F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF,
+ 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0xF0, 0xFF,
+ 0xFE, 0x0F, 0x00, 0x00, 0xF8, 0x7F, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x1F,
+ 0xC0, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0x80, 0x3F, 0x00, 0x00, 0xFC, 0x01,
+ 0x80, 0x7F, 0x00, 0x00, 0xFE, 0x01, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00,
+ 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x03, 0xC0, 0xFF, 0x00,
+ 0x00, 0xFF, 0x07, 0xE0, 0xFF, 0x01, 0x80, 0xFF, 0x7F, 0xFD, 0xFF, 0x01,
+ 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0x80, 0x1F, 0xFE, 0x7F, 0xF8, 0x01, 0x00, 0x0F, 0xF8, 0x1F, 0xF0, 0x00,
+ 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x05, 0x00, 0x00,
+ };
+
+const unsigned static char strelica_desno_12x9[] = {
+ 0x02, 0x00, 0x1E, 0x00, 0x7E, 0x00, 0xFE, 0x03, 0xFF, 0x07, 0xFE, 0x01,
+ 0x7E, 0x00, 0x0E, 0x00, 0x02, 0x00, };
+
+const unsigned static char strelica_lijevo_12x9[] = {
+ 0x00, 0x04, 0x00, 0x07, 0xE0, 0x07, 0xF8, 0x07, 0xFE, 0x0F, 0xFC, 0x07,
+ 0xE0, 0x07, 0x80, 0x07, 0x00, 0x04, };
+
+const unsigned char x_9x9[] = {
+ 0x83, 0x01, 0xC7, 0x01, 0xEE, 0x00, 0x7C, 0x00, 0x38, 0x00, 0x7C, 0x00,
+ 0xEE, 0x00, 0xC7, 0x01, 0x83, 0x01, };
+
+
+const unsigned char check_11x9[] = {
+ 0x00, 0x06, 0x00, 0x07, 0x80, 0x03, 0xC3, 0x01, 0xE7, 0x00, 0x7E, 0x00,
+ 0x3C, 0x00, 0x18, 0x00, 0x00, 0x00, };
+
+
diff -r 000000000000 -r fa9ec70cc128 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Jan 31 20:44:44 2022 +0000
@@ -0,0 +1,261 @@
+#include "mbed.h"
+#include "ikone.h"
+#include "SSD1306I2C.h"
+
+Serial pc(USBTX, USBRX);
+
+Timer debounce;
+Timer gasenje_zaslona;
+
+InterruptIn desno(D7);
+InterruptIn potvrda(D5);
+InterruptIn otkaz(D6);
+InterruptIn lijevo(D4);
+
+bool aktuator=false;
+bool potvrda_ulaska_u_izbornik=false;
+bool potvrda_ulaska_u_podizbornik=false;
+uint8_t postavka_gasenja_zaslona=15; //5, 15, 30 sekundi
+//bool postavka_izbornika=false;
+
+void ispis_desno(void);
+void ispis_potvrda(void);
+void ispis_otkaz(void);
+void ispis_lijevo(void);
+
+SSD1306I2C display(0x3c, D14, D15);
+
+DigitalOut myled(LED1);
+void izbornik_tipke(void);
+
+uint8_t izbornik=0;
+uint8_t pod_izbornik=0;
+uint8_t postavka_izbornika=0;
+
+int main()
+{
+
+ desno.rise(ispis_desno);
+ potvrda.rise(ispis_potvrda);
+ otkaz.rise(ispis_otkaz);
+ lijevo.rise(ispis_lijevo);
+ display.init();
+ display.resetDisplay();
+ display.setFont(ArialMT_Plain_10);
+ display.drawString(30,0,"Vanja Belosevic");
+ display.drawString(35,20,"0246076901");
+ display.drawString(38,40,"2021/2022");
+ //display.drawStringMaxWidth(0,0,128,"Vanja Belosevic");
+ //display.drawStringMaxWidth(0,20,128,"0246076901");
+ //display.drawStringMaxWidth(0,40,128,"2021/2022");
+ display.display();
+ pc.printf("Mirko pokrenut!");
+ wait(5);
+ display.clear();
+ gasenje_zaslona.start();
+
+ while(1) {
+
+ if(gasenje_zaslona >= postavka_gasenja_zaslona) {
+ display.displayOff();
+ } else {
+ display.displayOn();
+ }
+
+ if(izbornik == 0 && potvrda_ulaska_u_podizbornik == false && potvrda_ulaska_u_izbornik == false) {
+ display.clear();
+ display.setFont(ArialMT_Plain_10);
+ display.drawString(0,0,"Stanje aktuatora:");
+ display.setFont(ArialMT_Plain_16);
+ if(aktuator == false) {
+ display.drawString(0,20,"OFF");
+ } else if(aktuator == true) {
+ display.drawString(0,20,"ON");
+ }
+ } else if(izbornik == 1 || (potvrda_ulaska_u_izbornik == true || potvrda_ulaska_u_podizbornik == true)) {
+ if(potvrda_ulaska_u_izbornik == false && potvrda_ulaska_u_podizbornik == false) {
+ display.clear();
+ display.drawXbm(40,0,48,48,settings_48x48); //x početno, y početno, širina, visina, char polje od slike
+ } else if(potvrda_ulaska_u_izbornik == true && potvrda_ulaska_u_podizbornik == false) {
+ if(pod_izbornik == 0) {
+ display.clear();
+ display.setFont(ArialMT_Plain_10);
+ display.drawStringMaxWidth(0,0,128,"Odabir stanja aktuatora?");
+ } else if(pod_izbornik == 1) {
+ display.clear();
+ display.setFont(ArialMT_Plain_10);
+ display.drawStringMaxWidth(0,0,128,"Odabir perioda automatskog gasenja zaslona?");
+ }
+ } else if(potvrda_ulaska_u_izbornik == false && potvrda_ulaska_u_podizbornik == true) {
+ display.clear();
+ display.setFont(ArialMT_Plain_10);
+ if(pod_izbornik == 0) {
+ if(postavka_izbornika == 0) {
+ display.drawStringMaxWidth(0,0,128,"Aktuator :");
+ display.setFont(ArialMT_Plain_16);
+ display.drawString(60,30,"OFF?");
+ } else if(postavka_izbornika == 1) {
+ display.drawStringMaxWidth(0,0,128,"Aktuator :");
+ display.setFont(ArialMT_Plain_16);
+ display.drawString(60,30,"ON?");
+ }
+ } else if(pod_izbornik == 1) {
+ if(postavka_izbornika == 0) {
+ display.drawStringMaxWidth(0,0,128,"Odabir :");
+ display.drawStringMaxWidth(0,30,128,"5 sekundi?");
+ } else if(postavka_izbornika == 1) {
+ display.drawStringMaxWidth(0,0,128,"Odabir :");
+ display.drawStringMaxWidth(0,30,128,"15 sekundi?");
+ } else if(postavka_izbornika == 2) {
+ display.drawStringMaxWidth(0,0,128,"Odabir :");
+ display.drawStringMaxWidth(0,30,128,"30 sekundi?");
+ }
+ }
+ }
+
+ }
+ izbornik_tipke();
+ display.display();
+ }
+}
+
+//wait(10.0);
+
+//pc.printf("%d\n",x);
+
+
+void ispis_desno()
+{
+ debounce.start();
+ if(debounce.read_ms() >= 150) {
+ pc.printf("desna tipka pritisnuta!\n");
+ if(potvrda_ulaska_u_izbornik == false && potvrda_ulaska_u_podizbornik == false) {
+ --izbornik;
+ if(izbornik >= 2) izbornik = 1;
+ } else if(potvrda_ulaska_u_izbornik == true && potvrda_ulaska_u_podizbornik == false) {
+ //potvrda_ulaska_u_izbornik = false;
+ --pod_izbornik;
+ if(pod_izbornik >= 2) pod_izbornik = 1;
+ } else if(potvrda_ulaska_u_podizbornik == true && potvrda_ulaska_u_izbornik == false) {
+ --postavka_izbornika;
+ if(pod_izbornik == 0) {
+ if(postavka_izbornika >= 2) postavka_izbornika = 1;
+ } else if (pod_izbornik==1) {
+ if(postavka_izbornika >= 3) postavka_izbornika = 2;
+ }
+ }
+ debounce.reset();
+ display.displayOn();
+ gasenje_zaslona.reset();
+ pc.printf("Stanje varijable izbornik: %d\n",izbornik);
+ pc.printf("Stanje varijable pod_izbornik: %d\n",pod_izbornik);
+ pc.printf("Stanje varijable postavka_izbornika %d",postavka_izbornika);
+ pc.printf("potvrda_ulaska_u_izbornik: %d\n",potvrda_ulaska_u_izbornik);
+ pc.printf("potvrda_ulaska_u_podizbornik: %d\n",potvrda_ulaska_u_podizbornik);
+ }
+
+}
+
+void ispis_potvrda()
+{
+ debounce.start();
+ if(debounce.read_ms() >= 150) {
+ pc.printf("tipka potvda pritisnuta!\n");
+ debounce.reset();
+ display.displayOn();
+ gasenje_zaslona.reset();
+ if(izbornik == 1 && potvrda_ulaska_u_izbornik == false && potvrda_ulaska_u_podizbornik == false) {
+ potvrda_ulaska_u_izbornik = true;
+ potvrda_ulaska_u_podizbornik = false;
+ pod_izbornik = 0;
+ postavka_izbornika = 0;
+ } else if(potvrda_ulaska_u_izbornik == true && potvrda_ulaska_u_podizbornik == false) {
+ potvrda_ulaska_u_podizbornik = true;
+ potvrda_ulaska_u_izbornik = false;
+ } else if(potvrda_ulaska_u_izbornik == false && potvrda_ulaska_u_podizbornik == true) {
+ if(pod_izbornik == 0 && postavka_izbornika == 0) {
+ aktuator = false;
+ } else if(pod_izbornik == 0 && postavka_izbornika == 1) {
+ aktuator = true;
+ } else if(pod_izbornik == 1 && postavka_izbornika == 0) {
+ postavka_gasenja_zaslona=5;
+ } else if(pod_izbornik == 1 && postavka_izbornika == 1) {
+ postavka_gasenja_zaslona=15;
+ } else if(pod_izbornik == 1 && postavka_izbornika == 2) {
+ postavka_gasenja_zaslona=30;
+ }
+ potvrda_ulaska_u_podizbornik = false;
+ potvrda_ulaska_u_izbornik = true;
+ }
+ pc.printf("potvrda_ulaska_u_izbornik: %d\n",potvrda_ulaska_u_izbornik);
+ pc.printf("potvrda_ulaska_u_podizbornik: %d\n",potvrda_ulaska_u_podizbornik);
+ }
+}
+
+void ispis_otkaz()
+{
+ debounce.start();
+ if(debounce.read_ms() >= 150) {
+ pc.printf("tipka otkaz pritisnuta!\n");
+ debounce.reset();
+ display.displayOn();
+ gasenje_zaslona.reset();
+
+ if(potvrda_ulaska_u_izbornik == true && potvrda_ulaska_u_podizbornik == false) {
+ pod_izbornik=0;
+ izbornik=1;
+ potvrda_ulaska_u_izbornik = false;
+ } else if(potvrda_ulaska_u_izbornik == false && potvrda_ulaska_u_podizbornik == true) {
+ potvrda_ulaska_u_podizbornik = false;
+ potvrda_ulaska_u_izbornik = true;
+ pod_izbornik=0;
+ postavka_izbornika=0;
+ izbornik=1;
+ }
+ pc.printf("potvrda_ulaska_u_izbornik: %d\n",potvrda_ulaska_u_izbornik);
+ pc.printf("potvrda_ulaska_u_podizbornik: %d\n",potvrda_ulaska_u_podizbornik);
+ }
+}
+
+void ispis_lijevo()
+{
+ debounce.start();
+ if(debounce.read_ms() >= 150) {
+ pc.printf("lijeva tipka pritisnuta!\n");
+
+ if(potvrda_ulaska_u_izbornik == false && potvrda_ulaska_u_podizbornik == false) {
+ ++izbornik;
+ if(izbornik >= 2) izbornik = 0;
+ } else if(potvrda_ulaska_u_izbornik == true && potvrda_ulaska_u_podizbornik == false) {
+ ++pod_izbornik;
+ if(pod_izbornik >= 2) pod_izbornik = 0;
+ } else if(potvrda_ulaska_u_podizbornik == true && potvrda_ulaska_u_izbornik == false) {
+ ++postavka_izbornika;
+ if(pod_izbornik == 0) {
+ if(postavka_izbornika >= 2) postavka_izbornika = 0;
+ } else if (pod_izbornik==1) {
+ if(postavka_izbornika >= 3) postavka_izbornika = 0;
+ }
+ }
+ debounce.reset();
+ display.displayOn();
+ gasenje_zaslona.reset();
+ pc.printf("Stanje varijable izbornik: %d\n",izbornik);
+ pc.printf("Stanje varijable pod_izbornik: %d\n",pod_izbornik);
+ pc.printf("Stanje varijable postavka_izbornika: %d\n",postavka_izbornika);
+ pc.printf("potvrda_ulaska_u_izbornik: %d\n",potvrda_ulaska_u_izbornik);
+ pc.printf("potvrda_ulaska_u_podizbornik: %d\n",potvrda_ulaska_u_podizbornik);
+ }
+
+}
+
+//trajni izbornik na dnu zaslona, sadrži ikone za korištenje tipki
+void izbornik_tipke()
+{
+ display.drawHorizontalLine(0,52,128);
+ display.drawXbm(0,55,12,9,strelica_lijevo_12x9);
+ display.drawXbm(108,55,12,9,strelica_desno_12x9);
+ display.drawXbm(42,55,9,9,x_9x9);
+ display.drawXbm(75,55,11,9,check_11x9);
+ //display.display();
+}
diff -r 000000000000 -r fa9ec70cc128 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Jan 31 20:44:44 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file