1
0
forked from me/IronOS

Merge branch 'master' into settings

This commit is contained in:
Ben V. Brown
2022-01-07 00:14:32 +11:00
committed by GitHub
5 changed files with 142 additions and 28 deletions

View File

@@ -2,6 +2,12 @@
## Downloading source file
In the development of this firmware, there are three _types_ of firmware released.
These are the "Main" stable releases, which generally have high confidence in being bug free.
Release candidates are released slightly more often, and these are generally perfectly fine for everyday use. These are released early to allow for translation checking and for wonderful people to help spot bugs and regressions.
Finally, there are the "mainline" builds, which are built from the main git branch.
These are built on every change an can be found on the Actions tab (see below).
### Main release
Main releases are made to the [releases page](https://github.com/Ralim/IronOS/releases).
@@ -111,7 +117,20 @@ You will also need the matching drivers from [here](http://www.gd32mcu.com/downl
These are called "GD32 Dfu Drivers" if the link breaks.
You can also use dfu-util if you wish to set it up, but that is better documented by others
#### Steps:
1. Download both the `GD32 MCU DFU TOOL` and the `Drivers`
1. Install the drivers and open the DFU tool
1. Ignore the prompt to update the tool.
1. Connect pinecil to windows with usb cable while holding down minus button, **screen will be stay blank** but you will hear the noise from windows connecting to it.
1. At the top of the DFU tool, you should see `GD DFU DEVICE 1` appear at the top
1. Change the mode to `Download to device`
1. Select the `open` button in that area of the window and load the `Pinecil_XX.hex` file from the downloaded release
1. Tick the `verify after download` check box
1. Click the OK button at the bottom of the window to run the process
1. After it is complete either click "Leave DFU` or unplug the iron and power cycle it while _not_ holding down the buttons.
You can also use dfu-util if you wish to set it up, but that is better documented by others when it comes to windows.
### FAQ

View File

@@ -4,7 +4,7 @@
# IronOS - Flexible Soldering iron control Firmware
_This repository was formerly known as TS100, it's the same great code. Just with more supported devices_
_This repository was formerly known as TS100, it's the same great code. Just with more supported devices._
Originally conceived as an alternative firmware for the TS100, this firmware has evolved into a complex soldering iron control firmware.
@@ -20,7 +20,13 @@ This project is considered feature complete for use as a soldering iron, _so ple
_This firmware does **NOT** support the USB port while running for changing settings. This is done through the onscreen menu only. Logos are edited using the tool or python script and uploaded in DFU mode._
To get started with this firmware, please jump over to [here](Documentation/GettingStarted.md)
To get started with this firmware, please jump over to [here](Documentation/GettingStarted.md).
But the TL;DR is to press the button near the front of the iron to heat up. Use the button near the back of the iron to enter the settings menu.
Long hold the rear button in soldering mode to exit back to the start screen.
## Installation
For notes on installation for your device, please refer to the [Flashing Guide](Documentation/Flashing.md).
## Key Features
@@ -41,10 +47,6 @@ To get started with this firmware, please jump over to [here](Documentation/Gett
- [Custom boot up logo support](Documentation/Logo.md)
- Automatic LCD rotation based on the orientation
## Installation
For notes on installation for your device, please refer to the [Flashing Guide](Documentation/Flashing.md).
## Menu System
This new firmware uses a new menu system to allow access to the settings on the device.

View File

@@ -194,7 +194,7 @@
},
"LanguageSwitch": {
"text2": ["Sprache:", " DE Deutsch"],
"desc": ""
"desc": "Sprache der Firmware ändern"
},
"Brightness": {
"text2": ["Bildschirm-", "kontrast"],

View File

@@ -147,7 +147,7 @@
},
"PDNegTimeout": {
"text2": ["Délai", "expiration PD"],
"desc": "Délai de la negociation PD par étapes de 100ms pour la compatiblité avec certains chargeurs QC (0: désactivé)"
"desc": "Délai de la negociation PD par étapes de 100ms pour la compatiblité avec certains chargeurs QC"
},
"PowerLimit": {
"text2": ["Limite de", "puissance"],
@@ -199,7 +199,7 @@
},
"LanguageSwitch": {
"text2": ["Langue :", " FR Français"],
"desc": ""
"desc": "Langue du firmware"
},
"Brightness": {
"text2": ["Luminosité", "de l'écran"],

View File

@@ -504,7 +504,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
case BUTTON_B_LONG:
case BUTTON_F_SHORT:
case BUTTON_B_SHORT:
// Do nothing and display a lock warming
// Do nothing and display a lock warning
warnUser(translatedString(Tr->WarningKeysLockedString), TICKS_SECOND / 2);
break;
default:
@@ -548,7 +548,15 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
}
}
// else we update the screen information
OLED::setCursor(0, 0);
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(50, 0);
} else {
OLED::setCursor(-1, 0);
}
OLED::clearScreen();
// Draw in the screen details
if (getSettingValue(SettingsOptions::DetailedSoldering)) {
@@ -556,23 +564,55 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
#ifndef NO_SLEEP_MODE
if (getSettingValue(SettingsOptions::Sensitivity) && getSettingValue(SettingsOptions::SleepTime)) {
OLED::setCursor(47, 0);
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(32, 0);
} else {
OLED::setCursor(47, 0);
}
display_countdown(getSleepTimeout());
}
#endif
if (boostModeOn) {
OLED::setCursor(54, 8);
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(38, 8);
} else {
OLED::setCursor(55, 8);
}
OLED::print(SymbolPlus, FontStyle::SMALL);
}
OLED::setCursor(67, 0);
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(0, 0);
} else {
OLED::setCursor(67, 0);
}
OLED::printNumber(x10WattHistory.average() / 10, 2, FontStyle::SMALL);
OLED::print(SymbolDot, FontStyle::SMALL);
OLED::printNumber(x10WattHistory.average() % 10, 1, FontStyle::SMALL);
OLED::print(SymbolWatts, FontStyle::SMALL);
OLED::setCursor(67, 8);
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(0, 8);
} else {
OLED::setCursor(67, 8);
}
printVoltage();
OLED::print(SymbolVolts, FontStyle::SMALL);
} else {
@@ -645,9 +685,9 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
} else {
setStatusLED(LED_HEATING);
}
// If we have tripped thermal runaway, turn off header and show warning
// If we have tripped thermal runaway, turn off heater and show warning
if (heaterThermalRunaway) {
currentTempTargetDegC = 0; // heaater control off
currentTempTargetDegC = 0; // heater control off
// TODO WARNING
warnUser(translatedString(Tr->WarningThermalRunaway), 10 * TICKS_SECOND);
@@ -906,28 +946,83 @@ void startGUITask(void const *argument) {
}
// Clear the lcd buffer
OLED::clearScreen();
OLED::setCursor(0, 0);
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(50, 0);
} else {
OLED::setCursor(-1, 0);
}
if (getSettingValue(SettingsOptions::DetailedIDLE)) {
if (isTipDisconnected()) {
OLED::drawArea(0, 0, 41, 16, disconnectedTipIcon);
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
// in right handed mode we want to draw over the first part
OLED::drawArea(55, 0, 41, 16, disconnectedTipIconFlip);
} else {
OLED::drawArea(0, 0, 41, 16, disconnectedTipIcon);
}
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(-1, 0);
} else {
OLED::setCursor(42, 0);
}
uint32_t Vlt = getInputVoltageX10(getSettingValue(SettingsOptions::VoltageDiv), 0);
OLED::printNumber(Vlt / 10, 2, FontStyle::LARGE);
OLED::print(SymbolDot, FontStyle::LARGE);
OLED::printNumber(Vlt % 10, 1, FontStyle::LARGE);
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(48, 8);
} else {
OLED::setCursor(91, 8);
}
OLED::print(SymbolVolts, FontStyle::SMALL);
} else {
if (!(getSettingValue(SettingsOptions::CoolingTempBlink) && (tipTemp > 55) && (xTaskGetTickCount() % 1000 < 300)))
// Blink temp if setting enable and temp < 55°
// 1000 tick/sec
// OFF 300ms ON 700ms
gui_drawTipTemp(true, FontStyle::LARGE); // draw in the temp
OLED::setCursor(73, 0); // top right
gui_drawTipTemp(true, FontStyle::LARGE); // draw in the temp
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(6, 0);
} else {
OLED::setCursor(73, 0); // top right
}
OLED::printNumber(getSettingValue(SettingsOptions::SolderingTemp), 3, FontStyle::SMALL); // draw set temp
if (getSettingValue(SettingsOptions::TemperatureInF))
OLED::print(SymbolDegF, FontStyle::SMALL);
else
OLED::print(SymbolDegC, FontStyle::SMALL);
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
#else
if (OLED::getRotation()) {
#endif
OLED::setCursor(0, 8);
} else {
OLED::setCursor(67, 8); // bottom right
}
printVoltage(); // draw voltage then symbol (v)
OLED::print(SymbolVolts, FontStyle::SMALL);
}
OLED::setCursor(67, 8); // bottom right
printVoltage(); // draw voltage then symbol (v)
OLED::print(SymbolVolts, FontStyle::SMALL);
} else {
#ifdef OLED_FLIP
if (!OLED::getRotation()) {
@@ -963,7 +1058,6 @@ void startGUITask(void const *argument) {
// in right handed mode we want to draw over the first part
OLED::fillArea(55, 0, 41, 16, 0); // clear the area for the temp
OLED::setCursor(56, 0);
} else {
OLED::fillArea(0, 0, 41, 16, 0); // clear the area
OLED::setCursor(0, 0);
@@ -983,7 +1077,6 @@ void startGUITask(void const *argument) {
#endif
// in right handed mode we want to draw over the first part
OLED::drawArea(55, 0, 41, 16, disconnectedTipIconFlip);
} else {
OLED::drawArea(0, 0, 41, 16, disconnectedTipIcon);
}