#include <HX711.h> // Inclui a biblioteca HX711 para interagir com a Célula de Carga
#include <SPI.h> // Inclui a biblioteca SPI
#include <SD.h> // Inclui a biblioteca SD
// Define-se os pinos para o módulo HX711
const int LOADCELL_DOUT_PIN = 12; // Pino do tipo 'Data Out' (DO) do HX711
const int LOADCELL_SCK_PIN = 13; // Pino do tipo 'Clock' (SCK) do HX711
// Define-se os valores de calibração para a célula de carga
const float CALIBRATION_FACTOR = 1234.56;
// Lembre de ajustar isso para a sua calibração
// Define-se o pino do 'Chip Select' módulo cartão MicroSD
const int SD_CS_PIN = 27;
HX711 scale; //cria objeto 'scale'
void setup() {
Serial.begin(9600);
// Inicializa a célula de carga
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
scale.set_scale(CALIBRATION_FACTOR); // Aplica o faor de calibração
scale.tare(); // tara o leitor
// Inicializa o cartão MicroSD
if (!SD.begin(SD_CS_PIN)) {
Serial.println("Cartão falho ou não presente");
while (1);
// Esse bloco significa: caso o SD não inicialize ele vai travar o programa pontuando que não foi inicializado
}
Serial.println("a Célula de Carga foi inicializada");
}
void loop() {
// Faz a leitura dos dados da célula de carga e converte em leitura de força
float thrust = scale.get_units();
// Pega os dados em kilos
// Armazena os dados no cartão SD por meio da função 'logThrust'
logThrust(thrust);
Serial.print("Força (kg): ");
Serial.println(thrust);
// Adiciona um delay de cria
delay(500); // Ajusta para a desejada amostra de dados
}
void logThrust(float thrust) {
// Cria o arquivo no cartão SD
File dataFile = SD.open("thrust_log.txt", FILE_WRITE);
// Checa se o arquivo foi aberto com sucesso
if (dataFile) {
// Armazena o dado de força no arquivo
dataFile.print(thrust);
dataFile.print("\n");
dataFile.close();
} else {
// Se o arquivo não abrir, vai avisar essa mensagem de erro
Serial.println("Erro ao abrir o arquivo para armazenar os dados");
}
}
//analise:
//os principais funções: scale.begin(), scale.set_scale(), scale.tare()
// scale.begin() inicia a comunicação entre o esp e o hx711
// scale.set_scale calibra os dados pra uma unidade conhecida de peso
// scale.tare() zera o leitor
//ou seja, a principal função dessa biblioteca é dar os comandos
//para mexer/comunicar o sensor de peso com o microcontrolador