Problema ao compilar código

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.

Tenta declarar a variável cycles antes de declarar os métodos que usam essa variável

Vitor_Palmarin:
Tenta declarar a variável cycles antes de declarar os métodos que usam essa variável

Desculpa pela pergunta boba, mas como eu faço para declarar essa variável?

CaioManiac:
Desculpa pela pergunta boba, mas como eu faço para declarar essa variável?

Já declarou ela entre o void Setup() e o void Loop(), só precisa mover ela para antes dos métodos

Vitor_Palmarin:
Já declarou ela entre o void Setup() e o void Loop(), só precisa mover ela para antes dos métodos

Obrigado pela ajuda! Eu retirei o " int cycles = 0;" antes do void Loop() e coloquei antes do void runPCR() no código e parece que deu certo. Tem algum problema em fazer isso?

CaioManiac:
Obrigado pela ajuda! Eu retirei o " int cycles = 0;" antes do void Loop() e coloquei antes do void runPCR() no código e parece que deu certo. Tem algum problema em fazer isso?

Não tem problema nenhum, é até o certo a se fazer. É que na programação é tudo muito lógico, o método runPCR() estava chamando a variável cycles que ainda não tinha sido declarada (visto que você declarou ela só depois do Setup()), então para ele essa variável não existia. Tanto que a própria IDE estava avisando isso:
" ‘cycles’ was not declared in this scope"

Vitor_Palmarin:
Não tem problema nenhum, é até o certo a se fazer. É que na programação é tudo muito lógico, o método runPCR() estava chamando a variável cycles que ainda não tinha sido declarada (visto que você declarou ela só depois do Setup()), então para ele essa variável não existia. Tanto que a própria IDE estava avisando isso:
" 'cycles' was not declared in this scope"

Obrigado novamente pela ajuda!!

Tinha sido melhor na linha 151 ter alterado isto:

for (; cycles < NUM_CYCLES; cycles++) {

para isto:

for (int cycles =0; cycles < NUM_CYCLES; cycles++) {

luisilva:
Tinha sido melhor na linha 151 ter alterado isto:

for (; cycles < NUM_CYCLES; cycles++) {

para isto:

for (int cycles =0; cycles < NUM_CYCLES; cycles++) {

Ok, vou fazer as alterações. Obrigado!!
Devo retirar o “int cycles=0” antes do void Loop() também?

CaioManiac:
Ok, vou fazer as alterações. Obrigado!!
Devo retirar o "int cycles=0" antes do void Loop() também?

Claro que sim.