
Test
Revision 0:a112caadb490, committed 2021-05-04
- Comitter:
- tgrgic1
- Date:
- Tue May 04 11:16:48 2021 +0000
- Commit message:
- 1
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Tue May 04 11:16:48 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue May 04 11:16:48 2021 +0000 @@ -0,0 +1,216 @@ +#include "mbed.h" +#include "TextLCD.h" + +I2C rtc(PTC9, PTC8); +BusOut status_led(D8,D9,D10); +Serial pc(USBTX, USBRX); +TextLCD lcd(PTE20, PTE21, PTE22, PTE23, PTE29, PTE30, TextLCD::LCD16x2); +InterruptIn tipkalo(D2); +Serial HC06(PTE0,PTE1); +Timeout povratak; +Timer vrijeme; + +char data_in[7]={'\0'}; +char generated_code[13]={'\0'}; + +int promjena=3,br; +char temp; +char simbol; +bool poslano; +bool pocetno_stanje=0; + +void getData(){ + int adr = 0x51; + char reg_address[1] = {0x04}; + rtc.write(adr << 1, ®_address[0],1,true); + rtc.read((adr << 1)| 0x01 ,data_in,7,false); + } + +bool generateCode(){ + int sample; + int j = 0; + memset( data_in, '.', 7 ); + getData(); + + memset( generated_code, '.', 12 ); + + for(int i = 0; i<7; i++){ + if(i == 4) i++; + sample = data_in[i] >> 4 & 0x0F; // 01011100 >> 4 -> 00000101 & 0x0F -> + generated_code[j]= sample + 48; + j++; + sample = data_in[i] & 0x0F; + generated_code[j]= sample + 48; + j++; + } + + for(int i=0; i<12; i++){ + if(generated_code[i] < '0' || generated_code[i] > '9') + return 1; + } + return 0; +} + + +void setTime(char sati,char min,char sec,char dan,char mjesec,char godina){ + + int adr = 0x51; + bool ponovljeni_start = true; + + char data[6] ={sec,min,sati,dan,mjesec,godina}; + char registri[6] ={0x04,0x05,0x06,0x07,0x09,0x0A}; + char data_out[3]={'\0'}; + + for(int i = 0; i<6; i++){ + if(i == 5) ponovljeni_start = false; + data_out[0] = registri[i]; + data_out[1] = data[i]; + rtc.write(adr << 1, data_out,2,ponovljeni_start); + } +} + +void ispisNaLCD(){ + promjena = 1; + } + +void nazad(){ + promjena = 0; + } + +void slanje(){ + lcd.cls(); + lcd.printf("Slanje"); + status_led = (status_led | 1); + + while(vrijeme.read()<5 && poslano == 0){ + for(br = 6; br < 9; br++){ + lcd.locate(br,0); + lcd.printf("."); + HC06.putc('1'); + wait(0.5); + if(poslano){break;} + } + lcd.locate(6,0); + lcd.printf(" "); + wait(0.5); + } + if(poslano){ + vrijeme.stop(); + vrijeme.reset(); + lcd.cls(); + lcd.printf("Generirani kod:"); + lcd.locate(0,1); + lcd.printf("%s",generated_code); + poslano = 0; + povratak.attach(&nazad,30); + promjena = 2; + return; + }else{ + vrijeme.stop(); + vrijeme.reset(); + lcd.cls(); + lcd.printf("Nije se moguce"); + lcd.locate(0,1); + lcd.printf("spojiti!"); + status_led = (status_led & ~1); + wait(5); + poslano = 0; + promjena =0; + } + + } + +void fun(){ + simbol = HC06.getc(); + pc.printf("%c", simbol); + switch (simbol){ + + case '?': + status_led = 0b011; + for(int i=0; i<12; i++) + HC06.putc(generated_code[i]); + poslano = 1; + status_led= 0b010; + + break; + + case 'N': + status_led = 0b100; + promjena = 3; + break; + + case 'R': + status_led= 0b010; + pocetno_stanje =1; + promjena = 0; + break; + + + } + } + + +int main() { + HC06.baud(9600); + HC06.format(8,SerialBase::None,1); + rtc.frequency(100000); //100kHZ + HC06.attach(&fun, Serial::RxIrq); + //setTime(0x16,0x03,0x30,0x12,0x02,0x21); + HC06.putc('?'); + status_led = 0b100; + lcd.cls(); + lcd.printf("Povezivanje"); + while(1) { + while(pocetno_stanje == 0){ + for(br = 11; br < 14; br++){ + lcd.locate(br,0); + lcd.printf("."); + HC06.putc('?'); + wait(0.5); + } + lcd.locate(11,0); + lcd.printf(" "); + wait(0.5); + } + switch(promjena){ + + default: + tipkalo.fall(&ispisNaLCD); + wait(1); + lcd.cls(); + lcd.printf(" Generator"); + lcd.locate(0,1); + lcd.printf(" koda"); + promjena = 2; + break; + + case 1: + tipkalo.fall(NULL); + bool check = generateCode(); + if(check){ + check = 0; + lcd.cls(); + lcd.printf("ERROR"); + wait(1); + promjena = 0; + break; + } + vrijeme.start(); + slanje(); + + break; + + case 2: + break; + + case 3: + povratak.detach(); + lcd.cls(); + lcd.printf("Standby/Locked"); + promjena = 2; + break; + + } + + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue May 04 11:16:48 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file