Update files

This commit is contained in:
wagiminator
2020-11-16 18:52:49 +01:00
parent b7edc221b0
commit 688337990b
6 changed files with 2835 additions and 2831 deletions

View File

@@ -1,3 +1,6 @@
## !!! Warning: the version with "t" is the test version, there may be stability problems! Not recommended for production environments
## !!! 警告带有“t”的是测试版本可能存在稳定性问题不建议用于生产环境
# 1. Overview # 1. Overview
T12 焊台控制器功能介绍 T12 焊台控制器功能介绍
T12 Quick Heating Soldering Station featuring T12 Quick Heating Soldering Station featuring
@@ -54,20 +57,20 @@ T12 Quick Heating Soldering Station featuring
## V1.8t7 New features: ## V1.8t7 New features:
-EEPROM可用性检查机制 - EEPROM可用性检查机制
-EEPROM availability check - EEPROM availability check
-允许保存最大30个烙铁头的配置 - 允许保存最大30个烙铁头的配置
- Tip change detection30 preservable soldering tip configurations - Tip change detection30 preservable soldering tip configurations
-9段温度曲线拟合 - 9段温度曲线拟合
-9 segments of temperature curve fitting - 9 segments of temperature curve fitting
## Links: Project Video: https://youtu.be/I9ATDxvQ1Bc
- Project on EasyEDA: https://easyeda.com/wagiminator/z-solderingstation-smd-v2
- Project Video: https://youtu.be/I9ATDxvQ1Bc Video from John Glavinos (electronics4all): https://youtu.be/4YDcWfOQmz4
- Video from John Glavinos (electronics4all): https://youtu.be/4YDcWfOQmz4
- Video from LHW-createskyblue (UI-v1.6L): https://b23.tv/LiOe54 Video from LHW-createskyblue (UI-v1.6L): https://b23.tv/LiOe54
# 2. Versions, Upgrades and Notes # 2. Versions, Upgrades and Notes

View File

@@ -343,7 +343,7 @@ void loop() {
//HelpMeSerialer(); //HelpMeSerialer();
ROTARYCheck(); // check rotary encoder (temp/boost setting, enter setup menu) ROTARYCheck(); // check rotary encoder (temp/boost setting, enter setup menu)
SLEEPCheck(); // check and activate/deactivate sleep modes SLEEPCheck(); // check and activate/deactivate sleep modes
SENSORCheck(); // reads temperature and vibration switch of the iron SENSORCheck(1); // reads temperature and vibration switch of the iron
Thermostat(0); // heater control Thermostat(0); // heater control
MainScreen(); // updates the main page on the OLED MainScreen(); // updates the main page on the OLED
//beep(0); //beep(0);

View File

@@ -166,7 +166,7 @@ void setRotary(int rmin, int rmax, int rstep, int rvalue) {
} }
// reads temperature, vibration switch and supply voltages // reads temperature, vibration switch and supply voltages
void SENSORCheck() { void SENSORCheck(bool mode) {
// shut off heater in order to measure temperature // shut off heater in order to measure temperature
#if UsePMOS #if UsePMOS
analogWrite(CONTROL_PIN, 0); analogWrite(CONTROL_PIN, 0);
@@ -195,6 +195,8 @@ void SENSORCheck() {
RawTemp += (temp - RawTemp) * SMOOTHIE; // stabilize ADC temperature reading RawTemp += (temp - RawTemp) * SMOOTHIE; // stabilize ADC temperature reading
CurrentTemp = calculateTemp(RawTemp); CurrentTemp = calculateTemp(RawTemp);
// stabilize displayed temperature when around setpoint // stabilize displayed temperature when around setpoint
if ((ShowTemp != Setpoint) || (abs(ShowTemp - CurrentTemp) > 5)) ShowTemp = CurrentTemp; if ((ShowTemp != Setpoint) || (abs(ShowTemp - CurrentTemp) > 5)) ShowTemp = CurrentTemp;
if (abs(ShowTemp - Setpoint) <= 1) ShowTemp = Setpoint; if (abs(ShowTemp - Setpoint) <= 1) ShowTemp = Setpoint;
@@ -210,7 +212,7 @@ void SENSORCheck() {
} }
// checks if tip is present or currently inserted // checks if tip is present or currently inserted
if (ShowTemp > 500) TipIsPresent = false; // tip removed ? if (ShowTemp > 500) TipIsPresent = false; // tip removed ?
if (!TipIsPresent && (ShowTemp < 500)) { // new tip inserted ? if (!TipIsPresent && (ShowTemp < 500)&&mode) { // new tip inserted ?
//关闭加热 //关闭加热
#if UsePMOS #if UsePMOS
analogWrite(CONTROL_PIN, 0); analogWrite(CONTROL_PIN, 0);
@@ -226,6 +228,7 @@ void SENSORCheck() {
c0 = LOW; // switch must be released c0 = LOW; // switch must be released
setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); // reset rotary encoder setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, SetTemp); // reset rotary encoder
} }
} }

View File

@@ -74,15 +74,11 @@ void MainScreen() {
}; };
} else { } else {
//arduboy.invert(1);
arduboy.setTextSize(6);
SetTextColor(1); SetTextColor(1);
arduboy.clear(); arduboy.clear();
if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep(); if (getChipTemp() > 80 && ((millis() * 4) / 1000) % 2) beep();
if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep(); if ((float)Vin / 100 < UnderVoltage && ((millis() * 4) / 1000) % 2) beep();
arduboy.setCursor(12, 2); DrawNumRect(9, 3, 6, ShowTemp);
if (ShowTemp > 500) arduboy.print(999); else arduboy.print(ShowTemp);
DrawStatusBar(1); DrawStatusBar(1);
arduboy.display(); arduboy.display();
} }
@@ -94,7 +90,7 @@ void DrawNumRect(byte x, byte y, byte size, int n) {
arduboy.setCursor(3 + x, 3 + y); arduboy.setCursor(3 + x, 3 + y);
arduboy.setTextSize(size); arduboy.setTextSize(size);
if (ShowTemp > 500) arduboy.print(F("000")); else arduboy.print(n); if (ShowTemp > 500) arduboy.print(F("000")); else arduboy.print(n);
arduboy.drawRect(1 + x, 1 + y, 89, 39, 0); if (size != 6)arduboy.drawRect(1 + x, 1 + y, 89, 39, 0);
} }
//绘制状态条 //绘制状态条
@@ -330,18 +326,25 @@ uint8_t MenuScreen(uint8_t selected) {
selected = getRotary(); selected = getRotary();
//非线性滑动动画 //非线性滑动动画
SlidingAnimationX += (selected - lastselected) * 56; SlidingAnimationX += (selected - lastselected) * 56;
if (SlidingAnimationX != 0) SlidingAnimationX += 0.55 * (-SlidingAnimationX); if (SlidingAnimationX != 0) SlidingAnimationX += 0.5 * (-SlidingAnimationX);
lastselected = selected; lastselected = selected;
arduboy.clear(); // if (arduboy.nextFrame()) {
//绘制图标 如果有指定的话 arduboy.clear();
for (byte i = 0; i < 5; i++) if (selected - 2 + i >= 0 && selected - 2 + i < Menu_table[MenuLevel]) DrawApp(-72 + i * 56 + SlidingAnimationX, selected - 2 + i + QueryMenuObject()); //绘制图标 如果有指定的话
DrawAppText(selected + QueryMenuObject()); for (byte i = 0; i < 5; i++) if (selected - 2 + i >= 0 && selected - 2 + i < Menu_table[MenuLevel]) DrawApp(-72 + i * 56 + SlidingAnimationX, selected - 2 + i + QueryMenuObject());
DrawAppText(selected + QueryMenuObject());
arduboy.display(); arduboy.display();
// }
CheckLastButton(); CheckLastButton();
//beep(0); //beep(0);
} while (digitalRead(BUTTON_PIN) || lastbutton); } while (digitalRead(BUTTON_PIN) || lastbutton);
beep(); beep();
/*
arduboy.invert(1);
delay(50);
arduboy.invert(0);
*/
return selected; return selected;
} }
@@ -492,6 +495,7 @@ void ChangeTipScreen() {
if (selected) arrow = 1; if (selected) arrow = 1;
setRotary(0, NumberOfTips - 1, 1, selected); setRotary(0, NumberOfTips - 1, 1, selected);
lastbutton = (!digitalRead(BUTTON_PIN)); lastbutton = (!digitalRead(BUTTON_PIN));
arduboy.invert(0);
do { do {
//beep(0); //beep(0);
arduboy.clear(); arduboy.clear();
@@ -540,14 +544,14 @@ void ChangeTipScreen() {
void CalibrationScreen() { void CalibrationScreen() {
float P[4]; float P[4];
int xx[9]; int xx[9];
for (int CalStep = 0; CalStep < 9; CalStep++) { for (byte CalStep = 0; CalStep < 9; CalStep++) {
if (CalStep != 0) setRotary(0, 1023, 1, xx[CalStep - 1]); else setRotary(0, 1023, 1, 0); if (CalStep != 0) setRotary(0, 1023, 1, xx[CalStep - 1]); else setRotary(0, 1023, 1, 0);
BeepIfWorky = true; BeepIfWorky = true;
lastbutton = (!digitalRead(BUTTON_PIN)); lastbutton = (!digitalRead(BUTTON_PIN));
do { do {
arduboy.clear(); arduboy.clear();
arduboy.setTextSize(1); arduboy.setTextSize(1);
SENSORCheck(); //读取传感器 SENSORCheck(0); //读取传感器
SetTemp = getRotary(); SetTemp = getRotary();
Thermostat(1); //加热控制 - ADC数值为基准 Thermostat(1); //加热控制 - ADC数值为基准