buzzer e led

ragazzi sono nuovamente qui per chiedere il vostro aiuto

ho arduino mega 2560 con RTC display lcd 20x4 e sonda stagna temp DS18B20 perfettamente tutto funzionante e da qualche tempo stavo riflettendo di mettere un buzzer e led che mi intervengono ad una determinata temperatura e che magari al rientrare della stessa smetta di suonare.

Pero' non riesco a far interagire le due cose cioe' non riesco ad integrare al mio sketch che indico di sotto il buzzer e il led (magari se possibile inserire un pulsante di tacitazione)considerando che il buzzer è collegato al pin 8 e il led al pin 13 riuscite a darmi una mano ?

Ringrazio anticipatamente per le risposte.

#include "Wire.h"
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <LiquidCrystal.h>

#define DS1307_I2C_ADDRESS 0x68
#define BUTTON A0

int DS18B20_Pin = 6;
float temperature = 0.0;
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
OneWire ds(DS18B20_Pin);

void setup() {
  Wire.begin();
  Serial.begin(9600);
  lcd.begin(20, 4);

  // Modificare i seguenti valori per impostare il vostro orologio ad ogni avvio del programma.
  // Probabilmente si desidera impostare solo l'orologio una volta e quindi rimuovere
  // la chiamata setDateDs1307 .
  //   second = 00;
  //   minute = 04;
  //   hour = 01;
  //   dayOfWeek = 5;
  //   dayOfMonth = 27;
  //   month = 6;
  //   year = 14;
  //   setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);// chiamata per settare l'orologio
}

void loop() {

  temperature = getTemp();
  getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

  lcd.clear(); // clear LCD screen

  lcd.setCursor(1,0); // prima riga ---> www DD/MM/YYYY 
    switch(dayOfWeek){
  case 1:
    lcd.print("Lunedi");
    break;
  case 2:
    lcd.print("Martedi");
    break;
  case 3:
    lcd.print("Mercoledi");
    break;
  case 4:
    lcd.print("Giovedi");
    break;
  case 5:
    lcd.print("Venerdi");
    break;
  case 6:
    lcd.print("Sabato");
    break;
  case 7:
    lcd.print("Domenica");
    break;
  }  
  lcd.print(" ");
  lcd.print(dayOfMonth, DEC);  
  lcd.print("/");
  if (month < 10) lcd.print("0");
  lcd.print(month, DEC);  
  lcd.print("/20");
  lcd.print(year, DEC); 


  lcd.setCursor(4,1); // seconda riga ---> orario hh.min.sec
  
    lcd.print("ore");
   lcd.print(" ");
  lcd.print(hour, DEC);
  lcd.print(".");
  if (minute < 10) lcd.print("0");
  lcd.print(minute, DEC);
  lcd.print(".");
  if (second < 10) lcd.print("0");
  lcd.print(second, DEC);
  
  
  lcd.setCursor(0,3);  // quarta riga
  lcd.print("Temp:");
  lcd.print(temperature);

  Serial.println(temperature);

  delay(1000);
}

float getTemp() {   //returns the temperature from one DS18B20 in DEG Celsius

  byte data[12];
  byte addr[8];

  if (!ds.search(addr)) {
    //no more sensors on chain, reset search
    ds.reset_search();
    return -1000;
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
    Serial.println("CRC is not valid!");
    return -1000;
  }

  if (addr[0] != 0x10 && addr[0] != 0x28) {
    Serial.print("Device is not recognized");
    return -1000;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);   
  ds.write(0xBE); // Read Scratchpad

  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }

  ds.reset_search();

  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;

  return TemperatureSum;
}


byte decToBcd(byte val) {   // Convert normal decimal numbers to binary coded decimal
  return ((val/10*16) + (val%10));
}


byte bcdToDec(byte val) {   // Convert binary coded decimal to normal decimal numbers
  return ((val/16*10) + (val%16));
}

// Stops the DS1307, but it has the side effect of setting seconds to 0
// Probably only want to use this for testing
void stopDs1307() {
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.write(0);
  Wire.write(0x80);
  Wire.endTransmission();
}

// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you're passing in valid numbers
void setDateDs1307(byte second, // 0-59
byte minute,        // 0-59
byte hour,          // 1-23
byte dayOfWeek,     // 1-7
byte dayOfMonth,    // 1-28/29/30/31
byte month,         // 1-12
byte year)          // 0-99
{
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.write(0);
  Wire.write(decToBcd(second));    // 0 to bit 7 starts the clock
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));      // If you want 12 hour am/pm you need to set
  // bit 6 (also need to change readDateDs1307)
  Wire.write(decToBcd(dayOfWeek));
  Wire.write(decToBcd(dayOfMonth));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));
  Wire.endTransmission();
}

// Gets the date and time from the ds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
  // Reset the register pointer
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.write(0);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

  // A few of these need masks because certain bits are control bits
  *second     = bcdToDec(Wire.read() & 0x7f);
  *minute     = bcdToDec(Wire.read());
  *hour       = bcdToDec(Wire.read() & 0x3f);  // Need to change this if 12 hour am/pm
  *dayOfWeek  = bcdToDec(Wire.read());
  *dayOfMonth = bcdToDec(Wire.read());
  *month      = bcdToDec(Wire.read());
  *year       = bcdToDec(Wire.read());
}

Poniti intanto il problema: quando deve essere acceso il buzzer? Ed il Led?
Quindi risolvi questo problema. Poi l'evento opposto, lo spengimento, sarà simile.

Ad esempio, tu hai un loop che viene eseguito ogni 1000 millisecondi.
Prima del delay finale, potresti mettere un if e controllare se la temperatura è sopra ad una soglia prestabilita ed attivare buzzer e/o led. Subito sotto, un if per la condizione opposta: spengerli se la temp è scesa sotto ad un certo livello.
Poi ti serve una variabile in cui salvi lo stato del buzzer/led (ad esempio, una booleana, con true se sono accesi e false se sono spenti).
Accendi il buzzer/led solo se la variabile è false (se quindi sono spenti) e li spengi solo se la variabile è true (se cioè sono accesi).

Per quanto riguarda lo stato del buzzer e led riesco a impostare l'accensione e lo spegnimento secondo un ciclo il mio problema è porre la condizione if ,non riesco a interfacciarlo con la temperatura perche' non riesco a capire come fare per fargli andare a controllare la temperatura e dirgli se la temp supera (per esempio)32 gradi attiva buzzer e led.

Premetto che non sono un perfetto conoscitore di c++ e mi sono da pochi mesi avvicinato a questo mondo facendo una scommessa con me stesso,sto leggendo molto e documentandomi tantissimo chiedo scusa se le mie domande sono banali ma le faccio appunto perche' mi trovo in difficolta' e voglio superarle.

grazie a tutti per l'aiuto che mi state dando.

Non conosci il C/C++ oppure la programmazione in generale? Perché i test condizionali sono la base di qualunque linguaggio e nella quai totalità dei casi si usa proprio l'if. Intanto fai una ricerchina sul forum, di questi tipi di controlli con variabili di stato se ne parla spesso. Poi procurati anche un buon manuale di C per approfondire le basi. E studia anche il Reference di Arduino, che già lì c'è tanta roba