Documentos de Académico
Documentos de Profesional
Documentos de Cultura
h>
#include "HX711.h"
#define DOUT A1
#define CLK A0
#define hallA A2
#define hallB A3
#define btnRst 47
#define btnPsr 46
int valorHallA = 0;
int valorHallB = 0;
int reposoA=0;
int reposoB=0;
float viscosidad=0;
float velocidad=0;
unsigned long tiempo1=0;
bool boolaux=true;
bool pausar=false;
bool pesado=false;
bool mensajeMostrado=false;
bool mostrarViscosidad=false;
void setup() {
lcd.begin(16,2);
pinMode(btnRst,INPUT);
pinMode(btnPsr,INPUT);
iniciarCeldaCarga();
Serial.begin(9600);
reposoA = analogRead(hallA);
reposoB = analogRead(hallB);
reset();
void loop() {
valorHallA = analogRead(hallA);
valorHallB = analogRead(hallB);
/*
Serial.print(reposoA);//valores de reposo de A y B
Serial.print(" ");
Serial.print(reposoB);
Serial.print(" ");
Serial.print(analogRead(hallA));//valores de reposo de A y B
Serial.print(" ");
Serial.println(analogRead(hallB));
*/
if(pausar||valorHallA==0||valorHallB==0){
delay(100);
//Serial.print("En pausa");
if(valorHallA==0||valorHallB==0){
Serial.println("Sensor desconectado.");
if(!mensajeMostrado){
lcd.clear();
lcd.setCursor(4,0);
lcd.print("Sensor");
lcd.setCursor(1,1);
lcd.print("Desconectado");
mensajeMostrado=true;
//Serial.println();
else{
if(mensajeMostrado){
reset();
mensajeMostrado=false;
if(valorHallA<(reposoA-3)||valorHallA>(reposoA+3)){
if(boolaux){
Serial.println("Hall A activado");
lcd.setCursor(13,1);
lcd.print("|");
tiempo1=millis();
boolaux=false;
if(valorHallB<(reposoB-3)||valorHallB>(reposoB+3)){
if(!boolaux){
Serial.println("Hall B activado");
lcd.setCursor(14,1);
lcd.print("|");
tiempo2=millis();
velocidad=distancia*1000/(tiempo2-tiempo1);//en cm/s
Serial.print("Velocidad: ");
Serial.print(velocidad);
Serial.println("cm/s");
pausar=true;
if(digitalRead(btnRst)){
reset();
}
if(digitalRead(btnPsr))
pesar();
if(pesado&&pausar&&!mostrarViscosidad){
calcularViscosidad();
void reset(){
boolaux=true;
pausar=false;
pesado=false;
mostrarViscosidad=false;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Preparado");
lcd.setCursor(13,0);
lcd.print("ABM");
delay(100);
void iniciarCeldaCarga(){
Serial.println(balanza.read());
void pesar(){
pesado=true;
Serial.print("Masa: ");
masa=balanza.get_units(20)-197;
Serial.print(masa);
Serial.println(" g");
lcd.setCursor(15,1);
lcd.print("|");
delay(100);
void calcularViscosidad(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Viscosidad:");
lcd.setCursor(0,1);
float densidadLiquido=masa/volumen;//g/cm3
float diferenciaDensidades=densidadEsfera-densidadLiquido;
viscosidad=factor*gravedad*diferenciaDensidades*radioEsfera/velocidad;//kg/mm*s
//m/s^2*(kg/m^3-g/cm^3
Serial.print(radioEsfera);
Serial.print(" ");
Serial.print(diferenciaDensidades);
Serial.print(" ");
Serial.print("Viscosidad: ");
Serial.println();
Serial.print(viscosidad);
Serial.println("*10^-6 kg/m*s");
lcd.print(viscosidad);
lcd.setCursor(11,1);
lcd.print("kg/ms");
mostrarViscosidad=true;