started gain control modes

This commit is contained in:
2022-03-22 17:18:02 +01:00
parent 31d20301e4
commit 0eae51d837
13 changed files with 158 additions and 45 deletions

View File

@@ -1,12 +1,45 @@
#include "board.h"
#include "Arduino.h"
#include <Wire.h> //include Wire.h library
void initBoard(void)
void initSerial(void)
{
Serial.begin(115200);
Serial.flush();
delay(2000);
log_i("Init serial: OK");
}
}
void initBuzzer(void)
{
pinMode(BUZZER1, OUTPUT);
digitalWrite(BUZZER1, HIGH);
delay(500);
digitalWrite(BUZZER1, LOW);
log_i("Init Buzzer: OK");
}
void initInputs(void)
{
pinMode(LEVEL_IN, INPUT);
pinMode(ERROR_IN, INPUT);
log_i("Init Inputs: OK");
}
void initOutputs(void)
{
pinMode(UC01, OUTPUT);
pinMode(UC02, OUTPUT);
pinMode(UC03, OUTPUT);
pinMode(UC04, OUTPUT);
pinMode(UC05, OUTPUT);
pinMode(UC06, OUTPUT);
log_i("Init Outputs: OK");
}
void initBoard(void)
{
initSerial();
initBuzzer();
initInputs();
initOutputs();
}

View File

@@ -6,13 +6,13 @@ void scanI2C(void);
#define HAS_DISPLAY
#define HAS_SSD1322
#define OLED_CS gpio_num_t(26)
#define OLED_DC gpio_num_t(27)
#define OLED_RST gpio_num_t(25)
#define OLED_MOSI 14 // gpio_num_t(14)
#define OLED_SCK 13 // gpio_num_t(13)
#define OLED_CS 26
#define OLED_DC 27
#define OLED_RST 25
#define OLED_MOSI 14
#define OLED_SCK 13
#define ADC_SDA 4
#define ADC_SDA 4
#define ADC_SCL 15
#define MEAS_CHANNEL 0
@@ -21,4 +21,16 @@ void scanI2C(void);
#define BUTTON2 32
#define BUTTON3 35
#define BUTTON4 34
#define BUTTON5 39
#define BUTTON5 39
#define BUZZER1 23
#define ERROR_IN 36
#define LEVEL_IN 33
#define UC01 16
#define UC02 17
#define UC03 5
#define UC04 18
#define UC05 19
#define UC06 22

View File

@@ -3,6 +3,8 @@
#include "Arduino.h"
#include "JC_Button.h"
#define NOBUTTON (255)
class c_button : public Button
{
const uint8_t _index;
@@ -13,5 +15,6 @@ public:
uint8_t getIndex( void ) {return _index;}
bool isChanged( void ) {return wasPressed();}
bool isValid(void){ return (getPin() != NOBUTTON);}
};

View File

@@ -91,7 +91,7 @@ void drawMainscreenValues()
getDisplay()->setCursor(60, 45);
getDisplay()->printf("%4.2f", getValue());
uint16_t stringwidth = getDisplay()->getStrWidth(showValue("", getValue(), "").c_str());
uint16_t stringwidth = getDisplay()->getStrWidth(drawValue("", getValue(), "").c_str());
getDisplay()->setFont(u8g2_font_8x13_t_symbols);
getDisplay()->drawUTF8(60 + stringwidth + 3, 43, "mΩ");
//drawProgressBar(0, 40, 127, 5, getBar());

View File

@@ -63,15 +63,20 @@ void c_onScreenButton::drawButton()
getDisplay()->setDrawColor(1);
}
String showValue(String designator, float value, String unit)
void c_onScreenButton::handle()
{
String text;
text.clear();
if (designator != "")
if (_physButton.isValid())
{
text = designator;
_pressed = _physButton.read();
if (_pressed)
{
if(_mode != e_measureMode::mNone)
{
setMeasureMode(_mode);
}
}
log_d("read_button(%d) = %d", _physButton.getPin(), _pressed);
}
text += value;
text += unit;
return text;
}

View File

@@ -80,7 +80,7 @@ public:
c_onScreenButton(String name, uint8_t index, e_buttonLoc location, bool (*stateFn)()) : _name(name),
_index(index),
_stateFn(stateFn),
_physButton(-1, index)
_physButton(NOBUTTON, index)
{
_xpos = 1;
_ypos = 1;
@@ -104,19 +104,7 @@ public:
}
return _state;
}
void handle()
{
if (_physButton.getPin() != -1)
{
_pressed = _physButton.read();
if (_physButton.isChanged())
{
log_i("button(%d) %d = %d", _index, _physButton.getIndex(), _pressed);
}
log_d("read_button(%d) = %d", _index, _pressed);
}
}
void handle();
void setVisible(bool state) { _visible = state; }
bool getVisible(void) { return _visible; }
uint8_t getIndex(void) { return _index; }

View File

@@ -34,4 +34,17 @@ uint16_t getStringWidth(String str, const uint8_t *font)
{
getDisplay()->setFont(font);
return getDisplay()->getStrWidth(str.c_str());
}
String drawValue(String designator, float value, String unit)
{
String text;
text.clear();
if (designator != "")
{
text = designator;
}
text += value;
text += unit;
return text;
}

View File

@@ -7,3 +7,4 @@ void drawProgressBar(uint16_t x, uint16_t y, uint16_t width, uint16_t height, ui
void drawDashedHLine(uint16_t x, uint16_t y, uint16_t len);
void drawDashedVLine(uint16_t x, uint16_t y, uint16_t len);
uint16_t getStringWidth(String str, const uint8_t *font);
String drawValue(String designator, float value, String unit);

View File

@@ -38,8 +38,6 @@ void handleDisplayHall(void);
void clearDisplay(void);
String showValue(String designator, float value, String unit);
uint16_t getDisplayWidth(void);
uint16_t getDisplayHeight(void);

View File

@@ -0,0 +1,13 @@
#include "gain_control.h"
c_gainControl mode20mA(e_measureMode::mA20, 1, 1, 0, 0, 1, 1);
void initGainControl(void)
{
}
void handleGainControl(void)
{
}

View File

@@ -0,0 +1,42 @@
#pragma once
#include "Arduino.h"
#include "measure_mode.h"
#include "board.h"
#define UCCONTROLIO 6
class c_gainControl
{
const e_measureMode _mode;
bool _uc[UCCONTROLIO];
uint8_t _ucPin[UCCONTROLIO] = {UC01, UC02, UC03, UC04, UC05, UC06};
public:
c_gainControl(e_measureMode mode, bool uc01, bool uc02, bool uc03, bool uc04, bool uc05, bool uc06) : _mode(mode)
{
_uc[0] = uc01;
_uc[1] = uc02;
_uc[02] = uc03;
_uc[03] = uc04;
_uc[04] = uc05;
_uc[05] = uc06;
}
void activate(void)
{
for(int i = 0; i < UCCONTROLIO-1;i++)
{
digitalWrite(_ucPin[i], _uc[i]);
}
}
e_measureMode getMode(void)
{
return _mode;
}
};
void initGainControl(void);
void handleGainControl(void);

View File

@@ -3,6 +3,7 @@
#include "measure.h"
#include "buttons.h"
#include "display.h"
#include "gain_control.h"
uint64_t looptime = 0;
@@ -11,6 +12,7 @@ void setup()
initBoard();
initMeasure();
initDisplay();
initGainControl();
looptime = millis();
}
@@ -19,6 +21,7 @@ void loop()
// put your main code here, to run repeatedly:
looptime = micros();
handleMeasure();
handleGainControl();
handleDisplay();
log_i("T=%4.2fms\n", (double)(micros() - looptime)/1000);
}

View File

@@ -5,15 +5,6 @@ bool measureOK = true;
bool measureError = false;
bool measureOpen = false;
void initMeasureMode(void)
{
log_i("init measure mode");
}
void handleMeasureMode(void)
{
}
void setMeasureMode(e_measureMode newMode)
{
@@ -38,4 +29,15 @@ bool getOkState(void)
bool getOpenState(void)
{
return measureOpen;
}
void initMeasureMode(void)
{
log_i("init measure mode");
}
void handleMeasureMode(void)
{
}