123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- #include <Serial.h>
- #include <TouchKey.h>
- #define TEMP_PIN 11
- #define HEATER_PIN 34
- #define LED_PREHEAT 15
- #define LED_REFLOW 16
- #define HOLDSTART_TIME 30
- #define HOLDSTOP_TIME 10
- #define SOAKING_TIME 600
- #define COOLDOWN_TEMP_ADC 255
- #define PREHEAT_START_ADC 143
- #define PREHEAT_TEMP_ADC 122
- #define PREHEAT_PWR_PWM 155
- #define REFLOW_TEMP_ADC 58
- #define REFLOW_PWR_PWM 255
- #define CUTOFF_TEMP_ADC 53
- bool updateHeaterPowerState();
- void updateKeyStates();
- int readTemp();
- bool reflowing = false;
- bool reflowComplete = false;
- int reflowStages = 0;
- int startCountdown = HOLDSTART_TIME;
- int stopcountdown = HOLDSTOP_TIME;
- int cycleCounter = 0;
- int soakingCountdown = SOAKING_TIME;
- bool blinkState = false;
- bool blinkYellow = true;
- bool blinkRed = false;
- bool fastBlinkState = false;
- bool fastblinkRed = false;
- int targetTempADC = 255;
- int targetPwrPWM = 0;
- int offset = 0;
- void setup() {
-
-
- TouchKey_begin((1 << 2) | (1 << 5));
-
- TouchKey_SetMaxHalfDelta(164);
- TouchKey_SetNoiseHalfDelta(8);
- TouchKey_SetNoiseCountLimit(10);
- TouchKey_SetFilterDelayLimit(5);
- TouchKey_SetTouchThreshold(220);
- TouchKey_SetReleaseThreshold(150);
-
- pinMode(LED_PREHEAT, OUTPUT);
- pinMode(LED_REFLOW, OUTPUT);
- digitalWrite(LED_PREHEAT, LOW);
- digitalWrite(LED_REFLOW, LOW);
-
- pinMode(TEMP_PIN, INPUT);
-
- pinMode(HEATER_PIN, OUTPUT);
- digitalWrite(HEATER_PIN, LOW);
- }
- void loop() {
-
- updateKeyStates();
-
-
- if (reflowing) {
- bool tempReached = updateHeaterPowerState();
- if (tempReached) {
-
- if (reflowStages == 1) {
-
- USBSerial_println("Preheat temperature reached. Soaking started");
- targetTempADC = PREHEAT_TEMP_ADC;
- reflowStages = 2;
- soakingCountdown = SOAKING_TIME;
- fastblinkRed = true;
- } else if (reflowStages == 3) {
-
- USBSerial_println("Reflow completed. Cooling down");
- reflowStages = 4;
- blinkYellow = false;
- blinkRed = true;
- targetTempADC = COOLDOWN_TEMP_ADC;
- targetPwrPWM = 0;
-
- }
- }
- if (reflowStages == 2) {
-
- soakingCountdown--;
- if (soakingCountdown <= 0) {
-
- USBSerial_println("Soaking time ended. Reflow started");
-
- fastblinkRed = false;
- digitalWrite(LED_REFLOW, HIGH);
-
- targetTempADC = REFLOW_TEMP_ADC;
- targetPwrPWM = REFLOW_PWR_PWM;
-
- reflowStages = 3;
- } else if (soakingCountdown % 100 == 0) {
- USBSerial_print("Soaking cycles left: ");
- USBSerial_println(soakingCountdown);
- }
- }
- delay(1);
- } else {
-
- digitalWrite(HEATER_PIN, LOW);
- blinkYellow = true;
- delay(100);
- }
-
- if (cycleCounter % 5 == 0 && fastblinkRed) {
- digitalWrite(LED_PREHEAT, LOW);
- if (fastBlinkState) {
- digitalWrite(LED_REFLOW, HIGH);
- } else {
- digitalWrite(LED_REFLOW, LOW);
- }
- fastBlinkState = !fastBlinkState;
- }
-
- if (cycleCounter % 20 == 0) {
- if (blinkYellow) {
- if (blinkState) {
- digitalWrite(LED_PREHEAT, HIGH);
- } else {
- digitalWrite(LED_PREHEAT, LOW);
- }
- } else if (blinkRed) {
- if (blinkState) {
- digitalWrite(LED_REFLOW, HIGH);
- } else {
- digitalWrite(LED_REFLOW, LOW);
- }
- }
- blinkState = !blinkState;
- }
-
-
- cycleCounter++;
- if (cycleCounter > 600) {
- cycleCounter = 0;
- }
- }
|