Boa tarde, ao utilizar o código abaixo tive os seguintes erros:
#include <max6675.h>
double DENATURE_TEMP = 94;
double ANNEALING_TEMP = 60.00;
double EXTENSION_TEMP = 72;
unsigned int DENATURE_TIME = 33000;
unsigned int ANNEALING_TIME= 33000;
unsigned int EXTENSION_TIME = 35000;
unsigned int INITIAL_DENATURE_TIME = 300000;
unsigned int FINAL_EXTENSION_TIME = 600000;
int NUM_CYCLES = 32;
int heatPin = 7;
int thermoSO = 4;
int thermoCS = 5;
int thermoSCK = 6;
MAX6675 thermocouple(thermoSLK, thermoCS, thermoSO);
int fanPin = 9;
short ROOM_TEMP = 18;
short MAX_ALLOWED_TEMP = 100;
double MAX_HEAT_INCREASE = 2.5;
short CURRENT_CYCLE = 0;
char CURRENT_PHASE='H';
unsigned long time;
double curTemp;
void printTempStats(unsigned long startTime) {
unsigned long timeElapsed = millis() - startTime;
Serial.print("CCL:");
Serial.print(CURRENT_CYCLE);
Serial.print(" PHS:");
Serial.print(CURRENT_PHASE);
Serial.print(" ET:");
Serial.print(timeElapsed);
Serial.print(" TT:");
Serial.print(millis());
Serial.print(" TMP:");
Serial.println(curTemp);
}
boolean heatUp(double maxTemp, boolean printTemps = true){
unsigned long startTime = millis();
double prevTemp = thermocouple.readCelsius();
curTemp = thermocouple.readCelsius();
if (curTemp < ROOM_TEMP) {
Serial.println("STARTING TMP TOO LOW");
Serial.println(prevTemp);
return false;
}
int curIteration = 0;
while (curTemp < maxTemp) {
curIteration++;
int pulseDuration = min(650, ((600*(maxTemp-curTemp))+80));
digitalWrite(heatPin, HIGH);
delay(pulseDuration);
digitalWrite(heatPin, LOW);
curTemp=thermocouple.readCelsius();
if(curTemp >= maxTemp)
break;
if(printTemps) {
printTempStats(startTime);
}
if((maxTemp-curTemp) < 1 || curIteration % 30 == 0) {
do {
prevTemp = curTemp;
delay(250);
curTemp = thermocouple.readCelsius();
} while(curTemp > prevTemp);
}
if(curTemp >= maxTemp)
break;
if ((curIteration%2) == 0) {
if(curTemp < (prevTemp-1.25)) {
Serial.print("Temperature is not increasing... ");
Serial.print(curTemp);
Serial.print(" ");
Serial.println(prevTemp);
return false;
}
} else {
prevTemp = curTemp;
}
while ((curTemp-prevTemp) >= MAX_HEAT_INCREASE) {
prevTemp = curTemp;
Serial.print("HEATING UP TOO FAST! ");
delay(1000);
curTemp = thermocouple.readCelsius();
Serial.println(curTemp);
}
while(curTemp >= MAX_ALLOWED_TEMP) {
delay(1000);
Serial.print("OVERHEATING");
Serial.println(curTemp);
}
}
return true;
}
void coolDown(double minTemp, int maxTimeout = 300, boolean printTemps = true) {
unsigned long startTime = millis();
while ((curTemp = thermocouple.readCelsius()) > (minTemp+0.75)) {
digitalWrite(fanPin, HIGH);
if(printTemps) {
printTempStats(startTime);
}
delay(maxTimeout);
}
digitalWrite(fanPin, LOW);
}
boolean holdConstantTemp(long duration, double idealTemp) {
unsigned long startTime = millis();
long timeElapsed = millis() - startTime;
while (timeElapsed < duration) {
curTemp = thermocouple.readCelsius();
printTempStats(startTime);
if(curTemp < idealTemp) {
digitalWrite(heatPin, HIGH);
delay(90);
digitalWrite(heatPin, LOW);
} else if (curTemp > (idealTemp+0.5)) {
digitalWrite(fanPin, HIGH);
delay(90);
digitalWrite(fanPin, LOW);
}
delay(210);
timeElapsed = millis() - startTime;
}
return true;
}
void runPCR() {
for (; cycles < NUM_CYCLES; cycles++) {
CURRENT_CYCLE = cycles;
unsigned long cycleStartTime = millis();
Serial.print("///CYCLE ");
Serial.print(cycles);
time = millis();
Serial.println("HEATING UP");
CURRENT_PHASE='H';
if(!heatUp(DENATURE_TEMP)){
Serial.println("Unable to heat up... something is wrong :(");
cycles = NUM_CYCLES;
break;
}
long dif = millis() - time;
Serial.print("***TOTAL HEAT TIME ");
Serial.println(dif);
Serial.println();
time = millis();
Serial.println("DENATURATION");
CURRENT_PHASE='D';
if(cycles > 0) {
holdConstantTemp(DENATURE_TIME, DENATURE_TEMP);
} else {
holdConstantTemp(INITIAL_DENATURE_TIME, DENATURE_TEMP);
}
Serial.println();
Serial.println("COOLING");
time = millis();
CURRENT_PHASE='C';
coolDown((ANNEALING_TEMP));
dif = millis()-time;
Serial.print("***TOTAL COOLING TIME ");
Serial.println(dif);
Serial.println();
Serial.println("ANNEALING");
time = millis();
CURRENT_PHASE='A';
holdConstantTemp(ANNEALING_TIME, ANNEALING_TEMP);
dif = millis()-time;
Serial.print("***TOTAL ANNEALING TIME ");
Serial.println(dif);
Serial.println();
Serial.println("HEATING UP");
time =millis();
CURRENT_PHASE='D';
heatUp((EXTENSION_TEMP));
dif = millis()-time;
Serial.print("***TOTAL HEAT UP TIME IS ");
Serial.println(dif);
Serial.println();
Serial.println("EXTENSION");
time = millis();
CURRENT_PHASE='E';
if (cycles<(NUM_CYCLES-1)) {
holdConstantTemp(EXTENSION_TIME, EXTENSION_TEMP);
} else {
holdConstantTemp(FINAL_EXTENSION_TIME, EXTENSION_TEMP);
}
dif = millis()-time;
Serial.print("***TOTAL EXTENSION TIME IS ");
Serial.println(dif);
Serial.println();
Serial.println();
Serial.print("///TOTAL CYCLE TIME: ");
Serial.println(millis()-cycleStartTime);
Serial.println();
}
Serial.println("DONE");
}
void setup() {
Serial.begin(9600);
pinMode(heatPin, OUTPUT);
digitalWrite(heatPin, LOW);
pinMode(fanPin, OUTPUT);
digitalWrite(fanPin, LOW);
Serial.println("Starting in");
for (int i = 5; i > 0; i--) {
Serial.print(i);
Serial.print("... ");
delay(1000);
}
Serial.println();
runPCR();
}
int cycles = 0;
void loop() {
//nothing
}
Erros:
Arduino: 1.8.5 (Windows 7), Placa:"Arduino/Genuino Uno"
C:\Users\Guillerme\Documents\Arduino\sketch_may31a\sketch_may31a.ino: In function 'void runPCR()':
sketch_may31a:151: error: 'cycles' was not declared in this scope
for (; cycles < NUM_CYCLES; cycles++) {
^
Usando a biblioteca MAX6675-library-master na versão 1.0.0 na pasta: C:\Users\Guillerme\Documents\Arduino\libraries\MAX6675-library-master
exit status 1
'cycles' was not declared in this scope
Não entendo nada de programação e queria a ajuda de vocês para resolver esse problema.