added schematics Henk

This commit is contained in:
2022-02-08 19:29:52 +01:00
parent 10bb73cdef
commit d43ba0a879
82 changed files with 46368 additions and 0 deletions

View File

@@ -0,0 +1,115 @@
#include "buttons.h"
std::vector<c_button *> buttonlist;
c_button button1(BUTTON1, 1);
c_button button2(BUTTON2, 2);
c_button button3(BUTTON3, 3);
c_button button4(BUTTON4, 4);
c_button button5(BUTTON5, 5);
void buttonbegin(c_button *thisbutton)
{
thisbutton->begin();
buttonlist.push_back(thisbutton);
}
void initButtons(void)
{
Serial.print("Init buttons:");
buttonbegin(&button1);
buttonbegin(&button2);
buttonbegin(&button3);
buttonbegin(&button4);
buttonbegin(&button5);
Serial.println("OK");
}
void handleButtons(void)
{
for (auto &&i : buttonlist)
{
i->read();
}
}
bool anybutton(void)
{
handleButtons();
for (auto &&i : buttonlist)
{
if (i->isPressed())
{
return true;
}
}
return false;
}
bool anyButtonChanged(void)
{
handleButtons();
for (auto &&i : buttonlist)
{
if (i->isChanged())
{
return true;
}
}
return false;
}
bool allButtons(void)
{
for (auto &&thisbutton : buttonlist)
{
if (!thisbutton->isPressed())
{
return false;
}
}
return true;
}
bool buttonIsPressed(uint16_t index)
{
c_button *thisbutton = getButton(index);
if (thisbutton == NULL)
{
return false;
}
else
{
return thisbutton->isPressed();
}
}
c_button *getButton(unsigned int index)
{
if (index > buttonlist.size())
{
return NULL;
}
return buttonlist[index - 1];
}
std::vector<c_button *> *getButtonlist(void)
{
return &buttonlist;
}
uint8_t buttonPressedCount(void)
{
uint8_t count = 0;
for (auto &&button : buttonlist)
{
if (button != NULL)
{
if (button->isPressed())
{
count++;
}
}
}
return count;
}

View File

@@ -0,0 +1,31 @@
#pragma once
#include "Arduino.h"
#include <vector>
#include "JC_Button.h"
#include "board.h"
class c_button : public ToggleButton
{
const uint8_t _index;
public:
c_button(uint8_t pin, uint8_t index )
: ToggleButton(pin), _index(index) {}
uint8_t getIndex( void ) {return _index;}
bool isChanged( void ) {return changed();}
};
void initButtons(void);
void handleButtons(void);
bool anybutton(void);
bool anyButtonChanged(void);
bool allButtons(void);
c_button *getButton(unsigned int index);
bool buttonIsPressed(uint16_t index);
uint8_t buttonPressedCount( void );
std::vector<c_button *>* getButtonlist(void);

View File

@@ -0,0 +1,119 @@
#include "gui.h"
c_onScreenButton ma20("20m", (uint8_t)mA20, LocBottom);
c_onScreenButton ma200("200m", (uint8_t)mA200, LocBottom);
c_onScreenButton ma1000("1A", (uint8_t)mA1000, LocBottom);
c_onScreenButton mauto("Auto", (uint8_t)mAuto, LocBottom);
c_onScreenButton bsetup("Conf", 5, LocBottom);
c_onScreenButton errorState("ER", 6, LocRight, &getErrorState);
c_onScreenButton okState("OK", 7, LocRight, &getOkState);
c_onScreenButton openState("Open", 8, LocRight, &getOpenState);
c_onScreenButton wifiState("Wifi", 9, LocRight, &getWifiState);
std::vector<c_onScreenButton> MainScreen;
displayState CurrentGuiState;
void initGui(void)
{
Serial.print("Init GUI: ");
uint16_t screenwidth = getDisplayWidth() - 1;
uint16_t buttonwidth = ((screenwidth / mLast) - CONTROLLOFFSET * 2) - 1;
uint16_t currentWidth = 0;
uint16_t ypos = getDisplayHeight() - 1 - CONTROLSLINE_H + 2;
//setup bottom buttons
ma20.begin(currentWidth, ypos, buttonwidth, CONTROLSLINE_H + 6, CONTROLRADIUS);
ma200.begin(currentWidth += (buttonwidth - 1), ypos, buttonwidth, CONTROLSLINE_H + CONTROLRADIUS, CONTROLRADIUS);
ma1000.begin(currentWidth += (buttonwidth - 1), ypos, buttonwidth, CONTROLSLINE_H + CONTROLRADIUS, CONTROLRADIUS);
mauto.begin(currentWidth += (buttonwidth - 1), ypos, buttonwidth, CONTROLSLINE_H + CONTROLRADIUS, CONTROLRADIUS);
bsetup.begin(currentWidth += (buttonwidth - 1), ypos, buttonwidth, CONTROLSLINE_H + CONTROLRADIUS, CONTROLRADIUS);
//setup right side indicators
uint16_t currentYpos = 0;
uint16_t IndicatorXpos = screenwidth - INDICATORWIDTH - (INDICATORWIDTH / 2);
errorState.begin(IndicatorXpos, currentYpos, INDICATORWIDTH, INDICATORHEIGHT, INDICATORRADIUS);
okState.begin(IndicatorXpos, currentYpos += (INDICATORHEIGHT - 1), INDICATORWIDTH, INDICATORHEIGHT, INDICATORRADIUS);
openState.begin(IndicatorXpos, currentYpos += (INDICATORHEIGHT - 1), INDICATORWIDTH, INDICATORHEIGHT, INDICATORRADIUS);
wifiState.begin(IndicatorXpos, currentYpos += (INDICATORHEIGHT - 1), INDICATORWIDTH, INDICATORHEIGHT, INDICATORRADIUS);
//fill vector
Serial.print("Store");
MainScreen.push_back(ma20);
MainScreen.push_back(ma200);
MainScreen.push_back(ma1000);
MainScreen.push_back(mauto);
MainScreen.push_back(bsetup);
MainScreen.push_back(errorState);
MainScreen.push_back(okState);
MainScreen.push_back(openState);
MainScreen.push_back(wifiState);
for (auto &&button : MainScreen)
{
button.setVisible(true);
}
CurrentGuiState = mainscreen;
Serial.println("OK");
}
void drawMainSceenButtons()
{
//draw controlstrip indicators
for (auto &&thismode : MainScreen)
{
thismode.setState((thismode.getIndex() == (uint8_t)getMeasureMode()));
thismode.drawButton();
}
}
void drawMainscreenValues()
{
if (getDisplay() == NULL)
{
return;
}
drawDashedHLine(0, 12, 220);
drawDashedVLine(40, 12, 33);
getDisplay()->setFont(FONT8);
getDisplay()->drawStr(5, 8, "Fs:100Hz LP");
getDisplay()->setFont(FONT24);
//display.drawStr(60, 45, String(getValue()).c_str());
getDisplay()->setCursor(60, 45);
getDisplay()->printf("%4.2f", getValue());
uint16_t stringwidth = getDisplay()->getStrWidth(showValue("", getValue(), "").c_str());
getDisplay()->setFont(u8g2_font_8x13_t_symbols);
getDisplay()->drawUTF8(60 + stringwidth + 3, 43, "mΩ");
//drawProgressBar(0, 40, 127, 5, getBar());
}
void drawMainScreen()
{
drawMainSceenButtons();
drawMainscreenValues();
}
void handleGui(void)
{
clearDisplay();
switch (CurrentGuiState)
{
case mainscreen:
{
drawMainScreen();
}
break;
case setupscreen:
{
}
break;
}
}

View File

@@ -0,0 +1,16 @@
#pragma once
#include "Arduino.h"
#include "display.h"
#include "measure.h"
typedef enum
{
mainscreen,
setupscreen
} displayState;
void initGui(void);
void handleGui(void);
displayState getDisplayState(void);