Page 42 - Revista_60.pub
P. 42
MAKER
ÁGUA FRESCA, SCOOBY!
Por fim ligamos a válvula solenoide. Ligeiramente diferente
uma vez que vamos ter de usar um transístor Darlington TIP void setup() {
120, mas de igual forma simples como o diagrama na imagem Serial.begin(9600); //apenas para debug
seguinte: scale.set_scale(calibration_factor); //Carrega
//a calibração da celula de carga
scale.tare(); //Zera após a tara (no caso o
//recipiente)
sensors.begin();
pinMode(solenoidPin, OUTPUT); //Define o pino
//como output
}
void loop() {
//loop principal
//código da celula
Serial.print("Peso: ");
Serial.print(scale.get_units(), 1);
Serial.print(" kg");
Serial.println();
//end
//codigo da temperatura
Serial.print(" Lendo temperatura...");
sensors.requestTemperatures(); //manda executar
//a leitura da temperatura
Serial.println("DONE");
/
************************************************/
Serial.print("Temperatura é: ");
Serial.print(sensors.getTempCByIndex(0));
//end
O Código
Concluídas as ligações todas, falta carregar o código para o /**PERMISSAS PARA ABRIR E FECHAR A VÁLVULA**/
arduino, usando o IDE favorito do leitor. Em edições anteriores, //quente
if(sensors.getTempCByIndex(0) > 15)
foi demonstrado como carregar código usando o Arduino IDE e {
o Plaformio, pelo que se deixa ao critério do leitor, escolher digitalWrite(solenoidPin, HIGH);
qual utilizar. }
else{ digitalWrite(solenoidPin, LOW);}
//Thanks for the idea Bernardo Ferreira //abaixo do nível minimo de água
//Thanks for the motivation RP ;) "Descontos é na if ( (scale.get_units(), 1) =< 3)
// RP!" {
#include "HX711.h" digitalWrite(solenoidPin, HIGH);
#include <OneWire.h> }
#include <DallasTemperature.h> else{ digitalWrite(solenoidPin, LOW);}
//acima do nível maximo de água
if ( (scale.get_units(), 1) >= 4)
#define ONE_WIRE_BUS 4 //pino de dados do DS18B20 {
fica definido como 4 digitalWrite(solenoidPin, HIGH);
#define calibration_factor -7050.0 //este valor é }
//obtido usando o SparkFun_HX711_Calibration sketch else{ digitalWrite(solenoidPin, LOW);}
#define DOUT 3 /
#define CLK 2 ************************************************/
HX711 scale(DOUT, CLK); delay(5000); //aguarda 5 segundos
//end
// Prepara uma instancia oneWire para comuicar com }
dispositivos OneWire
//no caso o DS18B20
OneWire oneWire(ONE_WIRE_BUS); No código após a leitura dos sensores e o envio dos
/ resultados para a porta USB para poderem ser lidos para
**************************************************/ depuração e diagnóstico de avarias. Feito isto os dados são
//Passa a referencia oneWire para o sensor DS18B20 lidos e comparados com os valores que definimos manual-
(DallasTemperature)
DallasTemperature sensors(&oneWire); mente no código, considerando a calibração e o peso do
/ recipiente da água vazio . Caso as leituras, seja da tempera-
**************************************************/ tura seja do peso da água, sejam ambas, cumprirem os crité-
int solenoidPin = 5; //Este é o pino usado para rios para abrir a válvula para entrar mais água, é enviado o
//controlar a solenoide sinal “high” e a válvula é aberta. Caso contrario é sempre
enviado o sinal “low”, apenas para garantir que a água está
fechada e não estamos a desperdiçar água! Afinal um dos
42