Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Arduino.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_ST7735.h>
- #include <Adafruit_INA219.h>
- #include <DallasTemperature.h>
- #include <SPI.h>
- #include <OneWire.h>
- #include <Wire.h>
- #include "RTClib.h"
- #include <FastLED.h>
- //#include <EasyButton.h>
- #include <SD.h>
- #include <Adafruit_PCF8575.h>
- #include "Symbole.h"
- //#include <Filter.h>
- //#include <WiFi.h>
- //#include <ListLib.h>
- #define TFT_DC 12 //% A0
- #define TFT_CS 13 //% CS
- #define TFT_MOSI 14 //% SDA
- #define TFT_CLK 27 //% SCK
- #define TFT_RST 0
- #define TFT_MISO 0
- #define EXP_INT 0
- #define TERMOPARA_CS 4
- #define RS485_RX 16
- #define RS485_TX 17
- #define RS485_EN 32
- #define AFR 35
- #define MUX_IN 25
- #define D_TEMP_PIN 0
- #define LULU_PIN 36
- #define LED_PIN 2 //% Pin Diod RGB (wskaźników)
- #define NUM_LEDS 8 //% Ilość diod
- #define BRIGHTNESS 100 //% Moc świecenia
- #define LED_TYPE WS2812 //% Typ diod
- #define COLOR_ORDER GRB //% Konfiguracja kolorystyczna
- #define UPDATES_PER_SECOND 100
- #define WTRYSK_BUTTON 26 //% Definicja wtrysku jako przycisk
- #define kartaSD 5 //% Pin Karty SD
- #define PinWtrysk 39 //% Pin wtrysku (Jeżeli to wina tego pinu to chce użyć pinu 35, obecnie przeznaczonego do AFR)
- #define PinHalla 34 //% Pin czujnika halla
- #define PinObroty 33 //% Pin podpisany jako zapłon ale wykorzystywany do pomiaru obrotów
- uint16_t kolorTla; //% Definicja koloru Tła/podświetlenia
- uint16_t kolorTex; //% Definicja koloru tekstu
- uint16_t kolorClk; //% Definicja koloru zegarka
- #define czasResetu 2000 //% Czas przez jaki trzeba przytzymać przycisk Reset żeby zresetować zmienną
- #define linijek 20 //% liczba linijek zapisu danych w pliku
- File buforDanych; //% plik który przechowuje TYLKO najświeższe dane
- File aktualnyPlikZapisu; //% plik który przechowuje wszystkie dane z jednego dnia
- File najnowszyPlikOdczytu; //% najmłodszy odnaleziony plik zawirający dane
- File config; //% plik konfiguracyjny :D
- TaskHandle_t wTle;
- Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST);
- Adafruit_INA219 ina219;
- RTC_DS1307 rtc;
- CRGB leds[NUM_LEDS];
- //CRGBPalette16 currentPalette;
- //TBlendType currentBlending;
- //extern CRGBPalette16 myRedWhiteBluePalette;
- //extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM;
- Adafruit_PCF8575 pcf;
- OneWire oneWire(26);
- DallasTemperature sensors(&oneWire);
- DeviceAddress sensorOUT = { 0x28, 0xFF, 0x64, 0xE, 0x6A, 0x21, 0x21, 0xE4 };
- DeviceAddress sensorIN = { 0x28, 0xFF, 0x64, 0xE, 0x6B, 0xBA, 0xD5, 0xBA };
- //EasyButton przyciskFunkcji(FUNKCJA_BUTTON);
- //EasyButton przyciskTrybu(RESET_BUTTON);
- //EasyButton przyciskResetu(TRYB_BUTTON);
- //EasyButton przyciskWtrysk(WTRYSK_BUTTON);
- //EasyButton przyciskZaplon(ZAPLON_BUTTON);
- bool diagnosta=false; //% zmienna odpowiedzialna za tryb diangostyczny
- //& ZMIENNE PRZYPISANE DO STANÓW NA WEJŚCIACH EXPENDERA
- unsigned long czasPrzytrzymaniaPrzycisku;
- bool zaplon;
- bool swiatla;
- bool GPIOtrzyTrzy;
- bool GPIOtrzyCztery;
- bool buzzer=false;
- bool MUX_A;
- bool MUX_B;
- bool MUX_C;
- bool MANETKAreset;
- bool MANETKAfunckja;
- bool MANETKAtryb;
- bool ESP_RESET;
- bool zlonczeUI;
- bool zlonczeUII;
- bool zlonczeUIII;
- bool LCD_LED;
- float NTC_ONE;
- float NTC_TWO;
- float czisOlej;
- float czisBoost;
- byte muxCode[8][3]{
- {0,0,0},
- {1,0,0},
- {0,1,0},
- {1,1,0},
- {0,0,1},
- {1,0,1},
- {0,1,1},
- {1,1,1},
- };
- //& ZMIENNE POTRZEBNE DO FUNKCJI OPBLICZANIA SPALANIA
- volatile bool nowyImpuls;
- volatile bool nowyImpuls2;
- volatile unsigned long czasImpulsu;
- volatile unsigned long czasImpulsu2;
- float czasOtwarciaWT; //% czas impulstu czyli czas otwarcia wtrusku * ilość otwarć, żeby obliczzyć splanaie trzeba pomnożyć przez stałaW
- float stalaW=0.01355; //% stała wtrysku (ml/milisekunde) float stalaW=0.014183, 0.003416, 0.01355;
- float spalanieM; //% splanie na cykl,
- float spalanieLS; //% spalnie L w trzech sekundzach "chwilowe"
- float spalanieLH; //% spalnie L w godzine "chwilowe"
- float sumaSpalania1km; //% suma srednich spalan paliwa w 1km
- float iloscOdczytow1km; //% ilosc pobranych odczytow spalania w 3s
- float SrSpalanie1km; //% srednie spalanaie w 1km
- float SrSpalanie100km; //% srednie spalanie na 100km
- float najSpalanie; //% maksymalne osiagnięte spalanie
- float spalonePaliwoTrip; //% zurzyte paliwo trip1
- float spalonePaliwoSuma; //% zurzyte paliwo suma
- float spalonePaliwoDzienne; //% zurzyte paliwo dzienne
- unsigned long poprzedniOczyt=0; //% zmienna do zapisania kiedy poprzedni odczyt
- //& ZIENNE POTRZEBNE DO FUNKCJI OBLICZANIA PRĘDKOSCI
- int c; //% ilosc cykli w predkosciomierzu
- unsigned long czasPrzed; //% czas przed pełnym obortem koła od predkościomierza
- unsigned long czasPo; //% czas po pełnym obortem koła od predkościomierza
- float roznicaP=0.00; //% czas oborotu koła magnetycznego w prętkościomierzu
- float predkosc; //% predkosc samochodu
- float predkoscMS; //% predkość w metrach na sekunde
- float SrPredkosc[3]; //% tablica do obliczania sredniej prędkosci
- float MaxPredkosc; //% Maksymalna osiągnięta prędkosć
- bool zero; //% umozliwiająca wskazanie predkości na 0 km/h
- bool a, b; //% do predkosciomeirza
- //& ZMIENNE POTRZEBNE DO FUNKCJI OBLICZANIA PRZEJECHANEGO DSYTANSU
- bool tylkoRazPD; //% żeby przejechany dystans tylko raz sie naliczyczl
- float PDystansM; //% przejechany dystans w metrach
- float PDystansKM; //% przejechany dystans w kilometrach dzienny
- float PDystansKMpop;
- float PDystansKMSuma; //% przejechany dystans w kilometrach SUMA
- float PDystansKMTrip1; //% przejechany dystans od restetu tzw. trip1
- float PDystansKMOdtankowania; //% przejechany dystans od tankowania
- int przebiegPrzed=701; //% przebieg samochodu przed zamontawniem MFA 2.0
- int przebieg; //% przebieg aktualny czyli przebiegPrzed + przejechany dystans
- int rozrzad; //% ile km temu był wymieniany rozrzad
- int olej; //% ile km temu był wymieniany olej
- float roznicaDoDys=0.000; //% zmienna wynikająca z dzielenia roznicyP przez 1000 do obliczania przjejechanego dystansu
- //& ZMIENNE POTRZEBNE DO FUNKCJI OBLICZANIA CZSU PRACY SILNIKA
- float czasPracySilnikaSuma; //% czas pracy silnika SUMA
- int czasPracySilnikaGodziny; //% czas pracy silniak dzienny w godzinach
- int czasPracySilnikaMinuty; //% czas pracy silnika dzienny w minutach
- float czasPracySilnikaMinutySuma; //% czas pracy silnika SUMA w minutach oblicza po resesie w setup
- unsigned long czasStartowy = 0; //% Czas początkowy aktywacji sygnału
- unsigned long czasTrwania = 0; //% Całkowity czas trwania sygnału
- bool sygnalWystepuje = false; //% Flaga wskazująca, czy sygnał występuje
- const unsigned long limitCzasu = 10000; //% Limit czasu, po którym uznajemy, że sygnał zanikł (4 sekundy)
- //& ZMIENNE POTRZEBNE DO FUNKCJI OBLICZANIA NAPIECIA AKUMULATROA
- float napiecie; //% napięcie akumulatora
- float moc;
- //& ZMIENNE POTRZEBNE DO FUNKCJI OBLICZANIA ILOSCI PALIWA
- float odczytMiliVoltP; //% odczyt przez dzilenik napiecia
- float odczytVoltP; //% przekształcenie odczytu na faktyczne napięcie na wskaźniku
- float aktualnyStanPaliwa;
- float zatankowanoOstatnio;
- unsigned long ostatniOczdczytCzasu1=0;
- unsigned long ostatniOczdczytCzasu2=0;
- float sumaPaliwa; //% do średnije
- float sredniePaliwo;
- //float spalonePaliwoTrip; //% zurzyte paliwo trip1
- //float spalonePaliwoSuma; //% zurzyte paliwo suma
- //float spalonePaliwoDzienne; //% zurzyte paliwo dzienne
- //& ZMIENNE POTRZEBNE DO FUNKCJI MIERZENIA TEMPERATURY CIECZY
- float temperaturaCieczy;
- float SrTemperaturaCieczy;
- float odczytMiliVoltT; //% odczyt przez dzilenik napiecia
- float odczytVoltT; //% przekształcenie odczytu na faktyczne napięcie na wskaźniku
- //& ZMIENNE POTRZEBNE DO FUNKCJI MIERZENIE TEMPERATURY OLEJU
- float odczytMiliVoltO; //% odczyt przez dzilenik napiecia
- float temperaturaOleju;
- float SrTemperaturaOleju;
- //& RESZTA NIE PRZYPISANNYCH ZMIENNYCH
- bool wycz; //% czy wyczyszczony wsywietlacz przed wyswieleniem nowej funkcji
- char zegarekBuf[12]; //% tablice z datą i godzina
- int licznikW=1; //% licznik ilości wciśnięć przycisku funkcji
- int tryb; //% zmienna określajaca tryb MFA 1 albo 2
- bool trzaReset; //% określenie czy należy wykonać reset
- bool stanSamochodu; //% true = zaplon on false = zgaszony
- bool popStanSamochodu; //% zapis poprzedniego stanu samochodu
- bool tylkoRazSA;
- //& ZMIENNE POTRZEBNE DO ZAPISU I ODCZYTU DANYCH Z KARTY
- bool wyslanoKlucz = false;
- bool odebranoKlucz = false;
- bool mogeZmienicEkran = true;
- String nrSeryjny;
- float stW;
- int liczbaW;
- int pojemnoscBaku;
- int aktEkran=1;
- String vSoft= "0.67";
- long najwczesniej = 0;
- String nazwaPliku = "";
- String pobraneDane[][2] = //% tablica przechowująca pobrane dane z pliku SD; pierwsza kolumna to index danych a druga to wartość
- {
- {"01|", "0"}, //% przebieg
- {"02|", "0"}, //% przejechany dystans Trip1
- {"03|", "0"}, //% przejechany dysatns od tankowania
- {"04|", "0"}, //% średnia spalanie
- {"05|", "0"}, //% maksymalna osiągnięta prędkość
- {"06|", "0"}, //% srednie prędkość
- {"07|", "0"}, //% czas pracy silnika
- {"08|", "0"}, //% zatankowane ostatnio paliwo
- {"09|", "0"}, //% spalone paliwo suma
- {"10|", "0"}, //% średnia temperatura cieczy
- {"11|", "0"}, //% średnia temperatura oleju
- {"12|", "0"}, //% ile kilmetrów temu byl wymeinay olej
- {"13|", "0"}, //% ile kilmetrów temu byl wymeinay rozrzed
- {"14|", "0"}, //% najwysze spalanie
- {"15|", "0"}, //% pusta linijka
- {"16|", "0"}, //% pusta linijka
- {"17|", "0"}, //% pusta linijka
- {"18|", "0"}, //% pusta linijka
- {"19|", "0"}, //% pusta linijka
- {"20|", " "}, //% pusta linijka
- };
- String daneDoZapisu[][2] = //% tablica przechowująca pobrane dane z pliku SD; pierwsza kolumna to index danych a druga to wartość
- {
- {"01|", "0"}, //% przebieg
- {"02|", "0"}, //% przejechany dystans Trip1
- {"03|", "0"}, //% przejechany dysatns od tankowania
- {"04|", "0"}, //% średnia spalanie
- {"05|", "0"}, //% maksymalna osiągnięta prędkość
- {"06|", "0"}, //% srednie prędkość
- {"07|", "0"}, //% czas pracy silnika
- {"08|", "0"}, //% zatankowane ostatnio paliwo
- {"09|", "0"}, //% spalone paliwo suma
- {"10|", "0"}, //% średnia temperatura cieczy
- {"11|", "0"}, //% średnia temperatura oleju
- {"12|", "0"}, //% ile kilometrow temu byl wymieniany olej
- {"13|", "0"}, //% ile kilmetrów temu byl wymeinay rozrzed
- {"14|", "0"}, //% najwysze spalanie
- {"15|", "0"}, //% pusta linijka
- {"16|", "0"}, //% pusta linijka
- {"17|", "0"}, //% pusta linijka
- {"18|", "0"}, //% pusta linijka
- {"19|", "0"}, //% pusta linijka
- {"20|", " "}, //% pusta linijka
- };
- String ekranyTr1 [12] = {"","","","","","","","","","","",""};
- String ekranyTr2 [12] = {"","","","","","","","","","","",""};
- String* calyPlik;
- char nazwaNowegoPliku[36];
- String aktLinie(String zawartosc, String id, String nowaZawartosc) {
- int pozycjaJeden = zawartosc.indexOf(id);
- if (pozycjaJeden != -1) {
- int pozycjaDwa = zawartosc.indexOf('\n', pozycjaJeden);
- if (pozycjaDwa == -1) {
- pozycjaDwa = zawartosc.length();
- }
- zawartosc = zawartosc.substring(0, pozycjaJeden) + nowaZawartosc + zawartosc.substring(pozycjaDwa);
- }
- return zawartosc;
- }
- void obsluzConfig()
- {
- config = SD.open("/config.txt", FILE_READ);
- String ramka;
- int a=0;
- while (config.available())
- {
- a++;
- ramka=config.readStringUntil('\n');
- Serial.println(ramka);
- String idStr = ramka.substring(1, 4);
- int id = idStr.toInt();
- String wartoscStr = ramka.substring(5, ramka.length() - 6);
- delay(50);
- Serial.print("Id: ");
- Serial.println(id);
- delay(50);
- Serial.print("Wartosc: ");
- Serial.println(wartoscStr);
- delay(50);
- switch(id) {
- case 0:
- nrSeryjny=wartoscStr;
- Serial.println("Nadano adres ID");
- break;
- case 1:
- stW=wartoscStr.toFloat();
- break;
- case 2:
- liczbaW=wartoscStr.toInt();
- break;
- case 4:
- pojemnoscBaku=wartoscStr.toInt();
- break;
- case 5:
- break;
- case 11:
- ekranyTr1[1]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[1]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 12:
- ekranyTr1[2]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[2]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 13:
- ekranyTr1[3]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[3]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 14:
- ekranyTr1[4]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[4]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 15:
- ekranyTr1[5]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[5]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 16:
- ekranyTr1[6]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[6]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 17:
- ekranyTr1[7]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[7]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 18:
- ekranyTr1[8]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[8]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 19:
- ekranyTr1[9]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[9]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 20:
- ekranyTr1[10]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[10]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 21:
- ekranyTr1[11]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[11]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 22:
- ekranyTr1[12]=wartoscStr.substring(0, wartoscStr.indexOf('#'));
- ekranyTr2[12]=wartoscStr.substring((wartoscStr.indexOf('#'))+1);
- break;
- case 23:
- break;
- case 24:
- break;
- case 25:
- kolorTla=strtol(wartoscStr.c_str(), NULL, 16);
- //Serial.println(kolorTla);
- break;
- case 26:
- kolorTex=strtol(wartoscStr.c_str(), NULL, 16);
- //Serial.println(kolorTex);
- break;
- case 27:
- kolorClk=strtol(wartoscStr.c_str(), NULL, 16);
- break;
- default:
- break;
- }
- }
- //Serial.println(ekranyTr1[1]);
- //Serial.println(ekranyTr2[1]);
- config.close();
- }
- void zapisNaKarcie()
- {
- aktualnyPlikZapisu = SD.open(nazwaNowegoPliku, FILE_WRITE);
- buforDanych = SD.open("/buforDanych.txt", FILE_WRITE);
- buforDanych.seek(0);
- aktualnyPlikZapisu.seek(0);
- //aktualnyPlikZapisu.print("\n");
- for(int i=0; i<linijek; i++)
- {
- aktualnyPlikZapisu.print(daneDoZapisu[i][0]);
- aktualnyPlikZapisu.println(daneDoZapisu[i][1]);
- buforDanych.print(daneDoZapisu[i][0]);
- buforDanych.println(daneDoZapisu[i][1]);
- }
- //aktualnyPlikZapisu.println("END DATA");
- buforDanych.println("END DATA");
- aktualnyPlikZapisu.close();
- buforDanych.close();
- }
- void pobranieDanych()
- {
- String liniaD;
- String doWpisania;
- int wiersz = 0;
- int licznik = 0;
- int pozycja;
- int liczbaWierszy=linijek;
- if(diagnosta){Serial.println("teraz czas pobrac dane z pliku");}
- najnowszyPlikOdczytu = SD.open("/" + nazwaPliku, FILE_READ);
- //Serial.println("Plik odczytu ma tyle wierszy:");
- if(najnowszyPlikOdczytu.available()<=1)
- {
- if(diagnosta){Serial.println("Usuwam pusty plik");}
- SD.remove("/" + nazwaPliku);
- ESP.restart();
- }
- najnowszyPlikOdczytu.seek(0);
- while(najnowszyPlikOdczytu.available())
- {
- liniaD = najnowszyPlikOdczytu.readStringUntil('\n');
- licznik++;
- }
- //Serial.println(licznik);
- calyPlik = new String[licznik+1];
- najnowszyPlikOdczytu.seek(0);
- for(int a = 0; a<licznik; a++)
- {
- najnowszyPlikOdczytu.seek(najnowszyPlikOdczytu.position()+3);
- liniaD = najnowszyPlikOdczytu.readStringUntil('\n');
- calyPlik[a]=liniaD;
- //Serial.println(liniaD);
- }
- najnowszyPlikOdczytu.close();
- for (int i = liczbaWierszy; i >= 0; i--)
- {
- int c=map(i, 20, 0, 0, 20);
- String buf = calyPlik[licznik- i];
- if(diagnosta){Serial.println(buf);}
- pobraneDane[c][1]=buf;
- }
- delete[] calyPlik;
- }
- void utowrzeniePliku()
- {
- DateTime now = rtc.now();
- sprintf(nazwaNowegoPliku, "/%02u-%02u-%04u %02u-%02u-%02u.txt",now.day(),now.month(),now.year(),now.hour(),now.minute(),now.second());
- Serial.println(nazwaNowegoPliku);
- //zapisNaKarcie();
- }
- void nadpisywanieDanychDoZapisu()
- {
- daneDoZapisu[0][1]=przebieg; //Serial.println(przebieg);
- daneDoZapisu[1][1]=PDystansKMTrip1; //Serial.println(PDystansKMTrip1);
- daneDoZapisu[2][1]=PDystansKMOdtankowania; //Serial.println(PDystansKMOdtankowania);
- daneDoZapisu[3][1]=SrSpalanie100km; //Serial.println(SrSpalanie100km);
- daneDoZapisu[4][1]=MaxPredkosc; //Serial.println(MaxPredkosc);
- daneDoZapisu[5][1]=SrPredkosc[3]; //Serial.println(SrPredkosc[3]);
- daneDoZapisu[6][1]=czasPracySilnikaSuma; //Serial.println(czasPracySilnikaSuma);
- daneDoZapisu[7][1]=zatankowanoOstatnio; //Serial.println(zatankowanoOstatnio);
- daneDoZapisu[8][1]=spalonePaliwoSuma; //Serial.println(spalonePaliwoSuma);
- daneDoZapisu[9][1]=SrTemperaturaCieczy; //Serial.println(SrTemperaturaCieczy);
- daneDoZapisu[10][1]=SrTemperaturaOleju; //Serial.println(SrTemperaturaOleju);
- daneDoZapisu[11][1]=olej;
- daneDoZapisu[12][1]=rozrzad;
- daneDoZapisu[13][1]=najSpalanie;
- daneDoZapisu[14][1]=spalonePaliwoTrip;
- daneDoZapisu[15][1]="0.00";
- daneDoZapisu[16][1]="0.00";
- daneDoZapisu[17][1]="0.00";
- daneDoZapisu[18][1]="0.00";
- daneDoZapisu[19][1]="0.00";
- }
- void zapisPobranychDanych()
- {
- utowrzeniePliku();
- aktualnyPlikZapisu = SD.open(nazwaNowegoPliku, FILE_WRITE);
- buforDanych = SD.open("/buforDanych.txt", FILE_WRITE);
- for(int i=0; i<linijek; i++)
- {
- aktualnyPlikZapisu.print(pobraneDane[i][0]);
- aktualnyPlikZapisu.print(pobraneDane[i][1]);
- buforDanych.print(pobraneDane[i][0]);
- buforDanych.print(pobraneDane[i][1]);
- }
- aktualnyPlikZapisu.close();
- buforDanych.close();
- przebieg = atoi(pobraneDane[0][1].c_str()); if(diagnosta){Serial.println(przebieg);}
- PDystansKMTrip1 = atoff(pobraneDane[1][1].c_str()); if(diagnosta){Serial.println(PDystansKMTrip1);}
- PDystansKMOdtankowania= atoff(pobraneDane[2][1].c_str()); if(diagnosta){Serial.println(PDystansKMOdtankowania);}
- SrSpalanie100km = atoff(pobraneDane[3][1].c_str()); if(diagnosta){Serial.println(SrSpalanie100km);}
- MaxPredkosc = atoff(pobraneDane[4][1].c_str()); if(diagnosta){Serial.println(MaxPredkosc);}
- SrPredkosc[3] = atoff(pobraneDane[5][1].c_str()); if(diagnosta){Serial.println(SrPredkosc[3]);}
- czasPracySilnikaSuma = atoi(pobraneDane[6][1].c_str()); if(diagnosta){Serial.println(czasPracySilnikaSuma);}
- zatankowanoOstatnio = atoff(pobraneDane[7][1].c_str()); if(diagnosta){Serial.println(zatankowanoOstatnio);}
- spalonePaliwoSuma = atoff(pobraneDane[8][1].c_str()); if(diagnosta){Serial.println(spalonePaliwoSuma);}
- SrTemperaturaCieczy = atoff(pobraneDane[9][1].c_str()); if(diagnosta){Serial.println(SrTemperaturaCieczy);}
- SrTemperaturaOleju = atoff(pobraneDane[10][1].c_str()); if(diagnosta){Serial.println(SrTemperaturaOleju);}
- olej = atoi(pobraneDane[11][1].c_str());
- rozrzad = atoi(pobraneDane[12][1].c_str());
- najSpalanie = atoff(pobraneDane[13][1].c_str());
- //nadpisywanieDanychDoZapisu();
- }
- void wyborNajnowszegoPliku()
- {
- File plik1 = SD.open("/");
- File plik2;
- File najnowszyPlik;
- bool pustaKarta = !plik1.available();
- bool toJuzWszystkiePliki = true;
- //Serial.println(pustaKarta);
- long long najnowszaDataGodzina = 0;
- String bufferNazwaPliku;
- String dzien, miesiac, rok, godzina, minuta, sekunda;
- if(!pustaKarta)
- {
- utowrzeniePliku();
- }
- else
- {
- while(toJuzWszystkiePliki)
- {
- plik2 = plik1.openNextFile();
- if(plik2.isDirectory())
- {
- continue;
- }
- if(!plik2)
- {
- toJuzWszystkiePliki = false;
- }
- else
- {
- bufferNazwaPliku = plik2.name();
- dzien = bufferNazwaPliku.substring(0, 2);
- miesiac = bufferNazwaPliku.substring(3, 5);
- rok = bufferNazwaPliku.substring(6, 10);
- godzina = bufferNazwaPliku.substring(11, 13);
- minuta = bufferNazwaPliku.substring(14, 16);
- sekunda = bufferNazwaPliku.substring(17, 19);
- long long dataGodzina = atoll((rok + miesiac + dzien + godzina + minuta + sekunda).c_str());
- if(dataGodzina > najnowszaDataGodzina)
- {
- najnowszaDataGodzina = dataGodzina;
- najnowszyPlik = plik2;
- nazwaPliku = najnowszyPlik.name();
- }
- plik2.close();
- }
- }
- plik1.close();
- Serial.println(nazwaPliku);
- }
- }
- void inicjalizacjaKonfiguracji(){
- if (Serial.available() > 0) {
- if (!odebranoKlucz) {
- String odebranyKlucz = Serial.readStringUntil('\n');
- if (odebranyKlucz == "123456789") {
- odebranoKlucz = true;
- delay(200);
- Serial.println(odebranyKlucz);
- delay(50);
- Serial.println("Przyznano dostep");
- delay(50);
- Serial.print("NrSeryjny: ");
- Serial.println(nrSeryjny);
- delay(50);
- Serial.print("WersjaOprogramowania: ");
- Serial.println("0.68");
- }
- }
- }
- while(odebranoKlucz == true){
- if(Serial.available() > 0){
- config = SD.open("/config.txt", FILE_READ);
- String zawartosc = config.readString();
- config.close();
- String receivedChar = Serial.readString();
- Serial.print("Odebrano: ");
- Serial.println(receivedChar);
- String idStr = receivedChar.substring(1, 4);
- int id = idStr.toInt();
- Serial.print("ID: ");
- Serial.println(idStr);
- String wartoscStr = receivedChar.substring(5, receivedChar.length() - 5);
- Serial.print("wartosc: ");
- Serial.println(wartoscStr);
- if(id==999){
- odebranoKlucz=false;
- tft.println("REset");
- ESP.restart();
- }else if(id==101){
- Serial.println("Konfiguracja zegaraka");
- uint16_t year = wartoscStr.substring(6, 10).toInt(); // Wyodrębnienie roku
- uint16_t month = wartoscStr.substring(3, 5).toInt(); // Wyodrębnienie miesiąca
- uint16_t day = wartoscStr.substring(0, 2).toInt(); // Wyodrębnienie dnia
- uint16_t hour = wartoscStr.substring(11, 13).toInt(); // Wyodrębnienie godziny
- uint16_t minute = wartoscStr.substring(14, 16).toInt(); // Wyodrębnienie minuty
- uint16_t second = wartoscStr.substring(17, 19).toInt(); // Wyodrębnienie sekundy
- rtc.adjust(DateTime(year, month, day, hour, minute, second)); // Ustawienie RTC
- }else{
- config = SD.open("/config.txt",FILE_WRITE);
- String modifiedzawartosc = aktLinie(zawartosc, idStr, receivedChar);
- config.print(modifiedzawartosc);
- config.close();
- }
- }
- }
- }
- void obslugaExpendera()
- {
- for (uint8_t p=0; p<16; p++) {
- switch (p) {
- case 0:
- if(pcf.digitalRead(p)==0){
- zaplon=true;
- //Serial.println(zaplon);
- }else{
- zaplon=false;
- }
- break;
- case 1:
- if(pcf.digitalRead(p)==0){
- swiatla=true;
- //Serial.println(swiatla);
- }else{
- swiatla=false;
- }
- break;
- case 2:
- if(pcf.digitalRead(p)==0){
- GPIOtrzyTrzy=true;
- }else{
- GPIOtrzyTrzy=false;
- }
- break;
- case 3:
- if(pcf.digitalRead(p)==0){
- GPIOtrzyCztery=true;
- }else{
- GPIOtrzyCztery=false;
- }
- break;
- case 4:
- if(buzzer==true){
- pcf.digitalWrite(p, LOW);
- }else{
- pcf.digitalWrite(p, HIGH);
- }
- break;
- case 8:
- if(pcf.digitalRead(p)==1){
- MANETKAtryb=true;
- }else{
- MANETKAtryb=false;
- }
- break;
- case 9:
- if(pcf.digitalRead(p)==1){
- MANETKAfunckja=true;
- }else{
- MANETKAfunckja=false;
- }
- break;
- case 10:
- if(pcf.digitalRead(p)==1){
- if (czasPrzytrzymaniaPrzycisku == 0) {
- czasPrzytrzymaniaPrzycisku = millis(); // Zapisz czas rozpoczęcia naciśnięcia przycisku
- } else {
- // Jeśli przycisk jest nadal wciśnięty, sprawdź czy minęło wystarczająco czasu na uznane za długie naciśnięcie
- if (millis() - czasPrzytrzymaniaPrzycisku >= 2000) {
- // Wykonaj funkcję dla długiego naciśnięcia przycisku
- MANETKAreset=true;
- // Zresetuj czas rozpoczęcia naciśnięcia przycisku
- czasPrzytrzymaniaPrzycisku = 0;
- }
- }
- } else {
- MANETKAreset=false;
- czasPrzytrzymaniaPrzycisku = 0;
- }
- break;
- case 11:
- if(ESP_RESET==true){
- pcf.digitalWrite(p, LOW);
- ESP_RESET=false;
- }else{
- pcf.digitalWrite(p, HIGH);
- }
- break;
- case 12:
- if(pcf.digitalRead(p)==0){
- zlonczeUI=true;
- }else{
- zlonczeUI=false;
- }
- break;
- case 13:
- if(pcf.digitalRead(p)==0){
- zlonczeUII=true;
- }else{
- zlonczeUII=false;
- }
- break;
- case 14:
- if(pcf.digitalRead(p)==0){
- zlonczeUIII=true;
- }else{
- zlonczeUIII=false;
- }
- break;
- case 15:
- if(LCD_LED==false){
- pcf.digitalWrite(15, HIGH);
- }else{
- pcf.digitalWrite(15, LOW);
- }
- break;
- default:
- break;
- }
- }
- //pcf.digitalWrite(5,muxCode[1][0]);
- //pcf.digitalWrite(6,muxCode[1][1]);
- //pcf.digitalWrite(7,muxCode[1][2]);
- //odczytMiliVoltP=(analogReadMilliVolts(MUX_IN));
- for(int i=0; i<8; i++){
- pcf.digitalWrite(5,muxCode[i][0]);
- pcf.digitalWrite(6,muxCode[i][1]);
- pcf.digitalWrite(7,muxCode[i][2]);
- //Serial.print("Napięcie na pinie ");
- //Serial.print(i);
- //Serial.print(" : ");
- //Serial.println(analogRead(MUX_IN));
- switch (i)
- {
- case 0:
- odczytMiliVoltT=(analogReadMilliVolts(MUX_IN));
- break;
- case 1:
- odczytMiliVoltP=(analogReadMilliVolts(MUX_IN));
- break;
- case 2:
- odczytMiliVoltO=(analogReadMilliVolts(MUX_IN));
- break;
- case 3:
- NTC_ONE=(analogReadMilliVolts(MUX_IN));
- break;
- case 4:
- NTC_TWO=(analogReadMilliVolts(MUX_IN));
- break;
- case 5:
- czisOlej=(analogReadMilliVolts(MUX_IN));
- break;
- case 6:
- czisBoost=(analogReadMilliVolts(MUX_IN));
- break;
- default:
- break;
- }
- }
- }
- volatile unsigned long czasOstatniegoZbocza = 0;
- volatile unsigned long czasMiedzyZboczami = 0;
- void IRAM_ATTR isr_otwarcieWtrysku ()
- {
- // unsigned long czasAktulnegoZbocza = micros();
- unsigned long czasAktulnegoZbocza = millis();
- unsigned long roznica = czasAktulnegoZbocza - czasOstatniegoZbocza;
- if(digitalRead(PinWtrysk) == HIGH)
- {
- czasMiedzyZboczami = roznica;
- czasOstatniegoZbocza = czasAktulnegoZbocza;
- }else{
- if(roznica > 30){
- czasImpulsu = roznica;
- nowyImpuls = true;
- } else czasOstatniegoZbocza = czasAktulnegoZbocza;
- }
- }
- /*
- volatile unsigned long czasOstatniegoZbocza = 0;
- volatile unsigned long czasMiedzyZboczami = 0;
- void IRAM_ATTR isr_otwarcieWtrysku ()
- {
- // unsigned long czasAktulnegoZbocza = micros();
- unsigned long czasAktulnegoZbocza = millis();
- if(digitalRead(PinWtrysk) == HIGH)
- {
- czasMiedzyZboczami = czasAktulnegoZbocza - czasOstatniegoZbocza ;
- czasOstatniegoZbocza = czasAktulnegoZbocza;
- }else{
- czasImpulsu = czasAktulnegoZbocza-czasOstatniegoZbocza;
- nowyImpuls = true;
- }
- }
- */
- void spalonePaliwo()
- {
- spalonePaliwoDzienne+=spalanieLS;
- spalonePaliwoSuma+=spalanieLS;
- spalonePaliwoDzienne+=spalanieLS;
- }
- void SrednieSpalanie()
- {
- if (PDystansKM - PDystansKMpop >= 1)
- {
- if (iloscOdczytow1km > 0)
- {
- SrSpalanie1km = sumaSpalania1km / iloscOdczytow1km;
- }
- else
- {
- SrSpalanie1km = 0;
- }
- if (SrSpalanie100km <= 0)
- {
- SrSpalanie100km = SrSpalanie1km;
- }
- SrSpalanie100km = ((SrSpalanie1km * 1) + (SrSpalanie100km * 99)) / 100;
- sumaSpalania1km = 0;
- iloscOdczytow1km = 0;
- PDystansKMpop = PDystansKM;
- }
- }
- void spalanie()
- {
- if(nowyImpuls)
- {
- //noInterrupts();
- czasOtwarciaWT=czasImpulsu/1000.0;
- nowyImpuls=false;
- //interrupts();
- //Serial.print("czas Impulsu: ");
- Serial.print(millis());
- Serial.print(" - ");
- Serial.print(czasOtwarciaWT);
- Serial.print(" - ");
- Serial.println(czasMiedzyZboczami);
- iloscOdczytow1km++;
- spalanieLS=czasImpulsu/1000000.00*stalaW;
- spalanieLH=spalanieLS*1200.00;
- if(spalanieLH>30.00){spalanieLH=0.00;spalanieLS=0.00;}
- sumaSpalania1km+=spalanieLS;
- spalonePaliwo();
- SrednieSpalanie();
- //Serial.println(czasImpulsu/10000000.00,5);
- //Serial.print(" spalanie L na 3s: ");
- //Serial.print(spalanieLS, 6);
- //Serial.print(" spalanie L na h: ");
- //Serial.println(spalanieLH,6);
- }else{
- if(millis()-poprzedniOczyt>=5000){
- //ESP_RESET=true;
- poprzedniOczyt=millis();
- }
- }
- }
- void najwyzszeSpalanie()
- {
- if(spalanieLH>najSpalanie)
- {
- najSpalanie=spalanieLH;
- }
- }
- void predkosciomierz()
- {
- a=false;
- b=false;
- zero=false;
- c=0;
- czasPrzed=millis();
- while(c<4) //jeden obórt linki = cztery max wartosci (cztery "magnesy")
- {
- if(analogRead(PinHalla)<=2050) //min odczyt z czujnika
- {b=true;}
- if(analogRead(PinHalla)>=2051 && analogRead(PinHalla)<2200 && b==true)
- {a=true;}
- if(analogRead(PinHalla)>=2200 && a==true) //max odczyt z czujknika
- {c++;a=false;b=false;}
- //jezeli linka stoi przez 3 sekundy to jest to równe z 0 predkoscia
- if(millis()-czasPrzed>=3000)
- {c=5; zero=true;}
- }
- czasPo=millis();
- roznicaP=czasPo-czasPrzed;
- if(zero==true) //jeżeli predkosc zerowa
- {
- predkosc=0;
- predkoscMS=0;
- zero=false;
- }else
- {
- //funkcja stosunku czasu obrotu linki do predkosci samochodu
- predkosc=3999*(1.0/roznicaP)+0.5;
- //predkosc w metrach na sekunde do obliczania przejechanego dystansu
- predkoscMS=predkosc/3.6;
- tylkoRazPD=true;
- }
- }
- void SredniaPredkosc()
- {
- SrPredkosc[0]=predkosc;
- SrPredkosc[1]+=SrPredkosc[0];
- SrPredkosc[2]++;
- SrPredkosc[3]=SrPredkosc[1]/SrPredkosc[2];
- }
- void PrzejechanyDystans()
- {
- if(tylkoRazPD==true)
- {
- roznicaDoDys=roznicaP/1000.0000;
- //temp Serial.println(roznicaDoDys);
- PDystansM=PDystansM+((roznicaDoDys*predkoscMS)*0.94);
- PDystansKM=PDystansM/1000;
- PDystansKMSuma+= ((roznicaDoDys*predkoscMS)*0.94);
- PDystansKMOdtankowania+= ((roznicaDoDys*predkoscMS)*0.94);
- przebieg+= ((roznicaDoDys*predkoscMS)*0.94);
- PDystansKMTrip1+= ((roznicaDoDys*predkoscMS)*0.94);
- olej+= ((roznicaDoDys*predkoscMS)*0.94);
- rozrzad+= ((roznicaDoDys*predkoscMS)*0.94);
- tylkoRazPD=false;
- }
- }
- void MaxOsiagnietaPredkosc()
- {
- if(predkosc>MaxPredkosc)
- {
- MaxPredkosc=predkosc;
- }
- }
- void DiodyKontrolkiStart()
- {
- leds[3].setColorCode(0x500000);
- leds[4] = CRGB::Black;
- leds[5] = CRGB::Black;
- leds[6] = CRGB::Black;
- leds[7] = CRGB::Black;
- FastLED.show();
- delay(100);
- leds[3].setColorCode(0x500000);
- leds[4].setColorCode(0x502500);
- leds[5] = CRGB::Black;
- leds[6] = CRGB::Black;
- leds[7] = CRGB::Black;
- FastLED.show();
- delay(100);
- leds[3].setColorCode(0x500000);
- leds[4].setColorCode(0x502500);
- leds[5].setColorCode(0x005000);
- leds[6] = CRGB::Black;
- leds[7] = CRGB::Black;
- FastLED.show();
- delay(100);
- leds[3].setColorCode(0x500000);
- leds[4].setColorCode(0x502500);
- leds[5].setColorCode(0x005000);
- leds[6].setColorCode(0x005050);
- leds[7] = CRGB::Black;
- FastLED.show();
- delay(100);
- leds[3].setColorCode(0x500000);
- leds[4].setColorCode(0x502500);
- leds[5].setColorCode(0x005000);
- leds[6].setColorCode(0x005050);
- leds[7].setColorCode(0x000050);
- FastLED.show();
- delay(200);
- leds[3].setColorCode(0x500000);
- leds[4].setColorCode(0x502500);
- leds[5].setColorCode(0x005000);
- leds[6].setColorCode(0x005050);
- leds[7] = CRGB::Black;
- FastLED.show();
- delay(100);
- leds[3].setColorCode(0x500000);
- leds[4].setColorCode(0x502500);
- leds[5].setColorCode(0x005000);
- leds[6] = CRGB::Black;
- leds[7] = CRGB::Black;
- FastLED.show();
- delay(100);
- leds[3].setColorCode(0x500000);
- leds[4].setColorCode(0x502500);
- leds[5] = CRGB::Black;
- leds[6] = CRGB::Black;
- leds[7] = CRGB::Black;
- FastLED.show();
- delay(100);
- leds[3].setColorCode(0x500000);
- leds[4] = CRGB::Black;
- leds[5] = CRGB::Black;
- leds[6] = CRGB::Black;
- leds[7] = CRGB::Black;
- FastLED.show();
- delay(100);
- leds[3] = CRGB::Black;
- leds[4] = CRGB::Black;
- leds[5] = CRGB::Black;
- leds[6] = CRGB::Black;
- leds[7] = CRGB::Black;
- FastLED.show();
- delay(100);
- }
- void podswietlenie()
- {
- if(swiatla)
- {
- leds[0].setColorCode(0x00FF00);
- leds[1].setColorCode(0x00FF00);
- leds[2].setColorCode(0x00FF00);
- FastLED.show();
- }else{
- leds[0] = CRGB::Black;
- leds[1] = CRGB::Black;
- leds[2] = CRGB::Black;
- FastLED.show();
- }
- }
- void odczytTemperaturyCieczy()
- {
- if(zaplon){
- //odczytMiliVoltT=analogReadMilliVolts(36)-0.10;
- odczytVoltT=(10.0-((((odczytMiliVoltT)*((1500.0+750.0)/750.0))/1000.0)))-0.10;
- temperaturaCieczy = 1.0 / (((78.32591 / (odczytVoltT/10.0)) - 78.32591 + 130.0) / 22800.0);
- //Serial.println(odczytVoltT);
- }
- }
- void odczytIlosciPaliwa()
- {
- if(zaplon){
- if(millis()-ostatniOczdczytCzasu1>=1000)
- {
- //odczytMiliVoltP=analogReadMilliVolts(39)-0.10;
- odczytVoltP=(10.0-((odczytMiliVoltP*750.0/(1500.0+750.0))-52.67)/100.0); //10.10-(((odczytMiliVoltP*((1500+750)/750))/1000));
- //Serial.println(odczytVoltP);
- if (odczytVoltP <= 3.5011) {
- aktualnyStanPaliwa=( -7.6 * (13.4 / (odczytVoltP - 5.8)) - 21);
- } else if (odczytVoltP >= 3.501 && odczytVoltP <= 4.49304) {
- aktualnyStanPaliwa= (-2.1 * (56 / (odczytVoltP - 6.9)) - 11.3);
- } else if (odczytVoltP > 4.49303 && odczytVoltP <= 5.87198) {
- aktualnyStanPaliwa= (-3 * (50 / (odczytVoltP - 9.5)) + 7.6);
- } else if (odczytVoltP > 5.87197) {
- aktualnyStanPaliwa= (-5.5 * (21 / (odczytVoltP - 7.5)) - 22);
- } else {
- aktualnyStanPaliwa=9;
- }
- sumaPaliwa=sumaPaliwa+aktualnyStanPaliwa;
- ostatniOczdczytCzasu2++;
- ostatniOczdczytCzasu1=millis();
- }
- if(ostatniOczdczytCzasu2==10){
- sredniePaliwo=sumaPaliwa/10.0;
- sumaPaliwa=0;
- ostatniOczdczytCzasu2=0;
- }
- }
- }
- void odczytNapiecia()
- {
- napiecie=0;
- moc=0;
- napiecie = ina219.getBusVoltage_V()+(ina219.getShuntVoltage_mV()/100);
- moc=ina219.getPower_mW();
- }
- void czasPracySilnika()
- {
- unsigned long aktualnyCzas = millis(); // Pobierz aktualny czas
- if (digitalRead(PinWtrysk) == HIGH) {
- if (!sygnalWystepuje) {
- czasStartowy = aktualnyCzas;
- }
- sygnalWystepuje = true;
- } else {
- if (sygnalWystepuje) {
- unsigned long czasTrwaniaAktualny = aktualnyCzas - czasStartowy;
- if (czasTrwaniaAktualny >= limitCzasu) {
- czasTrwania += czasTrwaniaAktualny;
- }
- sygnalWystepuje = false;
- }
- }
- if (sygnalWystepuje) {
- czasTrwania = aktualnyCzas - czasStartowy;
- }
- //Serial.print("Całkowity czas trwania sygnału: ");
- //Serial.print(czasTrwania); // Konwersja czasu z milisekund na godziny i wyświetlenie z dwoma miejscami po przecinku
- //Serial.println(" h");
- czasPracySilnikaGodziny = (czasTrwania / 1000) / 60 / 60;
- czasPracySilnikaMinuty = (czasTrwania / 1000/60) % 60;
- }
- //& FUNKCJE ODPOWIADAJĄCE ZA WYŚWIETELNIE POSZCZEGOŁNYCH RZECZY
- void WysTekst(String tekst){
- tft.setFont();
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(1);
- tft.setCursor(10, 60);
- tft.print(tekst);
- }
- void WysPustyEkran()
- {
- tft.fillScreen(kolorTla);
- }
- void WysCzasPracySilnika()
- {
- tft.setFont();
- //tft.drawBitmap(15, 77, SpalanieChwilowe, 24, 32, kolorTex, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(2);
- tft.setCursor(10, 60);
- tft.print("CZAS PRACY:");
- tft.setTextSize(3);
- tft.setCursor(60, 80);
- tft.print(czasPracySilnikaGodziny,0);
- tft.print(":");
- tft.print(czasPracySilnikaMinuty,0);
- }
- void WysTemperaturyCieczy()
- {
- tft.setFont();
- //odczytTemperaturyCieczy();
- tft.drawBitmap(15, 77, SymTempCieczy, 24, 32, kolorTex, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(3);
- tft.setCursor(60, 80);
- tft.print(temperaturaCieczy);
- }
- void WysSrPredkosci()
- {
- tft.setFont();
- tft.drawBitmap(15, 77, SymbolSrPredkosc, 32, 32, kolorTex, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(3);
- tft.setCursor(60, 80);
- tft.print(SrPredkosc[3]);
- //tft.print("48.5");
- }
- void WysPredkosci(bool tryb)
- {
- tft.setFont();
- if(tryb==false)
- {
- tft.drawBitmap(15, 77, WskaznikPredkosci, 32, 32, kolorTex, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(3);
- tft.setCursor(60, 80);
- tft.print(predkosc);
- }
- else if(tryb==true)
- {
- tft.drawBitmap(15, 77, SymbolSrPredkosc, 32, 32, kolorTex, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(3);
- tft.setCursor(60, 80);
- tft.print(SrPredkosc[3]);
- //tft.print("48.5");
- }
- }
- void WysMaxPredkosc()
- {
- char buffor[10];
- if (MaxPredkosc < 100)
- {
- snprintf(buffor, sizeof(buffor), "0%.0f", MaxPredkosc);
- }else{
- snprintf(buffor, sizeof(buffor), "%.0f", MaxPredkosc);
- }
- tft.setFont();
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(2);
- tft.setCursor(10, 60);
- tft.print("Obroty:"); //tft.print("MAX SPEED:");
- tft.setTextSize(3);
- tft.setCursor(10, 80);
- tft.print(buffor); //tft.print(MaxPredkosc);
- }
- void WysPrzjechanegoDystansu(bool tryb)
- {
- tft.setFont();
- tft.drawBitmap(15, 77, PrzejchanyDystans, 24, 24, kolorTex, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(3);
- tft.setCursor(60, 80);
- if(tryb==true){tft.print(int(PDystansKMSuma));}
- else if(tryb==false){tft.print(PDystansKM);}
- }
- void WysSpalaniaChwilowego()
- {
- //spalanie();
- tft.setFont();
- char buffor[10];
- if (spalanieLH < 10)
- {
- snprintf(buffor, sizeof(buffor), "0%.2f", spalanieLH);
- }else{
- snprintf(buffor, sizeof(buffor), "%.2f", spalanieLH);
- }
- tft.drawBitmap(15, 77, SpalanieChwilowe, 24, 32, 0xFC00, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(3);
- tft.setCursor(50, 80);
- tft.print(buffor);
- }
- void WysSpalanoPaliwo(bool tryb)
- {
- tft.setFont();
- tft.drawBitmap(15, 77, SymbolSpalonePaliwo, 27, 37, kolorTex, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(3);
- tft.setCursor(60, 80);
- if(tryb==true){tft.print(int(spalonePaliwoSuma));}
- else if(tryb==false){tft.print(spalonePaliwoDzienne);}
- }
- void WysTemperatury()
- {
- sensors.requestTemperatures();
- tft.setFont();
- tft.setTextSize(2);
- tft.setTextColor(kolorTex);
- tft.setTextSize(2);
- tft.drawBitmap(30, 70, TempIN, 24, 24, ST77XX_RED, kolorTla);
- tft.drawBitmap(105, 70, TempOUT, 24, 24, ST77XX_GREEN, kolorTla);
- tft.setTextColor(ST77XX_RED, kolorTla);
- tft.setCursor(10, 100);
- tft.println(sensors.getTempC(sensorIN));
- tft.setTextColor(ST77XX_GREEN, kolorTla);
- tft.setCursor(85, 100);
- tft.println(sensors.getTempC(sensorOUT));
- }
- void WysNapiecia()
- {
- tft.setFont();
- tft.drawBitmap(15, 77, AKUMULATOR, 32, 24, kolorTex, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(3);
- tft.setCursor(55, 80);
- tft.print(napiecie);
- tft.setTextSize(1);
- tft.setCursor(90, 105);
- tft.print(moc/1000);
- }
- void WysZegareka()
- {
- DateTime now = rtc.now();
- tft.setFont();
- tft.setTextColor(kolorClk, kolorTla);
- tft.setTextSize(2);
- sprintf(zegarekBuf,"%02u:%02u ",now.hour(),now.minute());
- tft.setCursor(10, 5);
- tft.print(zegarekBuf);
- sprintf(zegarekBuf,"%02u.%02u ",now.day(),now.month());
- tft.setCursor(90, 5);
- tft.print(zegarekBuf);
- }
- void WysSrSpalaniaNa100()
- {
- //spalanie();
- tft.setFont();
- char buffor[10];
- if (SrSpalanie100km < 10)
- {
- snprintf(buffor, sizeof(buffor), "0%.2f", SrSpalanie100km);
- }else {
- snprintf(buffor, sizeof(buffor), "%.2f", SrSpalanie100km);
- }
- tft.drawBitmap(15, 77, SpalanieNaSto, 24, 32, 0xFC00, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(3);
- tft.setCursor(50, 80);
- tft.print(buffor);
- }
- void WysPobieranieDancyh()
- {
- tft.drawBitmap(45, 55, PonbieranieDanychL, 32, 64, kolorTex, kolorTla);
- tft.drawBitmap(77, 55, PonbieranieDanychR, 32, 64, kolorTex, kolorTla);
- }
- void WysPakiet2() //% wyswietlanie dwoch przebiegow dzienny i ogolny
- {
- tft.setFont();
- tft.drawBitmap(3, 120, PrzejchanyDystans, 24, 24, 0x001F, kolorTla);
- tft.drawBitmap(4, 80, PrzejchanyDystans, 24, 24, 0x001F, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(2);
- tft.setCursor(50, 60);
- tft.print(przebieg);
- tft.setCursor(50, 95);
- tft.print(PDystansKM);
- }
- void WysPakiet1() //% wyświetlenie dwóch danych naraz SPALANIE I PREDKOSC
- {
- tft.setFont();
- tft.drawBitmap(3, 120, SpalanieChwilowe, 24, 32, kolorTex, kolorTla);
- tft.drawBitmap(4, 80, WskaznikPredkosci, 32, 32, kolorTex, kolorTla);
- //tft.drawBitmap(1, 90, PrzejchanyDystans, 24, 24, kolorTex, kolorTla);
- //tft.drawBitmap(90, 90, SymTempCieczy, 24, 32, kolorTex, kolorTla);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(2);
- tft.setCursor(50, 60);
- tft.print(spalanieLH);
- tft.setCursor(50, 95);
- tft.print(predkosc);
- }
- void WysEkranStart()
- {
- char buffor1[10];
- if (napiecie < 10)
- {
- snprintf(buffor1, sizeof(buffor1), "0%.1f", napiecie);
- }else{
- snprintf(buffor1, sizeof(buffor1), "%.1f", napiecie);
- }
- char buffor2[10];
- if (temperaturaCieczy < 100)
- {
- snprintf(buffor2, sizeof(buffor2), "0%.0f", temperaturaCieczy);
- }else{
- snprintf(buffor2, sizeof(buffor2), "%.0f", temperaturaCieczy);
- }
- char buffor3[10];
- if (spalanieLH < 10)
- {
- snprintf(buffor3, sizeof(buffor3), "0%.2f", spalanieLH);
- }else{
- snprintf(buffor3, sizeof(buffor3), "%.2f", spalanieLH);
- }
- char buffor4[10];
- if (sredniePaliwo < 10)
- {
- snprintf(buffor4, sizeof(buffor4), "0%.2f", sredniePaliwo);
- }else{
- snprintf(buffor4, sizeof(buffor4), "%.2f", sredniePaliwo);
- }
- //tft.setFont(&FreeSans12pt7b);
- tft.setTextColor(kolorTex, kolorTla);
- tft.setTextSize(2);
- tft.setCursor(68, 63);
- tft.drawBitmap(50, 63, Plomien, 16, 16, 0xE800, kolorTla);
- tft.println(buffor3);
- tft.setCursor(68, 85);
- tft.drawBitmap(50, 85, Paliwo, 16, 16, 0xDB60, kolorTla);
- tft.println(buffor4);
- tft.setTextColor(kolorTex, 0xC800);
- tft.setCursor(23, 102);
- //tft.fillRect(0, 102, 160, 26, 0xC800);
- //tft.drawBitmap(5, 102, Akumulator, 16, 16, kolorTex, 0xC800);
- tft.print(buffor1);
- //tft.drawBitmap(70, 102, Akumulator, 16, 16, kolorTex, 0xC800);
- tft.setCursor(88, 102);
- tft.print(buffor2);
- }
- void uspienie()
- {
- unsigned long czasPrzed;
- unsigned long czas;
- if(zaplon)
- {
- czas = millis();
- if(czas-czasPrzed>600000 && temperaturaCieczy<40.00)
- {
- trzaReset=true;
- }
- }
- if(zaplon)
- {
- czasPrzed = millis();
- if(trzaReset==true)
- {
- czas=0;
- ESP.restart();
- trzaReset=false;
- }
- }
- }
- void pracaAuta()
- {
- if(zaplon){LCD_LED=true;}
- if(!zaplon){LCD_LED=false;}
- if(zaplon){
- popStanSamochodu=false;
- }else{
- popStanSamochodu=true;
- tylkoRazSA=true;
- }
- if(zaplon && tylkoRazSA){
- DiodyKontrolkiStart();
- tylkoRazSA=false;
- }
- }
- void obslugaKolejWys(int ekran, bool tryb){
- if(tryb==2){
- if(ekranyTr2[ekran]=="Woltomierz"){
- //Serial.println("Woltomierz");
- WysNapiecia();
- }else if(ekranyTr2[ekran]=="TempOleju"){
- //Serial.println("TempOleju");
- WysTekst(ekranyTr2[ekran]);
- }else if(ekranyTr2[ekran]=="SrTempOleju"){
- //Serial.println("PrzejechanyDystans");
- WysTekst(ekranyTr2[ekran]);
- }else if(ekranyTr2[ekran]=="TempZewnetrzna"){
- //Serial.println("TempZewnetrzna");
- //WysTekst(ekranyTr2[ekran]);
- WysTemperatury();
- }else if(ekranyTr2[ekran]=="TempWewnetrzna"){
- //Serial.println("TempWewnetrzna");
- WysTemperatury();
- }else if(ekranyTr2[ekran]=="EkranStartowy"){
- //Serial.println("PrzejechanyDystans");
- WysEkranStart();
- }else if(ekranyTr2[ekran]=="PrzejechanyDystans"){
- //Serial.println("PrzejechanyDystans");
- WysPrzjechanegoDystansu(1);
- }else if(ekranyTr2[ekran]=="DziennyPrzejechanyDystans"){
- //Serial.println("MaxPredkosc");
- WysPrzjechanegoDystansu(2);
- }else if(ekranyTr2[ekran]=="SpalanieChwilowe"){
- //Serial.println("SpalanieChwilowe");
- WysSpalaniaChwilowego();
- }else if(ekranyTr2[ekran]=="SrSpalanie"){
- //Serial.println("SrSpalanie");
- WysSrSpalaniaNa100();
- }else if(ekranyTr2[ekran]=="SumaSpalania"){
- //Serial.println("SumaSpalania");
- WysSpalanoPaliwo(1);
- }else if(ekranyTr2[ekran]=="SrTempSilnika"){
- //Serial.println("DzienneSumaSpalania");
- WysTemperaturyCieczy();
- }else if(ekranyTr2[ekran]=="TempSilnika"){
- //Serial.println("TempSilnika");
- WysTemperaturyCieczy();
- }else if(ekranyTr2[ekran]=="DziennaSumaSpalania"){
- //Serial.println("SrTempSilnika");
- WysSpalanoPaliwo(1);
- }else if(ekranyTr2[ekran]=="Predkosc"){
- //Serial.println("Predkosc");
- WysPredkosci(1);
- }else if(ekranyTr2[ekran]=="SrPredkosc"){
- //Serial.println("SrPredkosc");
- WysPredkosci(0);
- }else if(ekranyTr2[ekran]=="MaxPredkosc"){
- //Serial.println("MaxPredkosc");
- WysMaxPredkosc();
- }else if(ekranyTr2[ekran]=="CzasPracySilnika"){
- //Serial.println("MaxPredkosc");
- WysCzasPracySilnika();
- }else if(ekranyTr2[ekran]=="DziennyCzasPracySilnika"){
- //Serial.println("MaxPredkosc");
- WysCzasPracySilnika();
- }else if(ekranyTr2[ekran]=="PustyEkran"){
- //Serial.println("PustyEkran");
- aktEkran=1;
- licznikW=1;
- }else{
- Serial.println("Nic nie pasuje w trybie 2");
- }
- }else if(tryb==1){
- if(ekranyTr1[ekran]=="Woltomierz"){
- //Serial.println("Woltomierz");
- WysNapiecia();
- }else if(ekranyTr1[ekran]=="TempOleju"){
- //Serial.println("TempOleju");
- WysTekst(ekranyTr1[ekran]);
- }else if(ekranyTr1[ekran]=="SrTempOleju"){
- //Serial.println("PrzejechanyDystans");
- WysTekst(ekranyTr1[ekran]);
- }else if(ekranyTr1[ekran]=="TempZewnetrzna"){
- //Serial.println("TempZewnetrzna");
- //WysTekst(ekranyTr2[ekran]);
- WysTemperatury();
- }else if(ekranyTr1[ekran]=="TempWewnetrzna"){
- //Serial.println("TempWewnetrzna");
- WysTemperatury();
- }else if(ekranyTr1[ekran]=="EkranStartowy"){
- //Serial.println("PrzejechanyDystans");
- WysEkranStart();
- }else if(ekranyTr1[ekran]=="PrzejechanyDystans"){
- //Serial.println("PrzejechanyDystans");
- WysPrzjechanegoDystansu(1);
- }else if(ekranyTr1[ekran]=="DziennyPrzejechanyDystans"){
- //Serial.println("MaxPredkosc");
- WysPrzjechanegoDystansu(2);
- }else if(ekranyTr1[ekran]=="SpalanieChwilowe"){
- //Serial.println("SpalanieChwilowe");
- WysSpalaniaChwilowego();
- }else if(ekranyTr1[ekran]=="SrSpalanie"){
- //Serial.println("SrSpalanie");
- WysSrSpalaniaNa100();
- }else if(ekranyTr1[ekran]=="SumaSpalania"){
- //Serial.println("SumaSpalania");
- WysSpalanoPaliwo(1);
- }else if(ekranyTr1[ekran]=="SrTempSilnika"){
- //Serial.println("DzienneSumaSpalania");
- WysTemperaturyCieczy();
- }else if(ekranyTr1[ekran]=="TempSilnika"){
- //Serial.println("TempSilnika");
- WysTemperaturyCieczy();
- }else if(ekranyTr1[ekran]=="DziennaSumaSpalania"){
- //Serial.println("SrTempSilnika");
- WysSpalanoPaliwo(1);
- }else if(ekranyTr1[ekran]=="Predkosc"){
- //Serial.println("Predkosc");
- WysPredkosci(1);
- }else if(ekranyTr1[ekran]=="SrPredkosc"){
- //Serial.println("SrPredkosc");
- WysPredkosci(0);
- }else if(ekranyTr1[ekran]=="MaxPredkosc"){
- //Serial.println("MaxPredkosc");
- WysMaxPredkosc();
- }else if(ekranyTr1[ekran]=="CzasPracySilnika"){
- //Serial.println("MaxPredkosc");
- WysCzasPracySilnika();
- }else if(ekranyTr1[ekran]=="DziennyCzasPracySilnika"){
- //Serial.println("MaxPredkosc");
- WysCzasPracySilnika();
- }else if(ekranyTr1[ekran]=="PustyEkran"){
- //Serial.println("PustyEkran");
- aktEkran=1;
- licznikW=1;
- //WysPustyEkran();
- }else{
- Serial.println("Nic nie pasuje w trybie 1");
- }
- }
- }
- void interfjs(){
- if(MANETKAreset)
- {
- if(diagnosta){Serial.println("RESET");}
- MANETKAreset=false;
- }
- if(MANETKAfunckja)
- {
- licznikW++;
- wycz=false;
- MANETKAfunckja=false;
- }
- if(MANETKAtryb)
- {
- tryb=2;
- }else{
- tryb=1;
- }
- switch (licznikW){
- case 1:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(1,tryb);
- break;
- case 2:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(2,tryb);
- break;
- case 3:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(3,tryb);
- break;
- case 4:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(4,tryb);
- break;
- case 5:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(5,tryb);
- break;
- case 6:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(6,tryb);
- break;
- case 7:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(7,tryb);
- break;
- case 8:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(8,tryb);
- break;
- case 9:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(9,tryb);
- break;
- case 10:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(10,tryb);
- break;
- case 11:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(11,tryb);
- break;
- case 12:
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- obslugaKolejWys(12,tryb);
- break;
- default:
- aktEkran=1;
- break;
- }
- /*
- switch (licznikW)
- {
- case 1:
- if(tryb==2)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysEkranStart();
- }
- if(tryb==1)
- {
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysNapiecia();
- }
- break;
- case 2:
- //if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- if(tryb==2)
- {
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysTemperatury();
- }
- if(tryb==1)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysTemperaturyCieczy();
- }
- break;
- case 3:
- //if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- if(tryb==2)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysSrSpalaniaNa100();
- if(MANETKAreset=true)
- {SrSpalanie100km=0;tft.fillScreen(kolorTla);wycz=true;MANETKAreset=false;}
- }
- if(tryb==1)
- {
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysSpalaniaChwilowego();
- }
- break;
- case 4:
- //if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- if(tryb==2)
- {
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysPrzjechanegoDystansu(true);
- if(MANETKAreset=true)
- {PDystansKMSuma=0;tft.fillScreen(kolorTla);wycz=false;MANETKAreset=false;}
- }
- if(tryb==1)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysPrzjechanegoDystansu(false);
- }
- break;
- case 5:
- //if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- if(MANETKAtryb)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysPredkosci(true);
- if(MANETKAreset=true)
- {SrPredkosc[0]=0;SrPredkosc[1]=0; SrPredkosc[2]=0;SrPredkosc[3]=0;tft.fillScreen(kolorTla);wycz=false;MANETKAreset=false;}
- }else{
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysPredkosci(false);
- }
- break;
- case 6:
- if(tryb==2)
- {
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysMaxPredkosc();
- }
- if(tryb==1)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysMaxPredkosc();
- }
- break;
- case 7:
- if(tryb==2)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysPakiet1();
- }
- if(tryb==1)
- {
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysPakiet1();
- }
- break;
- case 8:
- if(tryb==2)
- {
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysCzasPracySilnika();
- }
- if(tryb==1)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysCzasPracySilnika();
- }
- break;
- case 9:
- //if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- if(MANETKAtryb)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysSpalanoPaliwo(true);
- }
- else{
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysSpalanoPaliwo(false);
- if(MANETKAreset=true)
- {spalonePaliwoSuma;tft.fillScreen(kolorTla);wycz=false;MANETKAreset=false;}
- }
- break;
- case 10:
- if(tryb==2)
- {
- if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- WysPakiet2();
- }
- if(tryb==1)
- {
- if(wycz==false){tft.fillScreen(kolorTla);wycz=true;}
- WysPakiet2();
- }
- //if(wycz==true){tft.fillScreen(kolorTla);wycz=false;}
- break;
- default:
- licznikW=0;
- break;
- }
- */
- }
- unsigned long currentMillis;
- unsigned long previousMillis1 = 0; // Zmienna do śledzenia czasu dla Kontrolki 1
- unsigned long previousMillis2 = 0; // Zmienna do śledzenia czasu dla Kontrolki 2, 3 i 4
- unsigned long previousMillis3 = 0; // Zmienna do śledzenia czasu dla Kontrolki 5
- const long interval = 500; // Interwał czasowy w ms dla Kontrolki 1
- const long interval2 = 500; // Interwał czasowy w ms dla Kontrolki 2, 3 i 4
- const long interval3 = 500; // Interwał czasowy w ms dla Kontrolki 5
- void kontrolki()
- {
- currentMillis = millis(); // Aktualny czas w ms
- //& Kontrolka 1 (niewłączone światła)
- if (zaplon)
- {
- if (swiatla)
- {
- leds[3] = CRGB::Black;
- FastLED.show();
- }
- else
- {
- if (currentMillis - previousMillis1 >= interval)
- {
- previousMillis1 = currentMillis;
- leds[3].setColorCode(0x000005);
- FastLED.show();
- }
- else
- {
- leds[3] = CRGB::Black;
- FastLED.show();
- }
- }
- }else{
- leds[0] = CRGB::Black;
- leds[1] = CRGB::Black;
- leds[2] = CRGB::Black;
- FastLED.show();
- }
- //& Kontrolka 2, 3 i 4 (niebezpieczna prędkość)
- if (predkosc > 110)
- {
- if (currentMillis - previousMillis2 >= interval2)
- {
- previousMillis2 = currentMillis;
- leds[4].setColorCode(0x100000);
- leds[5].setColorCode(0x100000);
- leds[6].setColorCode(0x100000);
- FastLED.show();
- }else{
- leds[4] = CRGB::Black;
- leds[5] = CRGB::Black;
- leds[6] = CRGB::Black;
- FastLED.show();
- }
- }else{
- leds[4] = CRGB::Black;
- leds[5] = CRGB::Black;
- leds[6] = CRGB::Black;
- FastLED.show();
- }
- //& Kontrolka 5 (za wysoka temperatura cieczy)
- if (zaplon)
- {
- if (temperaturaCieczy > 93)
- {
- if (currentMillis - previousMillis3 >= interval3)
- {
- previousMillis3 = currentMillis;
- leds[7].setColorCode(0x050000);
- FastLED.show();
- }else{
- leds[7] = CRGB::Black;
- FastLED.show();
- }
- }else{
- leds[7] = CRGB::Black;
- FastLED.show();
- }
- }
- }
- void Task1code( void * pvParameters );
- void setup ()
- {
- Serial.begin(115200);
- xTaskCreatePinnedToCore(Task1code,"wTle",10000,NULL,0,&wTle,0);
- //attachInterrupt(PinObroty, mierzenie, RISING);
- FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
- FastLED.setBrightness( BRIGHTNESS );
- //currentPalette = RainbowColors_p;
- //currentBlending = LINEARBLEND;
- //FastLED.setBrightness(BRIGHTNESS);
- //ina219.begin();
- //SD.begin(kartaSD);
- tft.initR(INITR_BLACKTAB);
- tft.setRotation(45);
- tft.setTextWrap(false);
- //rtc.begin();
- //pcf.begin(0x20, &Wire);
- //rtc.adjust(DateTime(2024, 4, 28, 15, 22, 30));
- pinMode(PinHalla, INPUT);
- pinMode(PinWtrysk, INPUT);
- pinMode(PinObroty, INPUT);
- //przyciskFunkcji.begin();
- //przyciskTrybu.begin();
- //przyciskResetu.begin();
- //przyciskWtrysk.begin();
- //przyciskZaplon.begin();
- /*pcf.pinMode(0, INPUT);
- pcf.pinMode(1, INPUT);
- pcf.pinMode(2, INPUT);
- pcf.pinMode(3, INPUT);
- pcf.pinMode(4, OUTPUT);
- pcf.pinMode(5, OUTPUT);
- pcf.pinMode(6, OUTPUT);
- pcf.pinMode(7, OUTPUT);
- pcf.pinMode(8, INPUT_PULLDOWN);
- pcf.pinMode(9, INPUT_PULLDOWN);
- pcf.pinMode(10, INPUT_PULLDOWN);
- pcf.pinMode(11, OUTPUT);
- pcf.pinMode(12, INPUT);
- pcf.pinMode(13, INPUT);
- pcf.pinMode(14, INPUT);
- pcf.pinMode(15, OUTPUT);
- tft.fillScreen(kolorTla);
- ESP_RESET=false;
- LCD_LED=true;
- */
- //obslugaExpendera();
- podswietlenie();
- DiodyKontrolkiStart();
- delay(10);
- WysPobieranieDancyh();
- delay(10);
- //wyborNajnowszegoPliku();
- //pobranieDanych();
- //zapisPobranychDanych();
- //zapisNaKarcie();
- //obsluzConfig();
- delay(10);
- tft.fillScreen(kolorTla);
- tft.cp437(true);
- if (isnan(SrSpalanie1km)) {
- SrSpalanie1km = 7.56;
- }
- if (isnan(SrSpalanie100km)) {
- SrSpalanie100km = SrSpalanie1km;
- }
- //czasPracySilnikaMinutySuma=czasPracySilnikaSuma*60; //% przeliczenie przepracowanego czasu silnika na minuty
- }
- unsigned long aktualnyCzas = 0;
- unsigned long zapamietanyCzas = 0;
- unsigned long roznicaCzasu = 0;
- void loop()
- {
- pracaAuta();
- kontrolki();
- uspienie();
- WysZegareka();
- podswietlenie();
- interfjs();
- spalanie();
- najwyzszeSpalanie();
- odczytTemperaturyCieczy();
- odczytIlosciPaliwa();
- czasPracySilnika();
- obslugaExpendera();
- odczytNapiecia();
- inicjalizacjaKonfiguracji();
- //obliczanieObroty();
- if(roznicaCzasu>=60000){
- nadpisywanieDanychDoZapisu();
- zapisNaKarcie();
- zapamietanyCzas=millis();
- }
- //temp WysTemperatury();
- //temp WysNapiecia();
- //aktualnyCzas = millis();
- //roznicaCzasu = aktualnyCzas - zapamietanyCzas;
- /*
- if(roznicaCzasu<=5000)
- {
- if(wycz==false)
- {
- tft.fillScreen(kolorTla);
- wycz=true;
- }
- WysPredkosci();
- }else if(roznicaCzasu<=10000 && roznicaCzasu>=5000)
- {
- if(wycz==true)
- {
- tft.fillScreen(kolorTla);
- wycz=false;
- }
- WysNapiecia();
- }else if(roznicaCzasu<=15000 && roznicaCzasu>=10000)
- {
- if(wycz==false)
- {
- tft.fillScreen(kolorTla);
- wycz=true;
- }
- WysTemperatury();
- }else if(roznicaCzasu<=20000 && roznicaCzasu>=15000)
- {
- if(wycz==true)
- {
- tft.fillScreen(kolorTla);
- wycz=false;
- }
- WysSpalaniaChwilowego();
- }else if(roznicaCzasu<=25000 && roznicaCzasu>=20000)
- {
- if(wycz==false)
- {
- tft.fillScreen(kolorTla);
- wycz=true;
- }
- WysPrzjechanegoDystansu(true);
- }else if(roznicaCzasu<=30000 && roznicaCzasu>=25000)
- {
- if(wycz==true)
- {
- tft.fillScreen(kolorTla);
- wycz=false;
- }
- WysSrPredkosci();
- }else if(roznicaCzasu>30000)
- {
- zapamietanyCzas=millis();
- }
- */
- }
- void Task1code( void * pvParameters ) //*Pętla dla zadań wykonywanych na rdzeniu 0. Z definicji wszystkie operaje są wykonywane na rdzeniu 1
- {
- //wykona się tylko raz
- attachInterrupt(digitalPinToInterrupt(PinWtrysk), isr_otwarcieWtrysku, CHANGE);
- for(;;)
- {
- predkosciomierz();
- PrzejechanyDystans();
- MaxOsiagnietaPredkosc();
- delay(0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement