Poprawa odczytu napięcia
UStawienie przycisku Przesuniecie funkcji na góre kodu
This commit is contained in:
@@ -1,21 +1,12 @@
|
|||||||
// #include <avr/eeprom.h>
|
|
||||||
#include <ESP32Servo.h> // model servo: DS3218 PRO
|
#include <ESP32Servo.h> // model servo: DS3218 PRO
|
||||||
|
|
||||||
// nie włącza serovo
|
|
||||||
// nie podaje napięcia z baterii
|
|
||||||
|
|
||||||
#include <SPI.h>
|
#include <SPI.h>
|
||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <Adafruit_GFX.h>
|
#include <Adafruit_GFX.h>
|
||||||
#include <Adafruit_SSD1306.h>
|
#include <Adafruit_SSD1306.h>
|
||||||
|
|
||||||
#define Version "2.1.0"
|
#define Version "2.1.4"
|
||||||
////2DO:
|
////2DO:
|
||||||
//diagnostyka i/lub przeciwdziałanie skokom predkosci
|
|
||||||
//dlaczego wskaznik odnosi sie do poprawnego biegu a w tym czasie bieg jest zly? bo czas ponizej 2s?
|
|
||||||
//zmienic system usypiania dodac bezwzglednie czas 3 min, i po czeku z przyciskiem ponowny odczyt magnesu po 0,5sec
|
|
||||||
|
|
||||||
// menu do zmiany zakresu predkosci biegów
|
// menu do zmiany zakresu predkosci biegów
|
||||||
// menu do zmiany zakresu kątów biegów, obwodu koła, ilosci magnesow
|
// menu do zmiany zakresu kątów biegów, obwodu koła, ilosci magnesow
|
||||||
|
|
||||||
@@ -30,10 +21,10 @@ Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
|
|||||||
#define ServoPin 19 //on board: D19
|
#define ServoPin 19 //on board: D19
|
||||||
#define BrakingLight 13 //on board: D13 BrakingLight
|
#define BrakingLight 13 //on board: D13 BrakingLight
|
||||||
#define PinLED 25 //on board: D25 ORANGE loop signal
|
#define PinLED 25 //on board: D25 ORANGE loop signal
|
||||||
#define Btn1 27 //on board: D27 Button1
|
#define VoltInptPin 27 //on board: D27
|
||||||
#define Btn2 33 //on board: D33 Button2
|
#define Btn2 33 //on board: D33 Button2
|
||||||
|
|
||||||
// #define VoltInptPin 23 //on board: D23 Battery Voltage
|
// #define VoltInptPin 23 //on board: D23 Battery Voltage prawdopodobnie uszkodzone ADC
|
||||||
|
|
||||||
#define ServoMaxAngle 130
|
#define ServoMaxAngle 130
|
||||||
#define MaxAngle 179
|
#define MaxAngle 179
|
||||||
@@ -51,6 +42,7 @@ Servo myservo;
|
|||||||
|
|
||||||
|
|
||||||
//SPEED
|
//SPEED
|
||||||
|
double readSignalTime_5;
|
||||||
double readSignalTime_4;
|
double readSignalTime_4;
|
||||||
double readSignalTime_3;
|
double readSignalTime_3;
|
||||||
double readSignalTime_2;
|
double readSignalTime_2;
|
||||||
@@ -116,9 +108,9 @@ double totalDist = 0.0;
|
|||||||
unsigned int totalDistReaded = 0;
|
unsigned int totalDistReaded = 0;
|
||||||
unsigned int totalDistWrited = 0;
|
unsigned int totalDistWrited = 0;
|
||||||
//BATTERY
|
//BATTERY
|
||||||
float referenceVoltage = 5.1;
|
float referenceVoltage = 3.3;
|
||||||
int maxADCValue = 1023;
|
int maxADCValue = 4095;
|
||||||
float voltageDividerRatio = 3.0;
|
float voltageDividerRatio = 5.7;
|
||||||
int adcBattVoltValue = 0;
|
int adcBattVoltValue = 0;
|
||||||
float inputVoltage = 0.0;
|
float inputVoltage = 0.0;
|
||||||
float measuredVoltage = 0.0;
|
float measuredVoltage = 0.0;
|
||||||
@@ -158,10 +150,10 @@ void setup() {
|
|||||||
pinMode(PinInSpeed, INPUT);
|
pinMode(PinInSpeed, INPUT);
|
||||||
// pinMode(PinInterrupt, OUTPUT);
|
// pinMode(PinInterrupt, OUTPUT);
|
||||||
// digitalWrite(PinInterrupt, HIGH);
|
// digitalWrite(PinInterrupt, HIGH);
|
||||||
pinMode(Btn1, INPUT);
|
pinMode(VoltInptPin, INPUT);
|
||||||
pinMode(Btn2, INPUT);
|
pinMode(Btn2, INPUT);
|
||||||
|
|
||||||
// pinMode(VoltInptPin, INPUT);
|
|
||||||
//OUTPUT
|
//OUTPUT
|
||||||
pinMode(PinLED, OUTPUT);
|
pinMode(PinLED, OUTPUT);
|
||||||
pinMode(BrakingLight, OUTPUT);
|
pinMode(BrakingLight, OUTPUT);
|
||||||
@@ -201,138 +193,33 @@ void setup() {
|
|||||||
// totalDist = float(totalDistReaded);
|
// totalDist = float(totalDistReaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
//########################################### LOOP ############################################################
|
|
||||||
//########################################### LOOP ############################################################
|
|
||||||
void loop() {
|
|
||||||
|
|
||||||
loopTime = millis();
|
void setPosition(int currentGear) {
|
||||||
display.clearDisplay();
|
pos = 180 - round((currentGear - 1) * (ServoMaxAngle / (MaxGear - 1) ));
|
||||||
// //DIAG Btn1
|
if (pos >= 180) {
|
||||||
// display.setTextSize(1);
|
pos = MaxAngle;
|
||||||
// display.setCursor(0, 30);
|
}
|
||||||
// display.println("Btn1:");
|
|
||||||
// display.setCursor(30, 20);
|
|
||||||
// display.println(digitalRead(Btn1));
|
|
||||||
// display.setCursor(30, 30);
|
|
||||||
// display.println(analogRead(Btn1));
|
|
||||||
// display.setCursor(55, 30);
|
|
||||||
|
|
||||||
display.setTextSize(3);
|
if (pos <= 0) {
|
||||||
|
pos = MinAngle;
|
||||||
//################################################
|
}
|
||||||
//SPEED
|
if (sleepMode == 1 && calcSpeedMain > 0.0) {
|
||||||
sleepSpd = millis() - millissSpd;
|
digitalWrite(ServoSwitch, HIGH);
|
||||||
if (sleepSpd >= 1000.0) { //podaj zerową prędkość jeśli nie było odcztu od 1,5 s
|
for (servoCurrPos = myservo.read(); servoCurrPos <= 180; servoCurrPos++) {
|
||||||
speed4Gear = 0.0;
|
myservo.write(servoCurrPos);
|
||||||
speed4Gear_2 = 0.0;
|
delay(4);
|
||||||
raw_speed = 0.0;
|
|
||||||
|
|
||||||
//przejście w tryb uśpienia za pomocą odpowiedniego ustawienia koła i magnesu
|
|
||||||
if ((digitalRead(PinInSpeed) == LOW)||(digitalRead(Btn2) == HIGH)|| (sleepSpd >= LongTimeToSleep)) {
|
|
||||||
display.fillCircle(75, 10, 10, SSD1306_WHITE);
|
|
||||||
if (sleepSpd >= TimeToSleep) {
|
|
||||||
prepareTurnOff();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
sleepMode = 0;
|
||||||
if (speed4Gear > 40 || isinf(speed4Gear)) {
|
|
||||||
speed4Gear = speed4Gear_3;
|
|
||||||
}
|
}
|
||||||
calcSpeed();
|
myservo.write(pos);
|
||||||
calcGear();
|
|
||||||
displGear = 9 - currentGear;
|
|
||||||
setPosition(currentGear);
|
|
||||||
|
|
||||||
|
|
||||||
//duzy font
|
|
||||||
//GEAR
|
|
||||||
display.setCursor(8, 0);
|
|
||||||
display.println("G:");
|
|
||||||
display.setCursor(40, 0);
|
|
||||||
display.print(currentGear);
|
|
||||||
//SPEED_TREND
|
|
||||||
display.setCursor(75, 00);
|
|
||||||
if (speedTrend <= -1 ) {
|
|
||||||
display.write(31);
|
|
||||||
} else {
|
|
||||||
if (speedTrend >= 1) {
|
|
||||||
display.write(30);
|
|
||||||
} else {
|
|
||||||
display.println("-");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//SPEED
|
|
||||||
display.setCursor(8, 40);
|
|
||||||
display.println("S:");
|
|
||||||
display.setCursor(40, 40);
|
|
||||||
display.println(calcSpeedMain, 1);
|
|
||||||
//GearBar
|
|
||||||
currentGearRangeMiddle = (currentGearRangeLower + currentGearRangeUpper) / 2;
|
|
||||||
display.fillRect(115, 32, 7, 1, SSD1306_WHITE);
|
|
||||||
display.fillRect(115, 0, 7, 1, SSD1306_WHITE);
|
|
||||||
display.fillRect(115, 63, 7, 1, SSD1306_WHITE);
|
|
||||||
|
|
||||||
display.setTextSize(2);
|
|
||||||
|
|
||||||
gearBarHeight = 64 - int(((calcSpeedMain - currentGearRangeLower) / (currentGearRangeUpper - currentGearRangeLower)) * 64) - 5;
|
|
||||||
display.setCursor(115, gearBarHeight);
|
|
||||||
display.write(16);
|
|
||||||
display.setTextSize(3);
|
|
||||||
|
|
||||||
|
|
||||||
//VOLT_BAR
|
|
||||||
// adcBattVoltValue = analogRead(VoltInptPin);
|
|
||||||
// measuredVoltage = (adcBattVoltValue * referenceVoltage) / maxADCValue;
|
|
||||||
// inputVoltage = measuredVoltage * voltageDividerRatio;
|
|
||||||
|
|
||||||
voltBarHeight = int(((inputVoltage-9)/3)*64); //odjemowanie 9 bo to minimalne napiecie, podział przez 3 bo zakladam max napiecie 12.0V a nie 12.6V
|
|
||||||
voltBarPosition = 64 - voltBarHeight;
|
|
||||||
display.fillRect(0, voltBarPosition, 1, voltBarHeight, SSD1306_WHITE);
|
|
||||||
//########################################## ZAPIS DO WYŚWIETLACZA ######################################################
|
|
||||||
display.display();
|
|
||||||
loopTime = millis();
|
|
||||||
|
|
||||||
if ((digitalRead(Btn2) == HIGH)) {
|
|
||||||
digitalWrite(PinLED, HIGH);
|
|
||||||
}else {
|
|
||||||
digitalWrite(PinLED, LOW);
|
|
||||||
}
|
|
||||||
|
|
||||||
//wstrzymanie pętli by odczyty były co 0,5s
|
|
||||||
for (; (millis() - loopTime) < 300 ;) {
|
|
||||||
delay(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (speedTrend == -1 && speed4Gear > 0.0 ) {
|
|
||||||
if (BrakingLightSwitch == 1) {
|
|
||||||
digitalWrite(BrakingLight, HIGH);
|
|
||||||
BrakingLightSwitch = 0;
|
|
||||||
} else {
|
|
||||||
digitalWrite(BrakingLight, LOW);
|
|
||||||
BrakingLightSwitch = 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
digitalWrite(BrakingLight, LOW);
|
|
||||||
}
|
|
||||||
// //TTL DST
|
|
||||||
// // totalDist = 0;
|
|
||||||
// loop_cnt = loop_cnt +1;
|
|
||||||
// if (loop_cnt >= 20 //&& totalDistWrited != totalDist
|
|
||||||
// ){
|
|
||||||
// totalDistWrited = int(totalDist);
|
|
||||||
// // eeprom_write_block(&totalDistWrited,totalDistMemLocation,2);
|
|
||||||
// loop_cnt = 0;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
//########################################### LOOP ############################################################
|
|
||||||
//########################################### LOOP ############################################################
|
|
||||||
void readSpeed() {
|
void readSpeed() {
|
||||||
lastLastMillisSpd = lastMillisSpd;
|
lastLastMillisSpd = lastMillisSpd;
|
||||||
lastMillisSpd = millissSpd;
|
lastMillisSpd = millissSpd;
|
||||||
millissSpd = millis();
|
millissSpd = millis();
|
||||||
|
readSignalTime_5 = readSignalTime_4;
|
||||||
|
readSignalTime_4 = readSignalTime_3;
|
||||||
readSignalTime_3 = readSignalTime_2;
|
readSignalTime_3 = readSignalTime_2;
|
||||||
readSignalTime_2 = readSignalTime_1;
|
readSignalTime_2 = readSignalTime_1;
|
||||||
readSignalTime_1 = double(millissSpd - lastLastMillisSpd) / 1000;
|
readSignalTime_1 = double(millissSpd - lastLastMillisSpd) / 1000;
|
||||||
@@ -342,6 +229,81 @@ void readSpeed() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void prepareTurnOff() {
|
||||||
|
sleepMode = 1;
|
||||||
|
display.clearDisplay();
|
||||||
|
display.setTextSize(1);
|
||||||
|
display.setCursor(0, 0);
|
||||||
|
display.println("Przygotwywanie...");
|
||||||
|
display.display();
|
||||||
|
for (servoCurrPos = myservo.read(); servoCurrPos >= 60; servoCurrPos--) {
|
||||||
|
myservo.write(servoCurrPos);
|
||||||
|
delay(15);
|
||||||
|
}
|
||||||
|
//Na czas diagnostyki
|
||||||
|
// eeprom_write_block(&totalDist,totalDistMemLocation,2);
|
||||||
|
// totalDistWrited = totalDist;
|
||||||
|
// loop_cnt = 0;
|
||||||
|
//
|
||||||
|
for (; 1500 < (millis() - lastMillisSpd);) { // zmiana z 1000 na 1500 w 1.13.19
|
||||||
|
digitalWrite(ServoSwitch, LOW);
|
||||||
|
digitalWrite(ServoPin, LOW);
|
||||||
|
//INFO
|
||||||
|
display.clearDisplay();
|
||||||
|
display.setTextSize(1);
|
||||||
|
display.setCursor(5, 30);
|
||||||
|
display.println("Mozna teraz");
|
||||||
|
display.setCursor(5, 38);
|
||||||
|
display.println("bezpiecznie wylaczyc");
|
||||||
|
display.setCursor(5, 46);
|
||||||
|
display.println("komputer.");
|
||||||
|
display.setCursor(5, 0);
|
||||||
|
display.write(31);
|
||||||
|
display.setCursor(10, 0);
|
||||||
|
display.println("+");
|
||||||
|
display.setCursor(15, 0);
|
||||||
|
display.write(30);
|
||||||
|
display.setCursor(25, 0);
|
||||||
|
display.println(downs + ups);
|
||||||
|
//Version
|
||||||
|
display.setCursor(5, 13);
|
||||||
|
display.println("V: ");
|
||||||
|
display.setCursor(15, 13);
|
||||||
|
display.println(Version);
|
||||||
|
//DST
|
||||||
|
display.setCursor(50, 0);
|
||||||
|
display.println("Spins: ");
|
||||||
|
display.setCursor(85, 0);
|
||||||
|
display.println(totalDistWrited);
|
||||||
|
display.setCursor(58, 13);
|
||||||
|
display.println("KM: ");
|
||||||
|
display.setCursor(95, 13);
|
||||||
|
display.println((totalDistWrited*WheelCircumference)/1000);
|
||||||
|
//RUN TIME
|
||||||
|
run_mins = floor((millis() / 1000) / 60);
|
||||||
|
run_hrs = floor(run_mins / 60);
|
||||||
|
run_mins = run_mins - (run_hrs * 60);
|
||||||
|
display.setCursor(65, 54);
|
||||||
|
display.println("T:");
|
||||||
|
display.setCursor(80, 54);
|
||||||
|
display.println(run_hrs);
|
||||||
|
display.setCursor(88, 54);
|
||||||
|
display.println(":");
|
||||||
|
display.setCursor(93, 54);
|
||||||
|
display.println(run_mins);
|
||||||
|
adcBattVoltValue = analogRead(VoltInptPin);
|
||||||
|
measuredVoltage = (adcBattVoltValue * referenceVoltage) / maxADCValue;
|
||||||
|
inputVoltage = measuredVoltage * voltageDividerRatio;
|
||||||
|
voltBarHeight = int(((inputVoltage-9)/3)*64); //odjemowanie 9 bo to minimalne napiecie, podział przez 3 bo zakladam max napiecie 12.0V a nie 12.6V
|
||||||
|
voltBarPosition = 64 - voltBarHeight;
|
||||||
|
display.fillRect(0, voltBarPosition, 2, voltBarHeight, SSD1306_WHITE);
|
||||||
|
display.display();
|
||||||
|
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void calcSpeed(){
|
void calcSpeed(){
|
||||||
calcSpeed3 = calcSpeed2;
|
calcSpeed3 = calcSpeed2;
|
||||||
calcSpeed2 = calcSpeed1;
|
calcSpeed2 = calcSpeed1;
|
||||||
@@ -396,89 +358,129 @@ void calcGear() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void setPosition(int currentGear) {
|
|
||||||
pos = 180 - round((currentGear - 1) * (ServoMaxAngle / (MaxGear - 1) ));
|
|
||||||
if (pos >= 180) {
|
|
||||||
pos = MaxAngle;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pos <= 0) {
|
|
||||||
pos = MinAngle;
|
|
||||||
}
|
|
||||||
if (sleepMode == 1 && calcSpeedMain > 0.0) {
|
|
||||||
digitalWrite(ServoSwitch, HIGH);
|
|
||||||
for (servoCurrPos = myservo.read(); servoCurrPos <= 180; servoCurrPos++) {
|
|
||||||
myservo.write(servoCurrPos);
|
|
||||||
delay(4);
|
|
||||||
}
|
|
||||||
sleepMode = 0;
|
|
||||||
}
|
|
||||||
myservo.write(pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
void prepareTurnOff() {
|
//########################################### LOOP ############################################################
|
||||||
sleepMode = 1;
|
//########################################### LOOP ############################################################
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
loopTime = millis();
|
||||||
display.clearDisplay();
|
display.clearDisplay();
|
||||||
display.setTextSize(1);
|
// //DIAG Btn1
|
||||||
display.setCursor(0, 0);
|
// display.setTextSize(1);
|
||||||
display.println("Przygotwywanie...");
|
// display.setCursor(0, 30);
|
||||||
display.display();
|
// display.println("Btn1:");
|
||||||
for (servoCurrPos = myservo.read(); servoCurrPos >= 60; servoCurrPos--) {
|
// display.setCursor(30, 20);
|
||||||
myservo.write(servoCurrPos);
|
// display.println(digitalRead(Btn1));
|
||||||
delay(15);
|
// display.setCursor(30, 30);
|
||||||
|
// display.println(analogRead(Btn1));
|
||||||
|
// display.setCursor(55, 30);
|
||||||
|
|
||||||
|
display.setTextSize(3);
|
||||||
|
|
||||||
|
//################################################
|
||||||
|
//SPEED
|
||||||
|
sleepSpd = millis() - millissSpd;
|
||||||
|
if (sleepSpd >= 1000.0) { //podaj zerową prędkość jeśli nie było odcztu od 1,5 s
|
||||||
|
speed4Gear = 0.0;
|
||||||
|
speed4Gear_2 = 0.0;
|
||||||
|
raw_speed = 0.0;
|
||||||
}
|
}
|
||||||
//Na czas diagnostyki
|
//przejście w tryb uśpienia za przuycisku lub czasu
|
||||||
// eeprom_write_block(&totalDist,totalDistMemLocation,2);
|
if ((digitalRead(Btn2) == HIGH)|| (sleepSpd >= LongTimeToSleep)) {
|
||||||
// totalDistWrited = totalDist;
|
prepareTurnOff();
|
||||||
// loop_cnt = 0;
|
}
|
||||||
//
|
|
||||||
for (; 1500 < (millis() - lastMillisSpd);) { // zmiana z 1000 na 1500 w 1.13.19
|
if (speed4Gear > 40 || isinf(speed4Gear)) {
|
||||||
digitalWrite(ServoSwitch, LOW);
|
speed4Gear = speed4Gear_3;
|
||||||
digitalWrite(ServoPin, LOW);
|
}
|
||||||
//INFO
|
calcSpeed();
|
||||||
display.clearDisplay();
|
calcGear();
|
||||||
display.setTextSize(1);
|
displGear = 9 - currentGear;
|
||||||
display.setCursor(0, 30);
|
setPosition(currentGear);
|
||||||
display.println("Mozna teraz");
|
|
||||||
display.setCursor(0, 38);
|
|
||||||
display.println("bezpiecznie wylaczyc");
|
//duzy font
|
||||||
display.setCursor(0, 46);
|
//GEAR
|
||||||
display.println("komputer.");
|
display.setCursor(8, 0);
|
||||||
display.setCursor(0, 0);
|
display.println("G:");
|
||||||
|
display.setCursor(40, 0);
|
||||||
|
display.print(currentGear);
|
||||||
|
//SPEED_TREND
|
||||||
|
display.setCursor(75, 00);
|
||||||
|
if (speedTrend <= -1 ) {
|
||||||
display.write(31);
|
display.write(31);
|
||||||
display.setCursor(5, 0);
|
} else {
|
||||||
display.println("+");
|
if (speedTrend >= 1) {
|
||||||
display.setCursor(10, 0);
|
display.write(30);
|
||||||
display.write(30);
|
} else {
|
||||||
display.setCursor(20, 0);
|
display.println("-");
|
||||||
display.println(downs + ups);
|
}
|
||||||
//Version
|
|
||||||
display.setCursor(0, 13);
|
|
||||||
display.println("V: ");
|
|
||||||
display.setCursor(10, 13);
|
|
||||||
display.println(Version);
|
|
||||||
//DST
|
|
||||||
display.setCursor(45, 0);
|
|
||||||
display.println("Spins: ");
|
|
||||||
display.setCursor(80, 0);
|
|
||||||
display.println(totalDistWrited);
|
|
||||||
display.setCursor(53, 13);
|
|
||||||
display.println("KM: ");
|
|
||||||
display.setCursor(90, 13);
|
|
||||||
display.println((totalDistWrited*WheelCircumference)/1000);
|
|
||||||
//RUN TIME
|
|
||||||
run_mins = floor((millis() / 1000) / 60);
|
|
||||||
run_hrs = floor(run_mins / 60);
|
|
||||||
run_mins = run_mins - (run_hrs * 60);
|
|
||||||
display.setCursor(60, 54);
|
|
||||||
display.println("T:");
|
|
||||||
display.setCursor(75, 54);
|
|
||||||
display.println(run_hrs);
|
|
||||||
display.setCursor(83, 54);
|
|
||||||
display.println(":");
|
|
||||||
display.setCursor(88, 54);
|
|
||||||
display.println(run_mins);
|
|
||||||
display.display();
|
|
||||||
delay(500);
|
|
||||||
}
|
}
|
||||||
|
//SPEED
|
||||||
|
display.setCursor(8, 40);
|
||||||
|
display.println("S:");
|
||||||
|
display.setCursor(40, 40);
|
||||||
|
display.println(calcSpeedMain, 1);
|
||||||
|
//GearBar
|
||||||
|
currentGearRangeMiddle = (currentGearRangeLower + currentGearRangeUpper) / 2;
|
||||||
|
display.fillRect(115, 32, 7, 1, SSD1306_WHITE);
|
||||||
|
display.fillRect(115, 0, 7, 1, SSD1306_WHITE);
|
||||||
|
display.fillRect(115, 63, 7, 1, SSD1306_WHITE);
|
||||||
|
|
||||||
|
display.setTextSize(2);
|
||||||
|
|
||||||
|
gearBarHeight = 64 - int(((calcSpeedMain - currentGearRangeLower) / (currentGearRangeUpper - currentGearRangeLower)) * 64) - 5;
|
||||||
|
display.setCursor(115, gearBarHeight);
|
||||||
|
display.write(16);
|
||||||
|
display.setTextSize(3);
|
||||||
|
|
||||||
|
|
||||||
|
//VOLT_BAR
|
||||||
|
adcBattVoltValue = analogRead(VoltInptPin);
|
||||||
|
measuredVoltage = (adcBattVoltValue * referenceVoltage) / maxADCValue;
|
||||||
|
inputVoltage = measuredVoltage * voltageDividerRatio;
|
||||||
|
voltBarHeight = int(((inputVoltage-9)/3)*64); //odjemowanie 9 bo to minimalne napiecie, podział przez 3 bo zakladam max napiecie 12.0V a nie 12.6V
|
||||||
|
voltBarPosition = 64 - voltBarHeight;
|
||||||
|
display.fillRect(0, voltBarPosition, 2, voltBarHeight, SSD1306_WHITE);
|
||||||
|
//########################################## ZAPIS DO WYŚWIETLACZA ######################################################
|
||||||
|
display.display();
|
||||||
|
loopTime = millis();
|
||||||
|
|
||||||
|
if ((digitalRead(Btn2) == HIGH)) {
|
||||||
|
digitalWrite(PinLED, HIGH);
|
||||||
|
}else {
|
||||||
|
digitalWrite(PinLED, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
//wstrzymanie pętli by odczyty były co 0,5s
|
||||||
|
for (; (millis() - loopTime) < 300 ;) {
|
||||||
|
delay(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (speedTrend == -1 && speed4Gear > 0.0 ) {
|
||||||
|
if (BrakingLightSwitch == 1) {
|
||||||
|
digitalWrite(BrakingLight, HIGH);
|
||||||
|
BrakingLightSwitch = 0;
|
||||||
|
} else {
|
||||||
|
digitalWrite(BrakingLight, LOW);
|
||||||
|
BrakingLightSwitch = 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
digitalWrite(BrakingLight, LOW);
|
||||||
|
}
|
||||||
|
// //TTL DST
|
||||||
|
// // totalDist = 0;
|
||||||
|
// loop_cnt = loop_cnt +1;
|
||||||
|
// if (loop_cnt >= 20 //&& totalDistWrited != totalDist
|
||||||
|
// ){
|
||||||
|
// totalDistWrited = int(totalDist);
|
||||||
|
// // eeprom_write_block(&totalDistWrited,totalDistMemLocation,2);
|
||||||
|
// loop_cnt = 0;
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//########################################### LOOP ############################################################
|
||||||
|
//########################################### LOOP ############################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user