Merge branch 'master' into settings
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
14
README.md
14
README.md
@@ -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.
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
},
|
||||
"LanguageSwitch": {
|
||||
"text2": ["Sprache:", " DE Deutsch"],
|
||||
"desc": ""
|
||||
"desc": "Sprache der Firmware ändern"
|
||||
},
|
||||
"Brightness": {
|
||||
"text2": ["Bildschirm-", "kontrast"],
|
||||
|
||||
@@ -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"],
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user