Merge branch 'master' into master
This commit is contained in:
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,6 +274,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,6 +277,22 @@
|
||||
"Taste Lang?"
|
||||
],
|
||||
"desc": "Temperaturwechselschritte bei langem Tastendruck!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,6 +276,22 @@
|
||||
"long"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,6 +275,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
"BadTipString": "PANNE HS",
|
||||
"SleepingSimpleString": "Zzzz",
|
||||
"SleepingAdvancedString": "En veille...",
|
||||
"WarningSimpleString": "HOT!",
|
||||
"WarningAdvancedString": "ATTENTION! CHAUD",
|
||||
"WarningSimpleString": "CHAUD!",
|
||||
"WarningAdvancedString": "ATTENTION! CHAUD!",
|
||||
"SleepingTipAdvancedString": "Panne:",
|
||||
"IdleTipString": "Tip:",
|
||||
"IdleSetString": " Set:",
|
||||
@@ -238,41 +238,57 @@
|
||||
"text": "PLIMEN",
|
||||
"text2": [
|
||||
"P Limit",
|
||||
"Enable"
|
||||
"Activer?"
|
||||
],
|
||||
"desc": "Enable power limit"
|
||||
"desc": "Activer la limite de puissance"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"text": "PLIM",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Limit"
|
||||
"Puissance",
|
||||
"Limite"
|
||||
],
|
||||
"desc": "Maximum power the iron can use <Watts>"
|
||||
"desc": "Puissance maximale utilisable <Watts>"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"text": "RVTCHG",
|
||||
"text2": [
|
||||
"Key +-",
|
||||
"reverse?"
|
||||
"Inverser?"
|
||||
],
|
||||
"desc": "Reverse the tip temperature change buttons plus minus assignment."
|
||||
"desc": "Inversez l'assignation +/- du bouton de changement de température de la pointe."
|
||||
},
|
||||
"TempChangeShortStep": {
|
||||
"text": "TCHGST",
|
||||
"text2": [
|
||||
"Temp change",
|
||||
"short?"
|
||||
"Court?"
|
||||
],
|
||||
"desc": "Temperature change steps on short button press!"
|
||||
"desc": "Incrément de changement de température sur appui court."
|
||||
},
|
||||
"TempChangeLongStep": {
|
||||
"text": "TCHGLT",
|
||||
"text2": [
|
||||
"Temp change",
|
||||
"long?"
|
||||
"Long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
"desc": "Incrément de changement de température sur appui long."
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,44 +235,60 @@
|
||||
"desc": "A tápegység által leadott teljesítmény"
|
||||
},
|
||||
"PowerLimitEnable": {
|
||||
"text": "PLIMEN",
|
||||
"text": "TELJH",
|
||||
"text2": [
|
||||
"P Limit",
|
||||
"Enable"
|
||||
"Telj H",
|
||||
"Bekapcsolva"
|
||||
],
|
||||
"desc": "Enable power limit"
|
||||
"desc": "Bemeneti teljesitmény korlátozása"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"text": "PLIM",
|
||||
"text": "TELJM",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Limit"
|
||||
"Telj",
|
||||
"maximum"
|
||||
],
|
||||
"desc": "Maximum power the iron can use <Watts>"
|
||||
"desc": "Maximális teljesitmény beállitása <Watts>"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"text": "RVTCHG",
|
||||
"text": "HÖVÁLT",
|
||||
"text2": [
|
||||
"Key +-",
|
||||
"reverse?"
|
||||
"GOMB +-",
|
||||
"Felcseréled?"
|
||||
],
|
||||
"desc": "Reverse the tip temperature change buttons plus minus assignment."
|
||||
"desc": "A páka hömérséklet növelés csökkentési gombok felcserélése."
|
||||
},
|
||||
"TempChangeShortStep": {
|
||||
"text": "TCHGST",
|
||||
"text": "HÖRÖV",
|
||||
"text2": [
|
||||
"Temp change",
|
||||
"short?"
|
||||
"Hömérséklet",
|
||||
"váltás rövid?"
|
||||
],
|
||||
"desc": "Temperature change steps on short button press!"
|
||||
"desc": "Hömérséklet váltás rövid gombnyomásrs bekapcsolva!"
|
||||
},
|
||||
"TempChangeLongStep": {
|
||||
"text": "TCHGLT",
|
||||
"text": "HÖHOS",
|
||||
"text2": [
|
||||
"Temp change",
|
||||
"long?"
|
||||
"Hömérséklet",
|
||||
"váltás hosszú?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
"desc": "Hömérséklet váltás hosszú gombnyomásrs bekapcsolva!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "TELJP",
|
||||
"text2": [
|
||||
"Telj power",
|
||||
"bank üzem W"
|
||||
],
|
||||
"desc": "Powerbank üzemnél nem engedi a powerbankot kikapcsolni idönkénti áram felvételt generál. "
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,6 +275,22 @@
|
||||
"pressione lunga"
|
||||
],
|
||||
"desc": "Varia la temperatura della punta attraverso una lunga pressione dei tasti"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
"languageLocalName": "Русский",
|
||||
"cyrillicGlyphs": true,
|
||||
"messages": {
|
||||
"SettingsCalibrationDone": "Калибровка выполнена!",
|
||||
"SettingsCalibrationWarning": "Убедитесь, что жало остыло до комнатной температуры, прежде чем продолжать!",
|
||||
"SettingsResetWarning": "Вы действительно хотите сбросить настройки до значений по умолчанию?",
|
||||
"SettingsCalibrationDone": "Калибровка завершена!",
|
||||
"SettingsCalibrationWarning": "Прежде чем продолжить, пожалуйста, убедитесь что жало имеет комнатную температуру!",
|
||||
"SettingsResetWarning": "Вы уверены, что хотите сбросить настройки к значениям по-умолчанию?",
|
||||
"UVLOWarningString": "НАПРЯЖ--",
|
||||
"UndervoltageString": "Под питанием",
|
||||
"InputVoltageString": "Питание B: ",
|
||||
"WarningTipTempString": "Жало t°: ",
|
||||
"BadTipString": "Жало--",
|
||||
"SleepingSimpleString": "Сон ",
|
||||
"UndervoltageString": "Низк. напряжение",
|
||||
"InputVoltageString": "Питание В: ",
|
||||
"WarningTipTempString": "Темп. жала: ",
|
||||
"BadTipString": "ЖАЛО--",
|
||||
"SleepingSimpleString": "Zzzz",
|
||||
"SleepingAdvancedString": "Ожидание...",
|
||||
"WarningSimpleString": " ГОРЯЧО!",
|
||||
"WarningSimpleString": "ГОРЯЧО!",
|
||||
"WarningAdvancedString": "!!! ГОРЯЧЕЕ ЖАЛО !!!",
|
||||
"SleepingTipAdvancedString": "Жало:",
|
||||
"IdleTipString": "Жало:",
|
||||
@@ -23,18 +23,18 @@
|
||||
"OffString": "Выкл.",
|
||||
"ResetOKMessage": "Сброс OK",
|
||||
"YourGainMessage": "Прирост:",
|
||||
"SettingsResetMessage": "Настройки \nсброшены!"
|
||||
"SettingsResetMessage": "Настройки сброшены!"
|
||||
},
|
||||
"characters": {
|
||||
"SettingRightChar": "П",
|
||||
"SettingLeftChar": "Л",
|
||||
"SettingAutoChar": "A",
|
||||
"SettingFastChar": "+",
|
||||
"SettingSlowChar": "-",
|
||||
"SettingStartSolderingChar": "T",
|
||||
"SettingStartSleepChar": "S",
|
||||
"SettingStartSleepOffChar": "O",
|
||||
"SettingStartNoneChar": "F"
|
||||
"SettingAutoChar": "А",
|
||||
"SettingFastChar": "Б",
|
||||
"SettingSlowChar": "М",
|
||||
"SettingStartSolderingChar": "П",
|
||||
"SettingStartSleepChar": "О",
|
||||
"SettingStartSleepOffChar": "К",
|
||||
"SettingStartNoneChar": "В"
|
||||
},
|
||||
"menuDouble": true,
|
||||
"menuGroups": {
|
||||
@@ -47,234 +47,250 @@
|
||||
},
|
||||
"PowerSavingMenu": {
|
||||
"text2": [
|
||||
"Режим",
|
||||
"Режимы",
|
||||
"сна"
|
||||
],
|
||||
"desc": "Параметры экономии энергии"
|
||||
"desc": "Найстроки режима ожидания"
|
||||
},
|
||||
"UIMenu": {
|
||||
"text2": [
|
||||
"Пользовател",
|
||||
"интерфейс"
|
||||
"Параметры",
|
||||
"интерфейса"
|
||||
],
|
||||
"desc": "Параметры пользовательского интерфейса"
|
||||
"desc": "Найстройки пользовательского интерфейса"
|
||||
},
|
||||
"AdvancedMenu": {
|
||||
"text2": [
|
||||
"Дополнител.",
|
||||
"параметры"
|
||||
"найстройки"
|
||||
],
|
||||
"desc": "Дополнительные параметры"
|
||||
"desc": "Дополнительные настройки"
|
||||
}
|
||||
},
|
||||
"menuOptions": {
|
||||
"PowerSource": {
|
||||
"text": "ИстП",
|
||||
"text": "ИстчнПит",
|
||||
"text2": [
|
||||
"Источник",
|
||||
"питания"
|
||||
],
|
||||
"desc": "Источник питания. Установка напряжения отключения. <DC = 10 В, S = 3.3 В на батарею, ограничение мощности выкл.>"
|
||||
"desc": "Источник питания. Устанавливает напряжение отсечки. <DC 10В> <S 3.3В на ячейку, без лимита мощности>"
|
||||
},
|
||||
"SleepTemperature": {
|
||||
"text": "Тожд",
|
||||
"text": "ТмпОжд",
|
||||
"text2": [
|
||||
"Темпер.",
|
||||
"сна"
|
||||
"Темп.",
|
||||
"ожидания"
|
||||
],
|
||||
"desc": "Температура режима ожидания <С>"
|
||||
"desc": "Температура режима ожидания"
|
||||
},
|
||||
"SleepTimeout": {
|
||||
"text": "Вожд",
|
||||
"text": "ВрмОжид",
|
||||
"text2": [
|
||||
"Таймаут",
|
||||
"сна"
|
||||
"ожидания"
|
||||
],
|
||||
"desc": "Время до перехода в режим ожидания <Минуты/Секунды>"
|
||||
},
|
||||
"ShutdownTimeout": {
|
||||
"text": "Тоткл",
|
||||
"text": "ВрмОткл",
|
||||
"text2": [
|
||||
"Время до",
|
||||
"отключения"
|
||||
"Таймаут",
|
||||
"выключения"
|
||||
],
|
||||
"desc": "Время до отключения <Минуты>"
|
||||
"desc": "Время до отключения паяльника <Минуты>"
|
||||
},
|
||||
"MotionSensitivity": {
|
||||
"text": "ЧувсДв",
|
||||
"text": "ЧувсАксл",
|
||||
"text2": [
|
||||
"Чувст. сенсо-",
|
||||
"ра движения"
|
||||
"Чувствительн.",
|
||||
"акселерометра"
|
||||
],
|
||||
"desc": "Акселерометр <0 = Выкл, 1 = Мин. чувствительный, 9 = Макс. чувствительный>"
|
||||
"desc": "Чувствительность акселерометра <0=Выкл., 1=Мин., 9=Макс.>"
|
||||
},
|
||||
"TemperatureUnit": {
|
||||
"text": "ЕдТемп",
|
||||
"text2": [
|
||||
"Формат темпе-",
|
||||
"ратуры(C°/F°)"
|
||||
"Единицы",
|
||||
"температуры"
|
||||
],
|
||||
"desc": "Единица измерения температуры <C = Цельсия, F = Фаренгейт>"
|
||||
"desc": "Единицы изменения температуры <C=Цельция, F=Фаренгейта>"
|
||||
},
|
||||
"AdvancedIdle": {
|
||||
"text": "ИнфОжд",
|
||||
"text2": [
|
||||
"Подробный ре-",
|
||||
"жим ожидания"
|
||||
"Подробный",
|
||||
"реж. ожидания"
|
||||
],
|
||||
"desc": "Показывать детальную информацию маленьким шрифтом на домашнем экране"
|
||||
"desc": "Отображать детальную информацию уменьшенным шрифтом на домашнем экране"
|
||||
},
|
||||
"DisplayRotation": {
|
||||
"text": "ПовЭкр",
|
||||
"text2": [
|
||||
"Автоповорот",
|
||||
"Ориентация",
|
||||
"экрана"
|
||||
],
|
||||
"desc": "Ориентация дисплея <A = Авто, Л = Левая рука, П = Правая рука>"
|
||||
"desc": "Ориентация экрана <А=Авто, Л=Левая рука, П=Правая рука>"
|
||||
},
|
||||
"BoostEnabled": {
|
||||
"text": "Турбо",
|
||||
"text": "Турб",
|
||||
"text2": [
|
||||
"Режим",
|
||||
"Турбо"
|
||||
"Турбо",
|
||||
"режим"
|
||||
],
|
||||
"desc": "Активирует \"Турбо-режим\" при удержании кнопки А во время пайки"
|
||||
"desc": "Включить активацию турбо-режма, при удержании ближней к жалу кнопки во время пайки"
|
||||
},
|
||||
"BoostTemperature": {
|
||||
"text": "Ттур",
|
||||
"text": "ТемпТурб",
|
||||
"text2": [
|
||||
"Темпер.",
|
||||
"Турбо"
|
||||
"t° турбо",
|
||||
"режима"
|
||||
],
|
||||
"desc": "Температура в \"Турбо-режиме\""
|
||||
"desc": "Температура жала в турбо режиме"
|
||||
},
|
||||
"AutoStart": {
|
||||
"text": "Астарт",
|
||||
"text": "АвтоРеж",
|
||||
"text2": [
|
||||
"Горячий",
|
||||
"Авто",
|
||||
"старт"
|
||||
],
|
||||
"desc": "Автоматический запуск паяльника при включении питания <T = Нагрев, S = Режим ожидания, F = Выкл.>"
|
||||
"desc": "Режим с которым запускается паяльник при подаче питания <П=Пайка, О=Ожидание, К=Ожидание при комн. темп., В=Выкл.>"
|
||||
},
|
||||
"CooldownBlink": {
|
||||
"text": "Охлажд",
|
||||
"text": "МигТемп",
|
||||
"text2": [
|
||||
"Показ t° при",
|
||||
"остывании"
|
||||
"Мигание t°",
|
||||
"при остывании"
|
||||
],
|
||||
"desc": "Показывать температуру на экране охлаждения, пока жало остается горячим"
|
||||
"desc": "Мигать температурой на экране охлаждения, пока жало еще горячее"
|
||||
},
|
||||
"TemperatureCalibration": {
|
||||
"text": "КалибрТ",
|
||||
"text": "КалТемп?",
|
||||
"text2": [
|
||||
"Калибровка",
|
||||
"температуры"
|
||||
],
|
||||
"desc": "Калибровка термодатчика"
|
||||
"desc": "Калибровка термодатчика жала"
|
||||
},
|
||||
"SettingsReset": {
|
||||
"text": "СБРОС?",
|
||||
"text": "Сброс?",
|
||||
"text2": [
|
||||
"Сбросить все",
|
||||
"настройки?"
|
||||
"Сброс",
|
||||
"Настроек"
|
||||
],
|
||||
"desc": "Сброс всех настроек"
|
||||
"desc": "Сброс настроек к значеням по-умолчанию"
|
||||
},
|
||||
"VoltageCalibration": {
|
||||
"text": "КалибрU?",
|
||||
"text": "КалНапр",
|
||||
"text2": [
|
||||
"Калибровка",
|
||||
"напряжения"
|
||||
],
|
||||
"desc": "Калибровка входного напряжения. Настройка кнопками, нажать и удержать чтобы завершить"
|
||||
"desc": "Калибровка входного напряжения <длинное нажатие для выхода>"
|
||||
},
|
||||
"AdvancedSoldering": {
|
||||
"text": "ИнфПай",
|
||||
"text": "ИнфПайк",
|
||||
"text2": [
|
||||
"Подробный ре-",
|
||||
"жим пайки"
|
||||
"Подробный",
|
||||
"экран пайки"
|
||||
],
|
||||
"desc": "Показывать детальную информацию при пайке"
|
||||
"desc": "Показывать детальную информацию на экране пайки"
|
||||
},
|
||||
"ScrollingSpeed": {
|
||||
"text": "DESCSP",
|
||||
"text": "СкорТекс",
|
||||
"text2": [
|
||||
"Скорость",
|
||||
"текста"
|
||||
],
|
||||
"desc": "Скорость прокрутки текста"
|
||||
"desc": "Скорость прокрутки текста <М=медленно, Б=быстро>"
|
||||
},
|
||||
"TipModel": {
|
||||
"text": "TIPMO",
|
||||
"text": "МодЖала",
|
||||
"text2": [
|
||||
"Модель",
|
||||
"жало"
|
||||
"жала"
|
||||
],
|
||||
"desc": "Выбор модели жало"
|
||||
"desc": "Выбор модели жала"
|
||||
},
|
||||
"SimpleCalibrationMode": {
|
||||
"text": "SMPCAL",
|
||||
"text": "УпрКал",
|
||||
"text2": [
|
||||
"Простая",
|
||||
"Упрощенная",
|
||||
"калибровка"
|
||||
],
|
||||
"desc": "Простая калибровка с использованием горячей воды"
|
||||
"desc": "Упрощенная калибровка с использованием горячей воды"
|
||||
},
|
||||
"AdvancedCalibrationMode": {
|
||||
"text": "ADVCAL",
|
||||
"text": "УлучшКал",
|
||||
"text2": [
|
||||
"Подробная",
|
||||
"Улучшенная",
|
||||
"калибровка"
|
||||
],
|
||||
"desc": "Калибровка с помощью термопары"
|
||||
"desc": "Улучшенная калибровка с импользованием термопары жала"
|
||||
},
|
||||
"PowerInput": {
|
||||
"text": "PWRW",
|
||||
"text": "МощнИст",
|
||||
"text2": [
|
||||
"Мощность",
|
||||
"адаптера"
|
||||
"питания"
|
||||
],
|
||||
"desc": "Мощность используемого адаптера питания"
|
||||
"desc": "Мощность используемого источника питания"
|
||||
},
|
||||
"PowerLimitEnable": {
|
||||
"text": "PLIMEN",
|
||||
"text": "ВклЛимW",
|
||||
"text2": [
|
||||
"Ограничение",
|
||||
"мощности"
|
||||
],
|
||||
"desc": "Включает ограничение мощности потребления"
|
||||
"desc": "Включить лимит потреблямой мощности"
|
||||
},
|
||||
"PowerLimit": {
|
||||
"text": "PLIM",
|
||||
"text": "ЗначЛимW",
|
||||
"text2": [
|
||||
"Максимальная",
|
||||
"мощность"
|
||||
],
|
||||
"desc": "Макс. мощность, которую может использовать паяльник <Ватт>"
|
||||
"desc": "Максимальная мощность которую может использовать паяльник <Ватт>"
|
||||
},
|
||||
"ReverseButtonTempChange": {
|
||||
"text": "RVTCHG",
|
||||
"text": "ИнвКноп",
|
||||
"text2": [
|
||||
"Инвертировать",
|
||||
"кнопки +-?"
|
||||
"кнопки"
|
||||
],
|
||||
"desc": "Инвертировать кнопки изменения температуры."
|
||||
"desc": "Инвертировать кнопки изменения температуры"
|
||||
},
|
||||
"TempChangeShortStep": {
|
||||
"text": "TCHGST",
|
||||
"text": "ШагКорт",
|
||||
"text2": [
|
||||
"Изменение темп.",
|
||||
"коротко?"
|
||||
"Шаг темп.",
|
||||
"кор. наж."
|
||||
],
|
||||
"desc": "Изменять температуру при коротком нажатии!"
|
||||
"desc": "Шаг изменения температуры при коротком нажатии кнопок"
|
||||
},
|
||||
"TempChangeLongStep": {
|
||||
"text": "TCHGLT",
|
||||
"text": "ШагДлин",
|
||||
"text2": [
|
||||
"Изменение темп.",
|
||||
"долго?"
|
||||
"Шаг темп.",
|
||||
"длин. наж."
|
||||
],
|
||||
"desc": "Изменять температуру при длинном нажатии!"
|
||||
"desc": "Шаг изменения температуры при длинном нажатии кнопок"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,6 +274,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"long?"
|
||||
],
|
||||
"desc": "Temperature change steps on long button press!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,22 @@
|
||||
"довго?"
|
||||
],
|
||||
"desc": "Змінювати температуру при довгому натисканні!"
|
||||
},
|
||||
"PowerPulsePower":{
|
||||
"text": "POWPLS",
|
||||
"text2": [
|
||||
"Power",
|
||||
"Pulse W"
|
||||
],
|
||||
"desc": "Keep awake pulse power intensity"
|
||||
},
|
||||
"TipGain": {
|
||||
"text": "TG",
|
||||
"text2": [
|
||||
"Modify",
|
||||
"tip gain"
|
||||
],
|
||||
"desc": "Tip gain"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,6 +282,16 @@ var def =
|
||||
"id": "TempChangeLongStep",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 16
|
||||
},
|
||||
{
|
||||
"id": "PowerPulsePower",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 16
|
||||
},
|
||||
{
|
||||
"id": "TipGain",
|
||||
"maxLen": 6,
|
||||
"maxLen2": 8
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ public:
|
||||
// Draws a number at the current cursor location
|
||||
// Clears the buffer
|
||||
static void clearScreen() {
|
||||
memset(&screenBuffer[FRAMEBUFFER_START], 0, OLED_WIDTH * 2);
|
||||
memset(firstStripPtr, 0, OLED_WIDTH * 2);
|
||||
}
|
||||
// Draws the battery level symbol
|
||||
static void drawBattery(uint8_t state) {
|
||||
@@ -101,8 +101,11 @@ public:
|
||||
bool clear);
|
||||
static void drawHeatSymbol(uint8_t state);
|
||||
static void drawScrollIndicator(uint8_t p, uint8_t h); // Draws a scrolling position indicator
|
||||
static void transitionSecondaryFramebuffer(bool forwardNavigation);
|
||||
static void useSecondaryFramebuffer(bool useSecondary);
|
||||
private:
|
||||
static void drawChar(char c); // Draw a character to a specific location
|
||||
static void setFramebuffer(uint8_t *buffer);
|
||||
static const uint8_t* currentFont;// Pointer to the current font used for rendering to the buffer
|
||||
static uint8_t* firstStripPtr; // Pointers to the strips to allow for buffer having extra content
|
||||
static uint8_t* secondStripPtr; //Pointers to the strips
|
||||
@@ -112,6 +115,7 @@ private:
|
||||
static int16_t cursor_x, cursor_y;
|
||||
static uint8_t displayOffset;
|
||||
static uint8_t screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer
|
||||
static uint8_t secondFrameBuffer[OLED_WIDTH * 2];
|
||||
};
|
||||
|
||||
#endif /* OLED_HPP_ */
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include <stdint.h>
|
||||
#include "stm32f1xx_hal.h"
|
||||
#include "unit.h"
|
||||
#define SETTINGSVERSION ( 0x1E )
|
||||
#define SETTINGSVERSION ( 0x20 )
|
||||
/*Change this if you change the struct below to prevent people getting \
|
||||
out of sync*/
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
* flash in uint16_t chunks
|
||||
*/
|
||||
typedef struct {
|
||||
uint8_t version; // Used to track if a reset is needed on firmware upgrade
|
||||
|
||||
uint16_t SolderingTemp; // current set point for the iron
|
||||
uint16_t SleepTemp; // temp to drop to in sleep
|
||||
uint8_t SleepTime; // minutes timeout to sleep
|
||||
@@ -37,25 +39,28 @@ typedef struct {
|
||||
uint8_t detailedIDLE :1; // Detailed idle screen
|
||||
uint8_t detailedSoldering :1; // Detailed soldering screens
|
||||
#ifdef ENABLED_FAHRENHEIT_SUPPORT
|
||||
uint8_t temperatureInF; // Should the temp be in F or C (true is F)
|
||||
uint8_t temperatureInF :1; // Should the temp be in F or C (true is F)
|
||||
#endif
|
||||
uint8_t descriptionScrollSpeed :1; // Description scroll speed
|
||||
uint8_t KeepAwakePulse; // Keep Awake pulse power in 0.1 watts (10 = 1Watt)
|
||||
|
||||
uint16_t voltageDiv; // Voltage divisor factor
|
||||
uint16_t BoostTemp; // Boost mode set point for the iron
|
||||
uint16_t CalibrationOffset; // This stores the temperature offset for this tip
|
||||
// in the iron.
|
||||
|
||||
uint8_t pidPowerLimit;
|
||||
|
||||
uint8_t powerLimitEnable; // Allow toggling of power limit without changing value
|
||||
uint8_t powerLimit; // Maximum power iron allowed to output
|
||||
|
||||
uint16_t TipGain; // uV/C * 10, it can be used to convert tip thermocouple voltage to temperateture TipV/TipGain = TipTemp
|
||||
|
||||
uint8_t ReverseButtonTempChangeEnabled; // Change the plus and minus button assigment
|
||||
uint16_t TempChangeLongStep; // Change the plus and minus button assigment
|
||||
uint16_t TempChangeShortStep; // Change the plus and minus button assigment
|
||||
|
||||
uint8_t version; // Used to track if a reset is needed on firmware upgrade
|
||||
uint32_t padding; // This is here for in case we are not an even divisor so
|
||||
// that nothing gets cut off
|
||||
uint8_t ReverseButtonTempChangeEnabled; // Change the plus and minus button assigment
|
||||
uint16_t TempChangeLongStep; // Change the plus and minus button assigment
|
||||
uint16_t TempChangeShortStep; // Change the plus and minus button assigment
|
||||
//MUST BE LAST
|
||||
|
||||
} systemSettingsType;
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@ extern const uint8_t USER_FONT_6x8[];
|
||||
* use SettingsShortNames as SettingsShortNames[16][1].. second column undefined
|
||||
*/
|
||||
extern const enum ShortNameType SettingsShortNameType;
|
||||
extern const char *SettingsShortNames[26][2];
|
||||
extern const char *SettingsDescriptions[26];
|
||||
extern const char *SettingsShortNames[28][2];
|
||||
extern const char *SettingsDescriptions[28];
|
||||
extern const char *SettingsMenuEntries[4];
|
||||
|
||||
extern const char *SettingsCalibrationDone;
|
||||
|
||||
@@ -325,21 +325,21 @@ case BUTTON_B_LONG:
|
||||
autoRepeatAcceleration = PRESS_ACCEL_INTERVAL_MAX
|
||||
- PRESS_ACCEL_INTERVAL_MIN;
|
||||
}
|
||||
// constrain between 50-450 C
|
||||
// constrain between 10-450 C
|
||||
#ifdef ENABLED_FAHRENHEIT_SUPPORT
|
||||
if (systemSettings.temperatureInF) {
|
||||
if (systemSettings.SolderingTemp > 850)
|
||||
systemSettings.SolderingTemp = 850;
|
||||
if (systemSettings.SolderingTemp < 120)
|
||||
systemSettings.SolderingTemp = 120;
|
||||
if (systemSettings.SolderingTemp < 60)
|
||||
systemSettings.SolderingTemp = 60;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (systemSettings.SolderingTemp > 450)
|
||||
systemSettings.SolderingTemp = 450;
|
||||
if (systemSettings.SolderingTemp < 50)
|
||||
systemSettings.SolderingTemp = 50;
|
||||
if (systemSettings.SolderingTemp < 10)
|
||||
systemSettings.SolderingTemp = 10;
|
||||
}
|
||||
|
||||
if (xTaskGetTickCount() - lastChange > 200)
|
||||
|
||||
@@ -24,6 +24,7 @@ uint8_t OLED::fontWidth, OLED::fontHeight;
|
||||
int16_t OLED::cursor_x, OLED::cursor_y;
|
||||
uint8_t OLED::displayOffset;
|
||||
uint8_t OLED::screenBuffer[16 + (OLED_WIDTH * 2) + 10]; // The data buffer
|
||||
uint8_t OLED::secondFrameBuffer[OLED_WIDTH * 2];
|
||||
|
||||
/*Setup params for the OLED screen*/
|
||||
/*http://www.displayfuture.com/Display/datasheet/controller/SSD1307.pdf*/
|
||||
@@ -62,6 +63,27 @@ uint8_t OLED_Setup_Array[] = {
|
||||
const uint8_t REFRESH_COMMANDS[17] = { 0x80, 0xAF, 0x80, 0x21, 0x80, 0x20, 0x80,
|
||||
0x7F, 0x80, 0xC0, 0x80, 0x22, 0x80, 0x00, 0x80, 0x01, 0x40 };
|
||||
|
||||
|
||||
/*
|
||||
* Animation timing function that follows a bezier curve.
|
||||
* @param t A given percentage value [0..<100]
|
||||
* Returns a new percentage value with ease in and ease out.
|
||||
* Original floating point formula: t * t * (3.0f - 2.0f * t);
|
||||
*/
|
||||
static uint8_t easeInOutTiming(uint8_t t) {
|
||||
return t * t * (300 - 2 * t) / 10000;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the value between a and b, using a percentage value t.
|
||||
* @param a The value associated with 0%
|
||||
* @param b The value associated with 100%
|
||||
* @param t The percentage [0..<100]
|
||||
*/
|
||||
static uint8_t lerp(uint8_t a, uint8_t b, uint8_t t) {
|
||||
return a + t * (b - a) / 100;
|
||||
}
|
||||
|
||||
void OLED::initialize() {
|
||||
cursor_x = cursor_y = 0;
|
||||
currentFont = USER_FONT_12;
|
||||
@@ -85,6 +107,17 @@ void OLED::initialize() {
|
||||
sizeof(OLED_Setup_Array));
|
||||
}
|
||||
|
||||
void OLED::setFramebuffer(uint8_t *buffer) {
|
||||
if (buffer == NULL) {
|
||||
firstStripPtr = &screenBuffer[FRAMEBUFFER_START];
|
||||
secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH];
|
||||
return;
|
||||
}
|
||||
|
||||
firstStripPtr = &buffer[0];
|
||||
secondStripPtr = &buffer[OLED_WIDTH];
|
||||
}
|
||||
|
||||
/*
|
||||
* Prints a char to the screen.
|
||||
* UTF font handling is done using the two input chars.
|
||||
@@ -125,6 +158,62 @@ void OLED::drawScrollIndicator(uint8_t y, uint8_t height) {
|
||||
fillArea(OLED_WIDTH - 1, 8, 1, 8, column.strips[1]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Plays a transition animation between two framebuffers.
|
||||
* @param forwardNavigation Direction of the navigation animation.
|
||||
*
|
||||
* If forward is true, this displays a forward navigation to the second framebuffer contents.
|
||||
* Otherwise a rewinding navigation animation is shown to the second framebuffer contents.
|
||||
*/
|
||||
void OLED::transitionSecondaryFramebuffer(bool forwardNavigation) {
|
||||
uint8_t *firstBackStripPtr = &secondFrameBuffer[0];
|
||||
uint8_t *secondBackStripPtr = &secondFrameBuffer[OLED_WIDTH];
|
||||
|
||||
uint32_t totalDuration = 50; // 500ms
|
||||
uint32_t duration = 0;
|
||||
uint32_t start = xTaskGetTickCount();
|
||||
uint8_t offset = 0;
|
||||
|
||||
while (duration <= totalDuration) {
|
||||
duration = xTaskGetTickCount() - start;
|
||||
uint8_t progress = duration * 100 / totalDuration;
|
||||
progress = easeInOutTiming(progress);
|
||||
progress = lerp(0, OLED_WIDTH, progress);
|
||||
if (progress > OLED_WIDTH) {
|
||||
progress = OLED_WIDTH;
|
||||
}
|
||||
|
||||
// When forward, current contents move to the left out.
|
||||
// Otherwise the contents move to the right out.
|
||||
uint8_t oldStart = forwardNavigation ? 0 : progress;
|
||||
uint8_t oldPrevious = forwardNavigation ? progress - offset : offset;
|
||||
|
||||
// Content from the second framebuffer moves in from the right (forward)
|
||||
// or from the left (not forward).
|
||||
uint8_t newStart = forwardNavigation ? OLED_WIDTH - progress : 0;
|
||||
uint8_t newEnd = forwardNavigation ? 0 : OLED_WIDTH - progress;
|
||||
|
||||
offset = progress;
|
||||
|
||||
memmove(&firstStripPtr[oldStart], &firstStripPtr[oldPrevious], OLED_WIDTH - progress);
|
||||
memmove(&secondStripPtr[oldStart], &secondStripPtr[oldPrevious], OLED_WIDTH - progress);
|
||||
|
||||
memmove(&firstStripPtr[newStart], &firstBackStripPtr[newEnd], progress);
|
||||
memmove(&secondStripPtr[newStart], &secondBackStripPtr[newEnd], progress);
|
||||
|
||||
refresh();
|
||||
osDelay(40);
|
||||
}
|
||||
}
|
||||
|
||||
void OLED::useSecondaryFramebuffer(bool useSecondary) {
|
||||
if (useSecondary) {
|
||||
setFramebuffer(secondFrameBuffer);
|
||||
} else {
|
||||
setFramebuffer(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void OLED::setRotation(bool leftHanded) {
|
||||
#ifdef MODEL_TS80
|
||||
leftHanded = !leftHanded;
|
||||
|
||||
@@ -101,10 +101,11 @@ void resetSettings() {
|
||||
systemSettings.descriptionScrollSpeed = DESCRIPTION_SCROLL_SPEED; // default to slow
|
||||
systemSettings.powerLimitEnable = POWER_LIMIT_ENABLE; // Default to no power limit
|
||||
systemSettings.CalibrationOffset = CALIBRATION_OFFSET; // the adc offset in uV
|
||||
systemSettings.pidPowerLimit = PID_POWER_LIMIT; // Sets the max pwm power limit
|
||||
systemSettings.powerLimit = POWER_LIMIT; // 30 watts default limit
|
||||
systemSettings.ReverseButtonTempChangeEnabled = REVERSE_BUTTON_TEMP_CHANGE; //
|
||||
systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; //
|
||||
systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; //
|
||||
systemSettings.KeepAwakePulse= POWER_PULSE_DEFAULT;
|
||||
systemSettings.TipGain = TIP_GAIN;
|
||||
saveSettings(); // Save defaults
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
* This was bought to my attention by <Kuba Sztandera>
|
||||
*/
|
||||
|
||||
#define op_amp_gain_stage (1+(OP_AMP_Rf/OP_AMP_Rin))
|
||||
|
||||
uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) {
|
||||
// This takes the raw ADC samples, converts these to uV
|
||||
// Then divides this down by the gain to convert to the uV on the input to the op-amp (A+B terminals)
|
||||
@@ -39,7 +39,7 @@ uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) {
|
||||
|
||||
uint32_t valueuV = rawInputmVX10 * 100; // shift into uV
|
||||
//Now to divide this down by the gain
|
||||
valueuV = (valueuV) / op_amp_gain_stage;
|
||||
valueuV = (valueuV) / OP_AMP_GAIN_STAGE;
|
||||
//Remove uV tipOffset
|
||||
if (valueuV >= systemSettings.CalibrationOffset)
|
||||
valueuV -= systemSettings.CalibrationOffset;
|
||||
@@ -73,17 +73,19 @@ int32_t LinearInterpolate(int32_t x1, int32_t y1, int32_t x2, int32_t y2,
|
||||
uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) {
|
||||
//based on new measurements, tip is quite linear
|
||||
//
|
||||
tipuVDelta *= TIP_GAIN;
|
||||
tipuVDelta /= 10000;
|
||||
tipuVDelta *= 10;
|
||||
tipuVDelta /= systemSettings.TipGain;
|
||||
|
||||
#ifdef MODEL_TS80
|
||||
tipuVDelta /= OP_AMP_GAIN_STAGE_TS100 / OP_AMP_GAIN_STAGE_TS80;
|
||||
#endif
|
||||
|
||||
return tipuVDelta;
|
||||
}
|
||||
|
||||
#ifdef ENABLED_FAHRENHEIT_SUPPORT
|
||||
uint32_t TipThermoModel::convertuVToDegF(uint32_t tipuVDelta) {
|
||||
tipuVDelta *= TIP_GAIN;
|
||||
tipuVDelta /= 1000;
|
||||
return ((tipuVDelta * 9) / 50) + 32;
|
||||
//(Y °C × 9/5) + 32 =Y°F
|
||||
return convertCtoF(convertuVToDegC(tipuVDelta));
|
||||
}
|
||||
|
||||
uint32_t TipThermoModel::convertCtoF(uint32_t degC) {
|
||||
|
||||
@@ -18,11 +18,11 @@ extern uint32_t lastButtonTime;
|
||||
void gui_Menu(const menuitem *menu);
|
||||
|
||||
#ifdef MODEL_TS100
|
||||
static void settings_setInputVRange(void);
|
||||
static void settings_displayInputVRange(void);
|
||||
static void settings_setInputVRange(void);
|
||||
static void settings_displayInputVRange(void);
|
||||
#else
|
||||
static void settings_setInputPRange(void);
|
||||
static void settings_displayInputPRange(void);
|
||||
static void settings_setInputPRange(void);
|
||||
static void settings_displayInputPRange(void);
|
||||
#endif
|
||||
static void settings_setSleepTemp(void);
|
||||
static void settings_displaySleepTemp(void);
|
||||
@@ -60,6 +60,8 @@ static void settings_setResetSettings(void);
|
||||
static void settings_displayResetSettings(void);
|
||||
static void settings_setCalibrate(void);
|
||||
static void settings_displayCalibrate(void);
|
||||
static void settings_setTipGain(void);
|
||||
static void settings_displayTipGain(void);
|
||||
static void settings_setCalibrateVIN(void);
|
||||
static void settings_displayCalibrateVIN(void);
|
||||
static void settings_displayReverseButtonTempChangeEnabled(void);
|
||||
@@ -68,6 +70,8 @@ static void settings_displayTempChangeShortStep(void);
|
||||
static void settings_setTempChangeShortStep(void);
|
||||
static void settings_displayTempChangeLongStep(void);
|
||||
static void settings_setTempChangeLongStep(void);
|
||||
static void settings_displayPowerPulse(void);
|
||||
static void settings_setPowerPulse(void);
|
||||
|
||||
// Menu functions
|
||||
static void settings_displaySolderingMenu(void);
|
||||
@@ -116,14 +120,14 @@ static void settings_enterAdvancedMenu(void);
|
||||
*
|
||||
*/
|
||||
const menuitem rootSettingsMenu[] {
|
||||
/*
|
||||
* Power Source
|
||||
* Soldering Menu
|
||||
* Power Saving Menu
|
||||
* UI Menu
|
||||
* Advanced Menu
|
||||
* Exit
|
||||
*/
|
||||
/*
|
||||
* Power Source
|
||||
* Soldering Menu
|
||||
* Power Saving Menu
|
||||
* UI Menu
|
||||
* Advanced Menu
|
||||
* Exit
|
||||
*/
|
||||
#ifdef MODEL_TS100
|
||||
{ (const char*) SettingsDescriptions[0], { settings_setInputVRange }, {
|
||||
settings_displayInputVRange } }, /*Voltage input*/
|
||||
@@ -157,9 +161,9 @@ const menuitem solderingMenu[] = {
|
||||
{ (const char*) SettingsDescriptions[10], { settings_setAutomaticStartMode }, {
|
||||
settings_displayAutomaticStartMode } }, /*Auto start*/
|
||||
{ (const char*) SettingsDescriptions[24], { settings_setTempChangeShortStep }, {
|
||||
settings_displayTempChangeShortStep } }, /*Temp change short step*/
|
||||
settings_displayTempChangeShortStep } }, /*Temp change short step*/
|
||||
{ (const char*) SettingsDescriptions[25], { settings_setTempChangeLongStep }, {
|
||||
settings_displayTempChangeLongStep } }, /*Temp change long step*/
|
||||
settings_displayTempChangeLongStep } }, /*Temp change long step*/
|
||||
{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE
|
||||
};
|
||||
const menuitem UIMenu[] = {
|
||||
@@ -172,18 +176,21 @@ const menuitem UIMenu[] = {
|
||||
* Reverse Temp change buttons + -
|
||||
*/
|
||||
#ifdef ENABLED_FAHRENHEIT_SUPPORT
|
||||
{ (const char*) SettingsDescriptions[5], { settings_setTempF }, {
|
||||
settings_displayTempF } }, /* Temperature units*/
|
||||
{ (const char*) SettingsDescriptions[5], { settings_setTempF }, {
|
||||
settings_displayTempF } }, /* Temperature units*/
|
||||
#endif
|
||||
{ (const char*) SettingsDescriptions[7], { settings_setDisplayRotation }, {
|
||||
settings_displayDisplayRotation } }, /*Display Rotation*/
|
||||
{ (const char*) SettingsDescriptions[11], { settings_setCoolingBlinkEnabled }, {
|
||||
settings_displayCoolingBlinkEnabled } }, /*Cooling blink warning*/
|
||||
{ (const char*) SettingsDescriptions[16], { settings_setScrollSpeed }, {
|
||||
settings_displayScrollSpeed } }, /*Scroll Speed for descriptions*/
|
||||
{ (const char*) SettingsDescriptions[23], { settings_setReverseButtonTempChangeEnabled }, {
|
||||
settings_displayReverseButtonTempChangeEnabled } }, /* Reverse Temp change buttons + - */
|
||||
{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE
|
||||
{ (const char*) SettingsDescriptions[7],
|
||||
{ settings_setDisplayRotation }, {
|
||||
settings_displayDisplayRotation } }, /*Display Rotation*/
|
||||
{ (const char*) SettingsDescriptions[11], {
|
||||
settings_setCoolingBlinkEnabled }, {
|
||||
settings_displayCoolingBlinkEnabled } }, /*Cooling blink warning*/
|
||||
{ (const char*) SettingsDescriptions[16], { settings_setScrollSpeed }, {
|
||||
settings_displayScrollSpeed } }, /*Scroll Speed for descriptions*/
|
||||
{ (const char*) SettingsDescriptions[23], {
|
||||
settings_setReverseButtonTempChangeEnabled }, {
|
||||
settings_displayReverseButtonTempChangeEnabled } }, /* Reverse Temp change buttons + - */
|
||||
{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE
|
||||
};
|
||||
const menuitem PowerMenu[] = {
|
||||
/*
|
||||
@@ -212,6 +219,7 @@ const menuitem advancedMenu[] = {
|
||||
* Calibrate Temperature
|
||||
* Calibrate Input V
|
||||
* Reset Settings
|
||||
* Power Pulse
|
||||
*/
|
||||
{ (const char*) SettingsDescriptions[21], { settings_setPowerLimitEnable }, {
|
||||
settings_displayPowerLimitEnable } }, /*Power limit enable*/
|
||||
@@ -228,6 +236,10 @@ const menuitem advancedMenu[] = {
|
||||
settings_displayCalibrate } }, /*Calibrate tip*/
|
||||
{ (const char*) SettingsDescriptions[14], { settings_setCalibrateVIN }, {
|
||||
settings_displayCalibrateVIN } }, /*Voltage input cal*/
|
||||
{ (const char*) SettingsDescriptions[26], { settings_setPowerPulse }, {
|
||||
settings_displayPowerPulse } }, /*Power Pulse adjustment */
|
||||
{ (const char*) SettingsDescriptions[27], { settings_setTipGain }, {
|
||||
settings_displayTipGain } }, /*TipGain*/
|
||||
{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
@@ -365,14 +377,13 @@ static void settings_setSleepTemp(void) {
|
||||
if (systemSettings.temperatureInF) {
|
||||
systemSettings.SleepTemp += 20;
|
||||
if (systemSettings.SleepTemp > 580)
|
||||
systemSettings.SleepTemp = 120;
|
||||
}
|
||||
else
|
||||
systemSettings.SleepTemp = 60;
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
systemSettings.SleepTemp += 10;
|
||||
if (systemSettings.SleepTemp > 300)
|
||||
systemSettings.SleepTemp = 50;
|
||||
systemSettings.SleepTemp = 10;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -487,12 +498,12 @@ static void settings_displayAdvancedIDLEScreens(void) {
|
||||
}
|
||||
|
||||
static void settings_setPowerLimitEnable(void) {
|
||||
systemSettings.powerLimitEnable = !systemSettings.powerLimitEnable;
|
||||
systemSettings.powerLimitEnable = !systemSettings.powerLimitEnable;
|
||||
}
|
||||
|
||||
static void settings_displayPowerLimitEnable(void) {
|
||||
printShortDescription(21, 7);
|
||||
OLED::drawCheckbox(systemSettings.powerLimitEnable);
|
||||
printShortDescription(21, 7);
|
||||
OLED::drawCheckbox(systemSettings.powerLimitEnable);
|
||||
}
|
||||
|
||||
static void settings_setPowerLimit(void) {
|
||||
@@ -503,9 +514,9 @@ static void settings_setPowerLimit(void) {
|
||||
}
|
||||
|
||||
static void settings_displayPowerLimit(void) {
|
||||
printShortDescription(22, 5);
|
||||
OLED::printNumber(systemSettings.powerLimit, 2);
|
||||
OLED::print(SymbolWatts);
|
||||
printShortDescription(22, 5);
|
||||
OLED::printNumber(systemSettings.powerLimit, 2);
|
||||
OLED::print(SymbolWatts);
|
||||
}
|
||||
|
||||
static void settings_setScrollSpeed(void) {
|
||||
@@ -575,7 +586,7 @@ static void settings_setBoostTemp(void) {
|
||||
if (systemSettings.BoostTemp > 850) {
|
||||
systemSettings.BoostTemp = 480; // loop back at 250
|
||||
}
|
||||
} else
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
systemSettings.BoostTemp += 10; // Go up 10C at a time
|
||||
@@ -745,47 +756,112 @@ static void settings_setCalibrateVIN(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static void settings_setReverseButtonTempChangeEnabled(void) {
|
||||
systemSettings.ReverseButtonTempChangeEnabled = !systemSettings.ReverseButtonTempChangeEnabled;
|
||||
static void settings_setTipGain(void) {
|
||||
OLED::setFont(0);
|
||||
OLED::clearScreen();
|
||||
|
||||
for (;;) {
|
||||
OLED::setCursor(0, 0);
|
||||
OLED::printNumber(systemSettings.TipGain / 10, 2);
|
||||
OLED::print(SymbolDot);
|
||||
OLED::printNumber(systemSettings.TipGain % 10, 1);
|
||||
|
||||
ButtonState buttons = getButtonState();
|
||||
switch (buttons) {
|
||||
case BUTTON_F_SHORT:
|
||||
systemSettings.TipGain -= 1;
|
||||
break;
|
||||
|
||||
case BUTTON_B_SHORT:
|
||||
systemSettings.TipGain += 1;
|
||||
break;
|
||||
|
||||
case BUTTON_BOTH:
|
||||
case BUTTON_F_LONG:
|
||||
case BUTTON_B_LONG:
|
||||
saveSettings();
|
||||
return;
|
||||
break;
|
||||
case BUTTON_NONE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
OLED::refresh();
|
||||
osDelay(40);
|
||||
|
||||
// Cap to sensible values
|
||||
if (systemSettings.TipGain < 150) {
|
||||
systemSettings.TipGain = 150;
|
||||
} else if (systemSettings.TipGain > 300) {
|
||||
systemSettings.TipGain = 300;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void settings_displayReverseButtonTempChangeEnabled(void){
|
||||
printShortDescription(23, 7);
|
||||
OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled);
|
||||
static void settings_displayTipGain(void) {
|
||||
printShortDescription(27, 5);
|
||||
}
|
||||
|
||||
static void settings_setReverseButtonTempChangeEnabled(void) {
|
||||
systemSettings.ReverseButtonTempChangeEnabled =
|
||||
!systemSettings.ReverseButtonTempChangeEnabled;
|
||||
}
|
||||
|
||||
static void settings_displayReverseButtonTempChangeEnabled(void) {
|
||||
printShortDescription(23, 7);
|
||||
OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled);
|
||||
}
|
||||
|
||||
static void settings_setTempChangeShortStep(void) {
|
||||
systemSettings.TempChangeShortStep += TEMP_CHANGE_SHORT_STEP;
|
||||
if (systemSettings.TempChangeShortStep > TEMP_CHANGE_SHORT_STEP_MAX) {
|
||||
systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // loop back at TEMP_CHANGE_SHORT_STEP_MAX
|
||||
}
|
||||
systemSettings.TempChangeShortStep += TEMP_CHANGE_SHORT_STEP;
|
||||
if (systemSettings.TempChangeShortStep > TEMP_CHANGE_SHORT_STEP_MAX) {
|
||||
systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // loop back at TEMP_CHANGE_SHORT_STEP_MAX
|
||||
}
|
||||
}
|
||||
static void settings_displayTempChangeShortStep(void) {
|
||||
printShortDescription(24, 5);
|
||||
OLED::printNumber(systemSettings.TempChangeShortStep, 3);
|
||||
printShortDescription(24, 5);
|
||||
OLED::printNumber(systemSettings.TempChangeShortStep, 3);
|
||||
}
|
||||
|
||||
static void settings_setTempChangeLongStep(void) {
|
||||
systemSettings.TempChangeLongStep += TEMP_CHANGE_LONG_STEP;
|
||||
if (systemSettings.TempChangeLongStep > TEMP_CHANGE_LONG_STEP_MAX) {
|
||||
systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // loop back at TEMP_CHANGE_LONG_STEP_MAX
|
||||
}
|
||||
systemSettings.TempChangeLongStep += TEMP_CHANGE_LONG_STEP;
|
||||
if (systemSettings.TempChangeLongStep > TEMP_CHANGE_LONG_STEP_MAX) {
|
||||
systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // loop back at TEMP_CHANGE_LONG_STEP_MAX
|
||||
}
|
||||
}
|
||||
static void settings_displayTempChangeLongStep(void) {
|
||||
printShortDescription(25, 5);
|
||||
OLED::printNumber(systemSettings.TempChangeLongStep, 3);
|
||||
printShortDescription(25, 5);
|
||||
OLED::printNumber(systemSettings.TempChangeLongStep, 3);
|
||||
}
|
||||
|
||||
static void settings_setPowerPulse(void) {
|
||||
systemSettings.KeepAwakePulse += POWER_PULSE_INCREMENT;
|
||||
systemSettings.KeepAwakePulse %= POWER_PULSE_MAX;
|
||||
|
||||
}
|
||||
static void settings_displayPowerPulse(void) {
|
||||
printShortDescription(26, 5);
|
||||
if (systemSettings.KeepAwakePulse) {
|
||||
OLED::printNumber(systemSettings.KeepAwakePulse / 10, 1);
|
||||
OLED::print(SymbolDot);
|
||||
OLED::printNumber(systemSettings.KeepAwakePulse % 10, 1);
|
||||
} else {
|
||||
OLED::drawCheckbox(false);
|
||||
}
|
||||
|
||||
}
|
||||
static void displayMenu(size_t index) {
|
||||
// Call into the menu
|
||||
// Call into the menu
|
||||
OLED::setFont(1);
|
||||
OLED::setCursor(0, 0);
|
||||
// Draw title
|
||||
// Draw title
|
||||
OLED::print(SettingsMenuEntries[index]);
|
||||
// Draw symbol
|
||||
// 16 pixel wide image
|
||||
// 2 pixel wide scrolling indicator
|
||||
OLED::drawArea(96 - 16 - 2, 0, 16, 16, (&SettingsMenuIcons[(16 * 2) * index]));
|
||||
// Draw symbol
|
||||
// 16 pixel wide image
|
||||
// 2 pixel wide scrolling indicator
|
||||
OLED::drawArea(96 - 16 - 2, 0, 16, 16,
|
||||
(&SettingsMenuIcons[(16 * 2) * index]));
|
||||
}
|
||||
|
||||
static void settings_displayCalibrateVIN(void) {
|
||||
@@ -817,7 +893,7 @@ static void settings_enterAdvancedMenu(void) {
|
||||
}
|
||||
|
||||
void gui_Menu(const menuitem *menu) {
|
||||
// Draw the settings menu and provide iteration support etc
|
||||
// Draw the settings menu and provide iteration support etc
|
||||
uint8_t currentScreen = 0;
|
||||
uint32_t autoRepeatTimer = 0;
|
||||
uint8_t autoRepeatAcceleration = 0;
|
||||
@@ -826,12 +902,29 @@ void gui_Menu(const menuitem *menu) {
|
||||
int16_t lastOffset = -1;
|
||||
bool lcdRefresh = true;
|
||||
ButtonState lastButtonState = BUTTON_NONE;
|
||||
static bool enterGUIMenu = true;
|
||||
enterGUIMenu = true;
|
||||
uint8_t scrollContentSize = 0;
|
||||
|
||||
|
||||
for (uint8_t i = 0; menu[i].draw.func != NULL; i++) {
|
||||
scrollContentSize += 1;
|
||||
}
|
||||
|
||||
// Animated menu opening.
|
||||
if (menu[currentScreen].draw.func != NULL) {
|
||||
// This menu is drawn in a secondary framebuffer.
|
||||
// Then we play a transition from the current primary
|
||||
// framebuffer to the new buffer.
|
||||
// The extra buffer is discarded at the end of the transition.
|
||||
OLED::useSecondaryFramebuffer(true);
|
||||
OLED::setFont(0);
|
||||
OLED::setCursor(0, 0);
|
||||
OLED::clearScreen();
|
||||
menu[currentScreen].draw.func();
|
||||
OLED::useSecondaryFramebuffer(false);
|
||||
OLED::transitionSecondaryFramebuffer(true);
|
||||
}
|
||||
|
||||
while ((menu[currentScreen].draw.func != NULL) && earlyExit == false) {
|
||||
OLED::setFont(0);
|
||||
OLED::setCursor(0, 0);
|
||||
@@ -857,7 +950,7 @@ void gui_Menu(const menuitem *menu) {
|
||||
((xTaskGetTickCount() - descriptionStart)
|
||||
/ (systemSettings.descriptionScrollSpeed == 1 ?
|
||||
1 : 2));
|
||||
descriptionOffset %= descriptionWidth; // Roll around at the end
|
||||
descriptionOffset %= descriptionWidth; // Roll around at the end
|
||||
if (lastOffset != descriptionOffset) {
|
||||
OLED::clearScreen();
|
||||
OLED::setCursor((OLED_WIDTH - descriptionOffset), 0);
|
||||
@@ -882,10 +975,23 @@ void gui_Menu(const menuitem *menu) {
|
||||
case BUTTON_F_SHORT:
|
||||
// increment
|
||||
if (descriptionStart == 0) {
|
||||
if (menu[currentScreen].incrementHandler.func != NULL)
|
||||
if (menu[currentScreen].incrementHandler.func != NULL) {
|
||||
enterGUIMenu = false;
|
||||
menu[currentScreen].incrementHandler.func();
|
||||
else
|
||||
|
||||
if (enterGUIMenu) {
|
||||
OLED::useSecondaryFramebuffer(true);
|
||||
OLED::setFont(0);
|
||||
OLED::setCursor(0, 0);
|
||||
OLED::clearScreen();
|
||||
menu[currentScreen].draw.func();
|
||||
OLED::useSecondaryFramebuffer(false);
|
||||
OLED::transitionSecondaryFramebuffer(false);
|
||||
}
|
||||
enterGUIMenu = true;
|
||||
} else {
|
||||
earlyExit = true;
|
||||
}
|
||||
} else
|
||||
descriptionStart = 0;
|
||||
break;
|
||||
@@ -931,7 +1037,7 @@ void gui_Menu(const menuitem *menu) {
|
||||
osDelay(40);
|
||||
lcdRefresh = false;
|
||||
}
|
||||
if ((xTaskGetTickCount() - lastButtonTime) > (1000 * 30)) {
|
||||
if ((xTaskGetTickCount() - lastButtonTime) > (100 * 30)) {
|
||||
// If user has not pressed any buttons in 30 seconds, exit back a menu layer
|
||||
// This will trickle the user back to the main screen eventually
|
||||
earlyExit = true;
|
||||
|
||||
@@ -36,16 +36,13 @@ uint32_t MOVTaskBuffer[MOVTaskStackSize];
|
||||
osStaticThreadDef_t MOVTaskControlBlock;
|
||||
|
||||
static TaskHandle_t pidTaskNotification = NULL;
|
||||
|
||||
static TickType_t powerPulseRate = 1000;
|
||||
static TickType_t powerPulseDuration = 50;
|
||||
void startGUITask(void const *argument);
|
||||
void startPIDTask(void const *argument);
|
||||
void startMOVTask(void const *argument);
|
||||
// End FreeRTOS
|
||||
|
||||
static const int maxPowerIdleTicks = 1000;
|
||||
static const int powerPulseTicks = 50;
|
||||
static const int x10PowerPulseWatts = 3;
|
||||
|
||||
// Main sets up the hardware then hands over to the FreeRTOS kernel
|
||||
int main(void) {
|
||||
/* Reset of all peripherals, Initializes the Flash interface and the Systick.
|
||||
@@ -113,14 +110,9 @@ void startPIDTask(void const *argument __unused) {
|
||||
* control PWM.
|
||||
*/
|
||||
setTipX10Watts(0); // disable the output driver if the output is set to be off
|
||||
TickType_t lastPowerPulseStart = 0;
|
||||
TickType_t lastPowerPulseEnd = 0;
|
||||
|
||||
#ifdef MODEL_TS80
|
||||
//Set power management code to the tip resistance in ohms * 10
|
||||
|
||||
TickType_t lastPowerPulse = 0;
|
||||
#else
|
||||
|
||||
#endif
|
||||
history<int32_t, PID_TIM_HZ> tempError = { { 0 }, 0, 0 };
|
||||
currentTempTargetDegC = 0; // Force start with no output (off). If in sleep / soldering this will
|
||||
// be over-ridden rapidly
|
||||
@@ -183,18 +175,23 @@ void startPIDTask(void const *argument __unused) {
|
||||
// Unfortunately, our temp signal is too noisy to really help.
|
||||
|
||||
}
|
||||
#ifdef MODEL_TS80
|
||||
//If its a TS80, we want to have the option of using an occasional pulse to keep the power bank on
|
||||
if (((xTaskGetTickCount() - lastPowerPulse) > maxPowerIdleTicks)
|
||||
&& (x10WattsOut < x10PowerPulseWatts)) {
|
||||
x10WattsOut = x10PowerPulseWatts;
|
||||
//If the user turns on the option of using an occasional pulse to keep the power bank on
|
||||
if (systemSettings.KeepAwakePulse) {
|
||||
|
||||
if (xTaskGetTickCount() - lastPowerPulseStart
|
||||
> powerPulseRate) {
|
||||
lastPowerPulseStart = xTaskGetTickCount();
|
||||
lastPowerPulseEnd = lastPowerPulseStart
|
||||
+ powerPulseDuration;
|
||||
}
|
||||
|
||||
//If current PID is less than the pulse level, check if we want to constrain to the pulse as the floor
|
||||
if (x10WattsOut < systemSettings.KeepAwakePulse
|
||||
&& xTaskGetTickCount() < lastPowerPulseEnd) {
|
||||
x10WattsOut = systemSettings.KeepAwakePulse;
|
||||
}
|
||||
}
|
||||
if (((xTaskGetTickCount() - lastPowerPulse)
|
||||
> (maxPowerIdleTicks + powerPulseTicks))
|
||||
&& (x10WattsOut >= x10PowerPulseWatts)) {
|
||||
lastPowerPulse = xTaskGetTickCount();
|
||||
}
|
||||
#endif
|
||||
|
||||
//Secondary safety check to forcefully disable header when within ADC noise of top of ADC
|
||||
if (getTipRawTemp(0) > (0x7FFF - 150)) {
|
||||
x10WattsOut = 0;
|
||||
@@ -263,8 +260,7 @@ void startMOVTask(void const *argument __unused) {
|
||||
datax[currentPointer] = (int32_t) tx;
|
||||
datay[currentPointer] = (int32_t) ty;
|
||||
dataz[currentPointer] = (int32_t) tz;
|
||||
if (!accelInit)
|
||||
{
|
||||
if (!accelInit) {
|
||||
for (uint8_t i = currentPointer + 1; i < MOVFilter; i++) {
|
||||
datax[i] = (int32_t) tx;
|
||||
datay[i] = (int32_t) ty;
|
||||
@@ -302,21 +298,17 @@ void startMOVTask(void const *argument __unused) {
|
||||
}
|
||||
}
|
||||
|
||||
#define FLASH_LOGOADDR \
|
||||
(0x8000000 | 0xF800) /*second last page of flash set aside for logo image*/
|
||||
// Second last page of flash set aside for logo image.
|
||||
#define FLASH_LOGOADDR (0x8000000 | 0xF800)
|
||||
|
||||
/* The header value is (0xAA,0x55,0xF0,0x0D) but is stored in little endian 16
|
||||
* bits words on the flash */
|
||||
const uint8_t LOGO_HEADER_VALUE[] = { 0x55, 0xAA, 0x0D, 0xF0 };
|
||||
// Logo header signature.
|
||||
#define LOGO_HEADER_VALUE 0xF00DAA55
|
||||
|
||||
bool showBootLogoIfavailable() {
|
||||
uint8_t *header = (uint8_t*) (FLASH_LOGOADDR);
|
||||
|
||||
// check if the header is correct.
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (header[i] != LOGO_HEADER_VALUE[i]) {
|
||||
return false;
|
||||
}
|
||||
// Do not show logo data if signature is not found.
|
||||
if (LOGO_HEADER_VALUE
|
||||
!= *(reinterpret_cast<const uint32_t*>(FLASH_LOGOADDR))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t*) (FLASH_LOGOADDR + 4));
|
||||
@@ -349,12 +341,10 @@ void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c __unused) {
|
||||
FRToSI2C::CpltCallback();
|
||||
}
|
||||
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c __unused) {
|
||||
asm("bkpt");
|
||||
|
||||
FRToSI2C::CpltCallback();
|
||||
}
|
||||
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c __unused) {
|
||||
//asm("bkpt");
|
||||
|
||||
FRToSI2C::CpltCallback();
|
||||
}
|
||||
@@ -363,7 +353,7 @@ void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c __unused) {
|
||||
}
|
||||
void vApplicationStackOverflowHook(xTaskHandle *pxTask __unused,
|
||||
signed portCHAR *pcTaskName __unused) {
|
||||
asm("bkpt");
|
||||
// We dont have a good way to handle a stack overflow at this point in time
|
||||
|
||||
// We dont have a good way to handle a stack overflow at this point in time
|
||||
NVIC_SystemReset();
|
||||
}
|
||||
|
||||
@@ -54,6 +54,14 @@
|
||||
#define TEMP_CHANGE_SHORT_STEP_MAX 50 // Temp change short step MAX value
|
||||
#define TEMP_CHANGE_LONG_STEP_MAX 100 // Temp change long step MAX value
|
||||
|
||||
/* Power pulse for keeping power banks awake*/
|
||||
#define POWER_PULSE_INCREMENT 1
|
||||
#define POWER_PULSE_MAX 50 // x10 max watts
|
||||
#ifdef MODEL_TS100
|
||||
#define POWER_PULSE_DEFAULT 0
|
||||
#else
|
||||
#define POWER_PULSE_DEFAULT 5
|
||||
#endif
|
||||
|
||||
/**
|
||||
* OLED Orientation Sensitivity on Automatic mode!
|
||||
@@ -74,21 +82,26 @@
|
||||
#define DESCRIPTION_SCROLL_SPEED 0 // 0: Slow 1: Fast - default to slow
|
||||
#define POWER_LIMIT_ENABLE 0 // 0: Disable 1: Enable - Default disabled power limit
|
||||
|
||||
#define TIP_GAIN 210 // 21 uV/C * 10, uV per deg C constant of the tip, Tip uV * 10 / coeff = tip temp
|
||||
|
||||
#define OP_AMP_Rf_TS100 750*1000 // 750 Kilo-ohms -> From schematic, R1
|
||||
#define OP_AMP_Rin_TS100 2370 // 2.37 Kilo-ohms -> From schematic, R2
|
||||
|
||||
#define OP_AMP_GAIN_STAGE_TS100 (1+(OP_AMP_Rf_TS100/OP_AMP_Rin_TS100))
|
||||
|
||||
#define OP_AMP_Rf_TS80 180*1000 // 180 Kilo-ohms -> From schematic, R6
|
||||
#define OP_AMP_Rin_TS80 2000 // 2.0 Kilo-ohms -> From schematic, R3
|
||||
|
||||
#define OP_AMP_GAIN_STAGE_TS80 (1+(OP_AMP_Rf_TS80/OP_AMP_Rin_TS80))
|
||||
|
||||
#ifdef MODEL_TS100
|
||||
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
||||
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
||||
#define POWER_LIMIT 30 // 30 watts default limit
|
||||
#define MAX_POWER_LIMIT 65 //
|
||||
#define POWER_LIMIT_STEPS 5 //
|
||||
|
||||
/**
|
||||
* TIP_GAIN = TIP_GAIN/1000 == uV per deg C constant of the tip
|
||||
*/
|
||||
#define OP_AMP_Rf 750*1000 // 750 Kilo-ohms -> From schematic, R1
|
||||
#define OP_AMP_Rin 2370 // 2.37 Kilo-ohms -> From schematic, R2
|
||||
#define TIP_GAIN 405
|
||||
|
||||
#define POWER_LIMIT_STEPS 5 //
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
|
||||
#endif
|
||||
|
||||
#ifdef MODEL_TS80
|
||||
@@ -98,11 +111,5 @@
|
||||
#define POWER_LIMIT 24 // 24 watts default power limit
|
||||
#define MAX_POWER_LIMIT 30 //
|
||||
#define POWER_LIMIT_STEPS 2
|
||||
|
||||
/**
|
||||
* TIP_GAIN = TIP_GAIN/1000 == uV per deg C constant of the tip
|
||||
*/
|
||||
#define OP_AMP_Rf 180*1000 // 180 Kilo-ohms -> From schematic, R6
|
||||
#define OP_AMP_Rin 2000 // 2.0 Kilo-ohms -> From schematic, R3
|
||||
#define TIP_GAIN 115
|
||||
#endif
|
||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user