balança com Arduino para utilização do programa curva empuxo 1.2.
Versão final do código fonte da balança com Arduino para utilização do programa curva empuxo 1.2.
//Bança de até 1k com atmega328, modulo HX711, célula de carga 1k e cartão SD e eeprom para utilizar no programa curva de empuxo 1p2
*/
formato de saída
tempo N
0.000 0.000
/*
//ver:1.9(final)
//20-02-2021
//pedroluand@gmail.com
#include <EEPROM.h> //biblioteca para eeprom interna
#include <HX711.h> //biblioteca do modulo hx711
#include <Wire.h> //biblioteca de comunicação
#include <SPI.h> //biblioteca
#include <SD.h> //biblioteca do cartao sd
#define DT A1 //configura pino de comunicaçao do modulo HX711 como Atmega
#define SCK A0 //configura pino de comunicaçao do modulo HX711 como Atmega
HX711 escala; //modulo HX711
File myFile; //nome do arquivo criado no cartao data log
float tempo; //tempo da leitura
int counter; //contador de vezes que o aparelho foi ligado
int memoria = 0; //memoria na eeprom
void setup() {
Serial.begin(9600);
Serial.println("Balança com atmega328, modulo HX711, célula de carga 1k e cartão SD e eeprom para utilizar no programa curva de empuxo 1p2- ver:1.9(final) 20-02-2021");
escala.begin (DT, SCK); //modulo HX711
pinMode(7,OUTPUT); //led ligado na porta 7 (balança pronta)
pinMode(8,INPUT_PULLUP); //Reset da eeprom
escala.set_scale(-999867.64/100*9.8066); //este valor varia. atenção: sempre calibrar a célula nova obs.(-999867.64/100*9.8066) para informar o valor em N
escala.tare(1); //O peso é chamado de Tare.
while (!Serial) { //inicialização do cartão sd
; //inicialização do cartão sd
}
Wire.begin(); //inicia a biblioteca wire.h
if (!SD.begin(10)) { //verificação cartao sd data log incerido
delay(2000); //verificação cartao sd data log incerido
return; //verificação cartao sd data log incerido
}
if (digitalRead(8) == LOW) //zera a memoria eeprom quando oaparelho é ligado com o botão pressionado
{
counter=0; //zera a variável counter
EEPROM.write(memoria,counter); //grava o valor da variavel counter na eeprom
}
counter = EEPROM.read(memoria); //a variavel counter inicia com o valor armazenado na eeprom
digitalWrite(7,HIGH); //indica que a balança esta pronta para pesagem
myFile = SD.open("empuxo.txt", FILE_WRITE); //cria o arquivo no cartão sd
myFile.println(""); //salta uma linha no arquivo criado no cartão sd
myFile.print("TESTE ESTÁTICO NÚMERO= "); //escreve o texto entre "" no arquivo criado no cartão sd
myFile.println(counter); //escreve o valor da variavel counter no arquivo criado no cartão sd
myFile.close(); //fecha o arquivo criado no cartão sd
counter+=1; //incrementa a variavel counter
EEPROM.write(memoria,counter); //salva o valor da variável counter na eeprom
}
void loop() {
myFile = SD.open("empuxo.txt", FILE_WRITE); //cria o arquivo no cartão sd
myFile.print(tempo,3); //imprime o tempo com tres casas decimais
myFile.print("\t"); //faz tabulação no arquivo
myFile.println(escala.get_units(1),3); //escreve no arquivo criado no cartão sd
myFile.close(); //fecha o arquivo do cartão sd
//para imprimir no serial monitor descomente as três linhas abaixo
//Serial.print(tempo,3); //imprime o valor do tempo no serial monitor
//Serial.print("\t"); //faz tabulação no arquivo
//Serial.println(escala.get_units(1), 3); //imprimeo valor da leitura no serial monitor
tempo+=0.100; //incrementa o tempo
delay(100); //temporiza o loop (100)
}
Comentários
Postar um comentário