![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
-
Dependencies: mbed DS3231 Thermistor
Revision 0:60316223b876, committed 2019-08-12
- Comitter:
- attila0970
- Date:
- Mon Aug 12 11:11:12 2019 +0000
- Commit message:
- asd;
Changed in this revision
diff -r 000000000000 -r 60316223b876 DS323123.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DS323123.lib Mon Aug 12 11:11:12 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/cromda/code/DS3231/#6718c4fabf95
diff -r 000000000000 -r 60316223b876 Thermistor.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Thermistor.lib Mon Aug 12 11:11:12 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/attila0970/code/Thermistor/#ee3997416bcc
diff -r 000000000000 -r 60316223b876 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Aug 12 11:11:12 2019 +0000 @@ -0,0 +1,149 @@ +#include "mbed.h" +#include "DS3231.h" +#include "Thermistor.h" + + +#define read_addr 0xa0 +#define write_addr 0xa1 + + + +I2C flash(PB_3, PB_10); +DS3231 rtc(PB_9, PB_8); + +AnalogIn bed(PB_0); + +InterruptIn butt(PB_5); + +//DigitalOut led(PA_4); +DigitalOut green(PA_0); +DigitalOut red(PA_1); + +Serial pc(USBTX, USBRX); + +void page_write(char addr1, char addr2, char data); +void page_read(char addr1, char addr2); +void write_byte(char addr1, char addr2, char data); +char read_byte(char addr1, char addr2, int range); + +void callback(); + +int conv_hex_to_int(char data); + +char buff[258]; +char data[256]; + +int hour; +int minute; +int second; +int butt_flag = 0; + +double temp_buff; +float temp; +double r; +double temp_tizedes; + +int location = 2; +int eddmegafaszom = 0; + +int main() { + flash.frequency(100000); + rtc.setI2Cfrequency(400000); + pc.baud(115200); + green = 1; + red = 0; + + butt.fall(&callback); + + //pc.printf("\nI am ready! %02X %02X\n", 0x1ff >> 8, 256 >> 8); + + location = 2; //eeprom aktuális memória címnek a helye + while(1) { +//gomb lenyomás után + if(butt_flag != 0){ //gomb megnyomásához rendelt esemény + red = 1; + green = 1; + read_byte(0x00, 0x00, location); //"location" változó mennyiségében kiolvassa az adatokat az eepromból, és eltárolja majd a data tömbben. Ez a végén lévő függvényben valósul meg. + if (location >= 750){ //soros port lefagyása elleni védekező mechanizmus elje, ez bontja fel több max 750 db-os részre a data tömb elemeit. + + for (int i = 0; i < location/750; i++){ + for (int j = i*750; j < (i + 1) * 750; j += 4){ + pc.printf("%d:%d;%d.%d \n", data[i], data[i+1], data[i+2], data[i+3]); + wait_ms(10); + } + //wait_ms(50); + } + for (int i = location-(location%750); i <= location; i+=4){ + + pc.printf("%d:%d;%d.%d \n", data[i], data[i+1], data[i+2], data[i+3]); + } + } + else{ //ez a ciklus csak simán kitolja soros portra az adatokat, akkor lép bele, ha nincs 750 mért adat. + for (int i = 2; i < location; i += 4){ + pc.printf("%d:%d;%d.%d \n", data[i], data[i+1], data[i+2], data[i+3]); + wait_ms(10); + } + + wait(0.5); + location = 2; //eeprom kihasználtságát kezdi előről, az elejétől kezdi újra felülírni az eepromot. + wait(0.1); + butt_flag = 0; //gomb lenyomása utáni állapotot állítja vissza alap helyzetbe. + red = 0; + green = 1; + rtc.setTime(0, 0, 0); //rtc nullázása + } +//fő ismétlődő ciklus eleje + green = !green; //led bizgerálás + //************************************************************************************* + wait(20); //itt állítod be a mintavételi sebeggéget!!!!!! + //************************************************************************************* + rtc.readTime(&hour,&minute,&second); //kolvasod az időt az rtc-ből + + double val=bed; //* + double r=((1-val)/val)*4700; //hőmérségkelt meghatározása + temp = (1/( log(r/10000) /3950 + 1/(25+273.15))-273.15)-20.0f; //* + + //adatok beírésa az eepromba négyessével(óra, perc, hőfok 2 bíte-on) + write_byte(location >> 8, location, (char)minute); + location++; + write_byte(location >> 8, location, (char)second); + location++; + write_byte(location >> 8, location, (char)floor(temp)); + location++; + temp_tizedes = (temp-floor(temp))*100; + write_byte(location >> 8, location, (char)temp_tizedes); + location++; + + if (location >= 32000 && butt_flag == 0){ //ez volt szar eddig, bocsika.... itt ezt a 32000-et tartsd meg aztán jó lesz minden :D + red = !red; //lényegében csak belép egy végtelen ciklusba, hogy ha megtelik a memúria, és csak akkor lép ki, ha megnyomod a gombot, vagy úkraindítod a programot D: + wait(0.2); + } + } + } +} + +void callback(){ //gomb interrupt függvénye + + butt_flag = 1; + +} + + +void write_byte(char addr1, char addr2, char data){ + buff[0] = addr1; + buff[1] = addr2; + buff[2] = data; + flash.write(write_addr, buff, 3, false); + wait_ms(5); +} + +char read_byte(char addr1, char addr2, int range){ + buff[0] = addr1; + buff[1] = addr2; + flash.write(write_addr, buff, 2, true); + flash.read(read_addr, data, range, false); + char faszom = data[0]; + return faszom; +} + + \ No newline at end of file
diff -r 000000000000 -r 60316223b876 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Aug 12 11:11:12 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file