mirror of
https://github.com/Ralim/IronOS.git
synced 2025-02-26 07:53:55 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f3bb4c356 | ||
|
|
0ebaab5847 | ||
|
|
203a7c154b | ||
|
|
ebfe457f65 |
BIN
TS100 V2.46 Schematics V1.0.pdf
Normal file
BIN
TS100 V2.46 Schematics V1.0.pdf
Normal file
Binary file not shown.
@@ -15,6 +15,6 @@
|
|||||||
extern volatile uint16_t ADC1ConvertedValue[2];
|
extern volatile uint16_t ADC1ConvertedValue[2];
|
||||||
|
|
||||||
uint16_t Get_ADC1Value(uint8_t i);
|
uint16_t Get_ADC1Value(uint8_t i);
|
||||||
uint16_t readIronTemp(uint16_t calibration,uint8_t read);//read the iron temp in C X10
|
uint16_t readIronTemp(uint16_t calibration_temp, uint8_t read,uint16_t setPointTemp); //read the iron temp in C X10
|
||||||
uint16_t readDCVoltage();/*Get the system voltage X10*/
|
uint16_t readDCVoltage();/*Get the system voltage X10*/
|
||||||
#endif /* ANALOG_H_ */
|
#endif /* ANALOG_H_ */
|
||||||
|
|||||||
@@ -97,4 +97,70 @@ const uint8_t FONT[]={
|
|||||||
0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,/*.*/
|
0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,/*.*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const uint8_t Iron_Base[] ={
|
||||||
|
0x00,0x20,0x60,0x60,0x60,0x60,0x60,0x60,0x90,0x90,0x90,0x90,
|
||||||
|
0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
|
||||||
|
0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x60,0x60,0x60,
|
||||||
|
0x60,0x60,0x60,0x60,0x60,0x70,0xF8,0x88,0x84,0x82,0x82,0x83,
|
||||||
|
0x83,0x83,0x83,0x83,0x83,0x82,0x82,0x82,0x82,0x83,0x83,0x83,
|
||||||
|
0x83,0x83,0x83,0x82,0x82,0x82,0x82,0x82,0x86,0x84,0x84,0x84,
|
||||||
|
0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,
|
||||||
|
0x84,0x84,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,
|
||||||
|
|
||||||
|
};
|
||||||
|
//The top pixel row for left arrow / on hint
|
||||||
|
const uint8_t Iron_LeftArrow_UP[] = {
|
||||||
|
0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0xFE,0x08,0x10,0x20,0xFE,//ON
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
|
||||||
|
0x98,0xBF,0xBF,0x98,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t Iron_LeftArrow_DOWN[] = {
|
||||||
|
0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0xFE,0x08,0x10,0x20,0xFE,//ON
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
|
||||||
|
0x30,0x7E,0x7E,0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
};
|
||||||
|
//The top pixel row for both arrows /
|
||||||
|
const uint8_t Iron_BothArrows[] = {
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
|
||||||
|
0x98,0xBF,0xBF,0x98,0x88,0x00,0x00,0x00,0x00,0x88,0x98,0xBF,
|
||||||
|
0xBF,0x98,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
};
|
||||||
|
//The top pixel row for right arrow / settings hint
|
||||||
|
const uint8_t Iron_RightArrow_UP[] = {
|
||||||
|
0x00,0x8C,0x92,0x92,0x92,0x62,0x00,0xFE,0x92,0x92,0x92,0x82,//SE
|
||||||
|
0x00,0x02,0x02,0xFE,0x02,0x02,0x00,0x02,0x02,0xFE,0x02,0x02,//TT
|
||||||
|
0x00,0x00,0x82,0xFE,0x82,0x00,0x00,0xFE,0x08,0x10,0x20,0xFE,//IN
|
||||||
|
0x00,0x7C,0x82,0x82,0xA2,0x62,0x00,0x8C,0x92,0x92,0x92,0x62,//GS
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x98,0xBF,
|
||||||
|
0xBF,0x98,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
};
|
||||||
|
const uint8_t Iron_RightArrow_DOWN[] = {
|
||||||
|
0x00,0x8C,0x92,0x92,0x92,0x62,0x00,0xFE,0x92,0x92,0x92,0x82,//SE
|
||||||
|
0x00,0x02,0x02,0xFE,0x02,0x02,0x00,0x02,0x02,0xFE,0x02,0x02,//TT
|
||||||
|
0x00,0x00,0x82,0xFE,0x82,0x00,0x00,0xFE,0x08,0x10,0x20,0xFE,//IN
|
||||||
|
0x00,0x7C,0x82,0x82,0xA2,0x62,0x00,0x8C,0x92,0x92,0x92,0x62,//GS
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x7E,
|
||||||
|
0x7E,0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* FONT_H_ */
|
#endif /* FONT_H_ */
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ enum {
|
|||||||
UVLOWARN,
|
UVLOWARN,
|
||||||
THERMOMETER,
|
THERMOMETER,
|
||||||
DCINDISP,
|
DCINDISP,
|
||||||
|
TEMPCAL,
|
||||||
} operatingMode;
|
} operatingMode;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
|||||||
@@ -26,6 +26,6 @@ void OLED_DrawString(char* string, uint8_t length);
|
|||||||
void OLED_DrawChar(char c, uint8_t x);
|
void OLED_DrawChar(char c, uint8_t x);
|
||||||
void OLED_DrawTwoNumber(uint8_t in, uint8_t x);
|
void OLED_DrawTwoNumber(uint8_t in, uint8_t x);
|
||||||
void OLED_DrawThreeNumber(uint16_t in, uint8_t x);
|
void OLED_DrawThreeNumber(uint16_t in, uint8_t x);
|
||||||
|
void OLED_DrawIDLELogo();
|
||||||
#endif
|
#endif
|
||||||
/******************************** END OF FILE *********************************/
|
/******************************** END OF FILE *********************************/
|
||||||
|
|||||||
@@ -105,16 +105,30 @@ uint16_t Get_ADC1Value(uint8_t i) {
|
|||||||
}
|
}
|
||||||
//This returns the calibrated temperature reading of the iron temp
|
//This returns the calibrated temperature reading of the iron temp
|
||||||
//inputs : calibration value / wether to take a new reading or not
|
//inputs : calibration value / wether to take a new reading or not
|
||||||
uint16_t readIronTemp(uint16_t calibration_temp, uint8_t read) {
|
uint16_t readIronTemp(uint16_t calibration_temp, uint8_t read,
|
||||||
|
uint16_t setPointTemp) {
|
||||||
static uint16_t calTemp = 0;
|
static uint16_t calTemp = 0;
|
||||||
static uint16_t lastVal = 0;
|
static uint16_t lastVal = 0;
|
||||||
|
static uint16_t lastSetTemp;
|
||||||
|
if(setPointTemp!=0xFFFF)
|
||||||
|
lastSetTemp = setPointTemp;
|
||||||
if (calibration_temp != 0)
|
if (calibration_temp != 0)
|
||||||
calTemp = calibration_temp;
|
calTemp = calibration_temp;
|
||||||
|
|
||||||
if (read) {
|
if (read) {
|
||||||
lastVal = (readTipTemp() * 1000 + 806 * readSensorTemp()
|
int16_t compensation = 80 + 150 * (lastSetTemp - 1000) / 3000;
|
||||||
- calTemp * 1000) / 806;
|
int16_t tipTemp = readTipTemp();
|
||||||
|
int16_t ColdJTemp = readSensorTemp();
|
||||||
|
if (lastSetTemp == 1000)
|
||||||
|
compensation -= 10;
|
||||||
|
|
||||||
|
if (lastSetTemp != 0) {
|
||||||
|
if (tipTemp > (compensation + calTemp))
|
||||||
|
tipTemp -= compensation;
|
||||||
|
}
|
||||||
|
if (ColdJTemp > 400)
|
||||||
|
ColdJTemp = 400;
|
||||||
|
lastVal = (tipTemp * 1000 + 807 * ColdJTemp - calTemp * 1000) / 807;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,20 +24,20 @@ void setup() {
|
|||||||
RCC_Config(); //setup system clock
|
RCC_Config(); //setup system clock
|
||||||
NVIC_Config(0x4000); //this shifts the NVIC table to be offset, for the usb bootloader's size
|
NVIC_Config(0x4000); //this shifts the NVIC table to be offset, for the usb bootloader's size
|
||||||
GPIO_Config(); //setup all the GPIO pins
|
GPIO_Config(); //setup all the GPIO pins
|
||||||
Init_EXTI(); //init the EXTI inputs
|
Init_EXTI(); //Init the EXTI inputs
|
||||||
Init_Timer3(); //Used for the soldering iron tip
|
Init_Timer3(); //Used for the soldering iron tip
|
||||||
Adc_Init(); //init adc and dma
|
Adc_Init(); //Init adc and DMA
|
||||||
I2C_Configuration(); //Start the I2C hardware
|
I2C_Configuration(); //Start the I2C hardware
|
||||||
GPIO_Init_OLED(); //Init the GPIO ports for the OLED
|
GPIO_Init_OLED(); //Init the GPIO ports for the OLED
|
||||||
restoreSettings(); //Load settings
|
restoreSettings(); //Load settings
|
||||||
|
|
||||||
StartUp_Accelerometer(systemSettings.sensitivity); //start the accelerometer
|
StartUp_Accelerometer(systemSettings.sensitivity); //start the accelerometer
|
||||||
|
|
||||||
setupPID(); //init the PID values
|
setupPID(); //Init the PID values
|
||||||
readIronTemp(239, 0); //load the default calibration value
|
readIronTemp(systemSettings.tempCalibration, 0,0); //load the default calibration value
|
||||||
Init_Oled(systemSettings.flipDisplay); //init the OLED display
|
Init_Oled(systemSettings.flipDisplay); //Init the OLED display
|
||||||
|
|
||||||
OLED_DrawString("VER 1.03", 8); //1.settings version as of current
|
OLED_DrawString("VER 1.04", 8); //
|
||||||
delayMs(800); //Pause to show version number
|
delayMs(800); //Pause to show version number
|
||||||
Start_Watchdog(1000); //start the system watch dog as 1 second timeout
|
Start_Watchdog(1000); //start the system watch dog as 1 second timeout
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
* Author: Ralim <ralim@ralimtek.com>
|
* Author: Ralim <ralim@ralimtek.com>
|
||||||
*/
|
*/
|
||||||
#include "Modes.h"
|
#include "Modes.h"
|
||||||
|
uint8_t tempCalStatus = 0;
|
||||||
//This does the required processing and state changes
|
//This does the required processing and state changes
|
||||||
void ProcessUI() {
|
void ProcessUI() {
|
||||||
uint8_t Buttons = getButtons(); //read the buttons status
|
uint8_t Buttons = getButtons(); //read the buttons status
|
||||||
@@ -158,7 +159,7 @@ void ProcessUI() {
|
|||||||
case COOLING: {
|
case COOLING: {
|
||||||
setIronTimer(0); //turn off heating
|
setIronTimer(0); //turn off heating
|
||||||
//This mode warns the user the iron is still cooling down
|
//This mode warns the user the iron is still cooling down
|
||||||
uint16_t temp = readIronTemp(0, 1); //take a new reading as the heater code is not taking new readings
|
uint16_t temp = readIronTemp(0, 1, 0xFFFF); //take a new reading as the heater code is not taking new readings
|
||||||
if (temp < 400) { //if the temp is < 40C then we can go back to IDLE
|
if (temp < 400) { //if the temp is < 40C then we can go back to IDLE
|
||||||
operatingMode = STARTUP;
|
operatingMode = STARTUP;
|
||||||
} else if (Buttons & (BUT_A | BUT_B)) { //we check if the user has pushed a button to ack
|
} else if (Buttons & (BUT_A | BUT_B)) { //we check if the user has pushed a button to ack
|
||||||
@@ -177,9 +178,12 @@ void ProcessUI() {
|
|||||||
case THERMOMETER: {
|
case THERMOMETER: {
|
||||||
//This lets the user check the tip temp without heating the iron.. And eventually calibration will be added here
|
//This lets the user check the tip temp without heating the iron.. And eventually calibration will be added here
|
||||||
|
|
||||||
if ((Buttons == BUT_A) | (Buttons == BUT_B)) {
|
if (Buttons == BUT_A) {
|
||||||
//Single button press, cycle over to the DC display
|
//Single button press, cycle over to the DC display
|
||||||
operatingMode = DCINDISP;
|
operatingMode = DCINDISP;
|
||||||
|
} else if (Buttons == BUT_B) {
|
||||||
|
tempCalStatus = 0;
|
||||||
|
operatingMode = TEMPCAL;
|
||||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||||
//If the user is holding both button, exit the screen
|
//If the user is holding both button, exit the screen
|
||||||
operatingMode = STARTUP;
|
operatingMode = STARTUP;
|
||||||
@@ -190,7 +194,7 @@ void ProcessUI() {
|
|||||||
case DCINDISP: {
|
case DCINDISP: {
|
||||||
//This lets the user check the input voltage
|
//This lets the user check the input voltage
|
||||||
|
|
||||||
if ((Buttons == BUT_A) | (Buttons == BUT_B)) {
|
if (Buttons == BUT_A) {
|
||||||
//Single button press, cycle over to the temp display
|
//Single button press, cycle over to the temp display
|
||||||
operatingMode = THERMOMETER;
|
operatingMode = THERMOMETER;
|
||||||
} else if (Buttons == (BUT_A | BUT_B)) {
|
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||||
@@ -198,6 +202,28 @@ void ProcessUI() {
|
|||||||
operatingMode = STARTUP;
|
operatingMode = STARTUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TEMPCAL: {
|
||||||
|
if (Buttons == BUT_B) {
|
||||||
|
//Single button press, cycle over to the DC IN
|
||||||
|
operatingMode = THERMOMETER;
|
||||||
|
} else if (Buttons == BUT_A) {
|
||||||
|
//Try and calibrate
|
||||||
|
if (tempCalStatus == 0) {
|
||||||
|
if ((readTipTemp() < 300) && (readSensorTemp() < 300)) {
|
||||||
|
tempCalStatus = 1;
|
||||||
|
systemSettings.tempCalibration = readTipTemp();
|
||||||
|
saveSettings();
|
||||||
|
} else {
|
||||||
|
tempCalStatus = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (Buttons == (BUT_A | BUT_B)) {
|
||||||
|
//If the user is holding both button, exit the screen
|
||||||
|
operatingMode = STARTUP;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -210,6 +236,8 @@ void ProcessUI() {
|
|||||||
void drawTemp(uint16_t temp, uint8_t x) {
|
void drawTemp(uint16_t temp, uint8_t x) {
|
||||||
if (systemSettings.displayTempInF)
|
if (systemSettings.displayTempInF)
|
||||||
temp = (temp * 9 + 1600) / 5;/*Convert to F -> T*(9/5)+32*/
|
temp = (temp * 9 + 1600) / 5;/*Convert to F -> T*(9/5)+32*/
|
||||||
|
if (temp % 10 > 5)
|
||||||
|
temp += 10;//round up
|
||||||
OLED_DrawThreeNumber(temp / 10, x);
|
OLED_DrawThreeNumber(temp / 10, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +245,7 @@ void drawTemp(uint16_t temp, uint8_t x) {
|
|||||||
* Performs all the OLED drawing for the current operating mode
|
* Performs all the OLED drawing for the current operating mode
|
||||||
*/
|
*/
|
||||||
void DrawUI() {
|
void DrawUI() {
|
||||||
uint16_t temp = readIronTemp(0, 0);
|
uint16_t temp = readIronTemp(0, 0, 0xFFFF);
|
||||||
switch (operatingMode) {
|
switch (operatingMode) {
|
||||||
case STARTUP:
|
case STARTUP:
|
||||||
//We are chilling in the idle mode
|
//We are chilling in the idle mode
|
||||||
@@ -228,7 +256,8 @@ void DrawUI() {
|
|||||||
Oled_DisplayOff();
|
Oled_DisplayOff();
|
||||||
} else {
|
} else {
|
||||||
Oled_DisplayOn();
|
Oled_DisplayOn();
|
||||||
OLED_DrawString(" IDLE ", 8); //write the word IDLE
|
//OLED_DrawString(" IDLE ", 8); //write the word IDLE
|
||||||
|
OLED_DrawIDLELogo();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SOLDERING:
|
case SOLDERING:
|
||||||
@@ -336,7 +365,7 @@ void DrawUI() {
|
|||||||
OLED_DrawString("LOW VOLT", 8);
|
OLED_DrawString("LOW VOLT", 8);
|
||||||
break;
|
break;
|
||||||
case THERMOMETER:
|
case THERMOMETER:
|
||||||
temp = readIronTemp(0, 1); //Force a reading as heater is off
|
temp = readIronTemp(0, 1, 0xFFFF); //Force a reading as heater is off
|
||||||
OLED_DrawString("TEMP ", 5);//extra one to it clears the leftover 'L' from IDLE
|
OLED_DrawString("TEMP ", 5);//extra one to it clears the leftover 'L' from IDLE
|
||||||
drawTemp(temp, 5);
|
drawTemp(temp, 5);
|
||||||
break;
|
break;
|
||||||
@@ -353,6 +382,18 @@ void DrawUI() {
|
|||||||
OLED_DrawChar(' ', 7);
|
OLED_DrawChar(' ', 7);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case TEMPCAL: {
|
||||||
|
|
||||||
|
if (tempCalStatus == 0) {
|
||||||
|
OLED_DrawString("CAL TEMP", 8);
|
||||||
|
} else if (tempCalStatus == 1) {
|
||||||
|
OLED_DrawString("CAL OK ", 8);
|
||||||
|
} else if (tempCalStatus == 2) {
|
||||||
|
OLED_DrawString("CAL FAIL", 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ int8_t displayOffset = 32;
|
|||||||
/*All commands are prefixed with 0x80*/
|
/*All commands are prefixed with 0x80*/
|
||||||
u8 OLED_Setup_Array[46] = { 0x80, 0xAE,/*Display off*/
|
u8 OLED_Setup_Array[46] = { 0x80, 0xAE,/*Display off*/
|
||||||
0x80, 0xD5,/*Set display clock divide ratio / osc freq*/
|
0x80, 0xD5,/*Set display clock divide ratio / osc freq*/
|
||||||
0x80, 0x52,/**/
|
0x80, 0x52,/*Unknown*/
|
||||||
0x80, 0xA8,/*Set Multiplex Ratio*/
|
0x80, 0xA8,/*Set Multiplex Ratio*/
|
||||||
0x80, 0x0F, /*16 == max brightness,39==dimmest*/
|
0x80, 0x0F, /*16 == max brightness,39==dimmest*/
|
||||||
0x80, 0xC0,/*Set COM Scan direction*/
|
0x80, 0xC0,/*Set COM Scan direction*/
|
||||||
@@ -28,7 +28,7 @@ u8 OLED_Setup_Array[46] = { 0x80, 0xAE,/*Display off*/
|
|||||||
0x80, 0x40,/*Set Display start line to 0*/
|
0x80, 0x40,/*Set Display start line to 0*/
|
||||||
0x80, 0xA0,/*Set Segment remap to normal*/
|
0x80, 0xA0,/*Set Segment remap to normal*/
|
||||||
0x80, 0x8D,/*Unknown*/
|
0x80, 0x8D,/*Unknown*/
|
||||||
0x80, 0x14,/**/
|
0x80, 0x14,/*Unknown*/
|
||||||
0x80, 0xDA,/*Set VCOM Pins hardware config*/
|
0x80, 0xDA,/*Set VCOM Pins hardware config*/
|
||||||
0x80, 0x02,/*Combination 2*/
|
0x80, 0x02,/*Combination 2*/
|
||||||
0x80, 0x81,/*Contrast*/
|
0x80, 0x81,/*Contrast*/
|
||||||
@@ -36,7 +36,7 @@ u8 OLED_Setup_Array[46] = { 0x80, 0xAE,/*Display off*/
|
|||||||
0x80, 0xD9,/*Set pre-charge period*/
|
0x80, 0xD9,/*Set pre-charge period*/
|
||||||
0x80, 0xF1,/**/
|
0x80, 0xF1,/**/
|
||||||
0x80, 0xDB,/*Adjust VCOMH regulator ouput*/
|
0x80, 0xDB,/*Adjust VCOMH regulator ouput*/
|
||||||
0x80, 0x30,/**/
|
0x80, 0x30,/*Unknown*/
|
||||||
0x80, 0xA4,/*Enable the display GDDR*/
|
0x80, 0xA4,/*Enable the display GDDR*/
|
||||||
0x80, 0XA6,/*Normal display*/
|
0x80, 0XA6,/*Normal display*/
|
||||||
0x80, 0xAF /*Dispaly on*/
|
0x80, 0xAF /*Dispaly on*/
|
||||||
@@ -105,7 +105,7 @@ void Set_ShowPos(u8 x, u8 y) {
|
|||||||
Function:Oled_DrawArea
|
Function:Oled_DrawArea
|
||||||
Description:
|
Description:
|
||||||
Inputs:(x,y) start point, (width,height) of enclosing rect, pointer to data
|
Inputs:(x,y) start point, (width,height) of enclosing rect, pointer to data
|
||||||
Output: last byte written out
|
Output: pointer to the last byte written out
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
u8* Oled_DrawArea(u8 x0, u8 y0, u8 wide, u8 high, u8* ptr) {
|
u8* Oled_DrawArea(u8 x0, u8 y0, u8 wide, u8 high, u8* ptr) {
|
||||||
u8 m, n, y;
|
u8 m, n, y;
|
||||||
@@ -234,3 +234,23 @@ void OLED_DrawFourNumber(uint16_t in, uint8_t x) {
|
|||||||
OLED_DrawChar((in / 10) % 10, x + 2);
|
OLED_DrawChar((in / 10) % 10, x + 2);
|
||||||
OLED_DrawChar(in % 10, x + 3);
|
OLED_DrawChar(in % 10, x + 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OLED_DrawIDLELogo() {
|
||||||
|
static uint8_t drawAttempt = 0;
|
||||||
|
drawAttempt++;
|
||||||
|
if (drawAttempt & 0x80) {
|
||||||
|
if (drawAttempt & 0x08)
|
||||||
|
Oled_DrawArea(0, 0, 96, 8, (u8*) Iron_RightArrow_UP);
|
||||||
|
else
|
||||||
|
Oled_DrawArea(0, 0, 96, 8, (u8*) Iron_RightArrow_DOWN);
|
||||||
|
|
||||||
|
Oled_DrawArea(0, 8, 96, 8, (u8*) Iron_Base);
|
||||||
|
} else {
|
||||||
|
if (drawAttempt & 0x08)
|
||||||
|
Oled_DrawArea(0, 0, 96, 8, (u8*) Iron_LeftArrow_UP);
|
||||||
|
else
|
||||||
|
Oled_DrawArea(0, 0, 96, 8, (u8*) Iron_LeftArrow_DOWN);
|
||||||
|
Oled_DrawArea(0, 8, 96, 8, (u8*) Iron_Base);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
int32_t computePID(uint16_t setpoint) {
|
int32_t computePID(uint16_t setpoint) {
|
||||||
int32_t ITerm = 0;
|
int32_t ITerm = 0;
|
||||||
static int16_t lastReading = 0;
|
static int16_t lastReading = 0;
|
||||||
uint16_t currentReading = readIronTemp(0, 1); //get the current temp of the iron
|
uint16_t currentReading = readIronTemp(0, 1,setpoint); //get the current temp of the iron
|
||||||
int16_t error = (int16_t) setpoint - (int16_t) currentReading; //calculate the error term
|
int16_t error = (int16_t) setpoint - (int16_t) currentReading; //calculate the error term
|
||||||
ITerm += (pidSettings.ki * error);
|
ITerm += (pidSettings.ki * error);
|
||||||
if (ITerm > MAXPIDOUTPUT)
|
if (ITerm > MAXPIDOUTPUT)
|
||||||
@@ -34,7 +34,7 @@ int32_t computePID(uint16_t setpoint) {
|
|||||||
}
|
}
|
||||||
/*Sets up the pid values*/
|
/*Sets up the pid values*/
|
||||||
void setupPID(void) {
|
void setupPID(void) {
|
||||||
pidSettings.kp = 22;
|
pidSettings.kp = 25;
|
||||||
pidSettings.ki = 7;
|
pidSettings.ki = 7;
|
||||||
pidSettings.kd = 2;
|
pidSettings.kd = 2;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user