SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
KIT - Para analisar a qualidade
da água
Kit desenvolvido por:      Aplicação por: 
Grupo3: Grupo 5:
Alexandre Bértolo Rodrigo Ervilha
Diogo Carvalhana
TUTORIAL 
I Parte - Ligação LCD 2
Material: 2
Ligações: 2
Código: 2
II Parte - Ligação sensor de temperatura e humidade 3
Material: 3
Ligações: 3
Código: 3
III Parte - Ligação LEDs 4
Material: 4
Ligações: 4
Código: 4
IV Parte - Botão 5
Material: 5
Ligações: 5
Código: 6
V Parte - Sensor de temperatura da água 6
Material: 6
Ligações: 7
Código: 7
VI Parte - Medidor de pH 8
Material: 8
Ligações: 8
Código: 8
VII Parte - Sensor de turbidez 10
Material: 10
Ligações: 11
Código: 11
VIII Parte - Sensor de conductividad 12
Material: 12
Ligações: 12
Código: 12
IX Parte - Juntar todo o codigo 14
Código:
X Final - Incluir as bibliotecas para funcionar 14
1
TUTORIAL 
 
 
I Parte - Ligação LCD 
Material:
Arduino uno LCD ​BreadBoard Potênciometro 10k
Ligações:
Código:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}
2
TUTORIAL 
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
}
II Parte - Ligação sensor de temperatura e humidade 
Material: 
DTH 22
Ligações:
Código:
#include <DHT.h>
#define DHTPIN 7
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int chk;
float hum;
float temp;
void setup(){
Serial.begin(9600);
3
TUTORIAL 
dht.begin();
}
void loop(){
hum = dht.readHumidity();
temp= dht.readTemperature();
Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
delay(2000);
}
III Parte - Ligação LEDs 
Material:
Led Vermelho Led Amarelo Led Verde Resistor de 220 ohm
Ligações: 
Código: 
int ledVermelho = 8;
int ledAmarelo = 9;
4
TUTORIAL 
int ledVerde = 10;
void setup() {
pinMode(ledVermelho, OUTPUT);
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVerde, OUTPUT);
}
void loop() {
digitalWrite(ledVerde, LOW);
digitalWrite(ledVermelho, HIGH);
delay(100);
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, HIGH);
delay(100);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, HIGH);
delay(100);
}
IV Parte - Botão 
Material:
Push Button Resistor de 10 kohm
Ligações:
5
TUTORIAL 
Código:
const int buttonPin = 1;
const int ledVermelho = 8;
const int ledAmarelo = 9;
const int ledVerde = 10;
int buttonState = 0;
void setup() {
pinMode(ledVermelho, OUTPUT);
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledVermelho, HIGH);
digitalWrite(ledAmarelo, HIGH);
digitalWrite(ledVerde, HIGH);
} else {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, LOW);
}
}
V Parte - Sensor de temperatura da água 
Material:
Waterproof sensor 4.7 kohm resistor
6
TUTORIAL 
Ligações:
Código:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 13
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
sensors.begin();
}
void loop(void)
{
Serial.print("Requesting temperatures...");
sensors.requestTemperatures();
Serial.println("DONE");
Serial.print("Temperature for the device 1 is: ");
Serial.println(sensors.getTempCByIndex(0));
Serial.print("celsius");
}
7
TUTORIAL 
VI Parte - Medidor de pH 
Material:
Ph sensor
Ligações:
Código:
#define SensorPin A2
#define Offset 0.00
#define LED 10
#define samplingInterval 20
#define printInterval 200
#define ArrayLenth 40
int pHArray[ArrayLenth];
int pHArrayIndex=0;
void setup(void){
pinMode(LED,OUTPUT);
Serial.begin(9600);
8
TUTORIAL 
Serial.println("pH meter experiment!");
}
void loop(void){
static unsigned long samplingTime = millis();
static unsigned long printTime = millis();
static float pHValue,voltage;
if(millis()-samplingTime > samplingInterval){
pHArray[pHArrayIndex++]=analogRead(SensorPin);
if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
pHValue = 3.5*voltage+Offset;
samplingTime=millis();
}
if(millis() - printTime > printInterval)
{
Serial.print("Voltage:");
Serial.print(voltage,2);
Serial.print(" pH value: ");
Serial.println(pHValue,2);
digitalWrite(LED,digitalRead(LED)^1);
printTime=millis();
}
}
double avergearray(int* arr, int number){
int i;
int max,min;
double avg;
long amount=0;
if(number<=0){
Serial.println("Error number for the array to avraging!/n");
return 0;
}
if(number<5){
for(i=0;i<number;i++){
amount+=arr[i];
}
avg = amount/number;
return avg;
}else{
if(arr[0]<arr[1]){
min = arr[0];max=arr[1];
}
else{
9
TUTORIAL 
min=arr[1];max=arr[0];
}
for(i=2;i<number;i++){
if(arr[i]<min){
amount+=min;
min=arr[i];
}else {
if(arr[i]>max){
amount+=max;
max=arr[i];
}else{
amount+=arr[i];
}
}
}
avg = (double)amount/(number-2);
}
return avg;
}
VII Parte - Sensor de turbidez  
Material: 
Sensor de Turbidez
10
TUTORIAL 
Ligações:
Código:
int ledPin = 10;
int sensor_in = A4;
void setup(){
pinMode(sensor_in, INPUT);
}
void loop(){
if(digitalRead(sensor_in)==LOW){
digitalWrite(ledPin, HIGH);
}else{
digitalWrite(ledPin, LOW);
}
float sensorValue = analogRead(A4);
float voltage = sensorValue * (5.0 / 1024.0);
Serial.print("Voltage:");
Serial.print(voltage,2);
Serial.print(" NTU value: ");
Serial.println(sensorValue);
delay(500);
}
11
TUTORIAL 
VIII Parte - Sensor de conductividad 
Material: 
Sensor de conductividade
Ligações:
 
 
 
Código:
#include <OneWire.h>
#define StartConvert 0
#define ReadTemperature 1
const byte numReadings = 20;
byte ECsensorPin = A1;
byte DS18B20_Pin = 13;
12
TUTORIAL 
unsigned int
AnalogSampleInterval=25,printInterval=700,tempSampleInterval=850;
unsigned int readings[numReadings];
byte index = 0;
unsigned long AnalogValueTotal = 0;
unsigned int AnalogAverage = 0,averageVoltage=0;
unsigned long AnalogSampleTime,printTime,tempSampleTime;
float temperature,ECcurrent;
OneWire ds(DS18B20_Pin);
void setup() {
Serial.begin(9600);
for (byte thisReading = 0; thisReading < numReadings;
thisReading++)
readings[thisReading] = 0;
TempProcess(StartConvert);
AnalogSampleTime=millis();
printTime=millis();
tempSampleTime=millis();
}
void loop() {
if(millis()-AnalogSampleTime>=AnalogSampleInterval)
{
AnalogSampleTime=millis();
AnalogValueTotal = AnalogValueTotal - readings[index];
readings[index] = analogRead(ECsensorPin);
AnalogValueTotal = AnalogValueTotal + readings[index];
index = index + 1;
if (index >= numReadings)
index = 0;
AnalogAverage = AnalogValueTotal / numReadings;
}
if(millis()-tempSampleTime>=tempSampleInterval)
{
tempSampleTime=millis();
temperature = TempProcess(ReadTemperature);
TempProcess(StartConvert);
}
if(millis()-printTime>=printInterval)
{
printTime=millis();
averageVoltage=AnalogAverage*(float)5000/1024;
13
TUTORIAL 
Serial.print("Analog value:");
Serial.print(AnalogAverage);
Serial.print(" Voltage:");
Serial.print(averageVoltage);
Serial.print("mV ");
Serial.print("temp:");
Serial.print(temperature);
Serial.print("^C EC:");
float TempCoefficient=1.0+0.0185*(temperature-25.0);
float CoefficientVolatge=(float)averageVoltage/TempCoefficient;
if(CoefficientVolatge<150)Serial.println("No solution!");
else if(CoefficientVolatge>3300)Serial.println("Out of the
range!");
else
{
if(CoefficientVolatge<=448)ECcurrent=6.84*CoefficientVolatge-64.32;
else
if(CoefficientVolatge<=1457)ECcurrent=6.98*CoefficientVolatge-127;
else ECcurrent=5.3*CoefficientVolatge+2278;
ECcurrent/=1000;
Serial.print(ECcurrent,2);
Serial.println("ms/cm");
}
}
IX Parte - Juntar todo o codigo 
Código:
// biblioteca
#include <LiquidCrystal.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// estado do botão
int btnEstado = 0;
// defenir pinos
const int btnPin = 1;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define DHTPIN 7
int ledVermelho = 8;
14
TUTORIAL 
int ledAmarelo = 9;
int ledVerde = 10;
#define ONE_WIRE_BUS 13
#define SensorPin A2
int sensor_in = A4;
byte ECsensorPin = A1;
byte DS18B20_Pin = 13;
// define o tipo de sensor
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature aguatemp(&oneWire);
#define Offset 0.00
#define samplingInterval 20
#define pI 20
#define ArrayLenth 40
#define StartConvert 0
#define ReadTemperature 1
const byte numReadings = 20;
unsigned int
AnalogSampleInterval=20,printInterval=20,tempSampleInterval=20;
unsigned int readings[numReadings];
byte index = 0;
unsigned long AnalogValueTotal = 0;
unsigned int AnalogAverage = 0,averageVoltage=0;
unsigned long AnalogSampleTime,printTime,tempSampleTime;
float temperature;
float ECcurrent;
OneWire ds(DS18B20_Pin);
// variveis
int counter = 1;
int chk;
float arhum;
float artemp;
int pHArray[ArrayLenth];
int pHArrayIndex = 0;
float aguaph;
float conductividade;
int conducorrent;
// function para pH
double avergearray(int* arr, int number) {
int i;
int max, min;
15
TUTORIAL 
double avg;
long amount = 0;
if (number <= 0) {
return 0;
}
if (number < 5) {
for (i = 0; i < number; i++) {
amount += arr[i];
}
avg = amount / number;
return avg;
} else {
if (arr[0] < arr[1]) {
min = arr[0]; max = arr[1];
}
else {
min = arr[1]; max = arr[0];
}
for (i = 2; i < number; i++) {
if (arr[i] < min) {
amount += min;
min = arr[i];
} else {
if (arr[i] > max) {
amount += max;
max = arr[i];
} else {
amount += arr[i];
}
}
}
avg = (double)amount / (number - 2);
}
return avg;
}
// function para conductividade
float TempProcess(bool ch)
{
static byte data[12];
static byte addr[8];
static float TemperatureSum;
if(!ch){
if ( !ds.search(addr)) {
ds.reset_search();
16
TUTORIAL 
return 0;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
return 0;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
return 0;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1);
}
else{
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for (int i = 0; i < 9; i++) {
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB);
TemperatureSum = tempRead / 16;
}
return TemperatureSum;
}
// preparação dos pinos
void setup(void) {
// pin do botão
pinMode(btnPin, INPUT);
// inicia o lcd
lcd.begin(16, 2);
// inicia o sensor
dht.begin();
// pin dos ldes
pinMode(ledVermelho, OUTPUT);
pinMode(ledAmarelo, OUTPUT);
pinMode(ledVerde, OUTPUT);
17
TUTORIAL 
// inicia o sensor de temperatura da agua
aguatemp.begin();
// inicia o sensor de turbidez
pinMode(sensor_in, INPUT);
}
// codigo
void loop(void) {
// le o estado do botão e verifica se é precionado ou não
btnEstado = digitalRead(btnPin);
if (btnEstado == HIGH) {
counter = counter + 1;
}
// le os valores do sensor de ar temp/hump
arhum = dht.readHumidity();
artemp = dht.readTemperature();
// le os valores do sensor de temp da agua
aguatemp.requestTemperatures();
// le os valores de ph
static unsigned long samplingTime = millis();
static unsigned long printTime = millis();
static float pHValue, voltage;
if (millis() - samplingTime > samplingInterval)
{
pHArray[pHArrayIndex++] = analogRead(SensorPin);
if (pHArrayIndex == ArrayLenth)pHArrayIndex = 0;
voltage = avergearray(pHArray, ArrayLenth) * 5.0 / 1024;
pHValue = 3.5 * voltage + Offset;
samplingTime = millis();
}
if (millis() - printTime > pI)
{
aguaph = pHValue ;
printTime = millis();
}
// le os valores de turbidez
int aguaturb = analogRead(A4);
// le os valores do sensor de conductividade
if(millis()-AnalogSampleTime>=AnalogSampleInterval)
{
AnalogSampleTime=millis();
AnalogValueTotal = AnalogValueTotal - readings[index];
18
TUTORIAL 
readings[index] = analogRead(ECsensorPin);
AnalogValueTotal = AnalogValueTotal + readings[index];
index = index + 1;
if (index >= numReadings)
index = 0;
AnalogAverage = AnalogValueTotal / numReadings;
}
if(millis()-tempSampleTime>=tempSampleInterval)
{
tempSampleTime=millis();
temperature = TempProcess(ReadTemperature);
TempProcess(StartConvert);
}
if(millis()-printTime>=printInterval)
{
printTime=millis();
averageVoltage=AnalogAverage*(float)5000/1024;
conducorrent = averageVoltage;
float TempCoefficient=1.0+0.0185*(temperature-25.0);
float CoefficientVolatge=(float)averageVoltage/TempCoefficient;
if(CoefficientVolatge<10)
conductividade = 0.00;
else if(CoefficientVolatge>3300)
conductividade =0.00;
else
{
if(CoefficientVolatge<=448)ECcurrent=6.84*CoefficientVolatge-64.32;
else
if(CoefficientVolatge<=1457)ECcurrent=6.98*CoefficientVolatge-127;
else ECcurrent=5.3*CoefficientVolatge+2278;
ECcurrent/=1000;
conductividade = ECcurrent;
}
}
// menu
switch (counter) {
// lcd temperatura e humdidade do ar
case 1:
lcd.setCursor(0, 0);
lcd.print("Ar-Hum: ");
lcd.print(arhum);
19
TUTORIAL 
lcd.print("%");
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("Ar-Temp: ");
lcd.print(artemp);
lcd.print((char)223);
lcd.print("C");
lcd.print(" ");
if (artemp < 23 ) {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, HIGH);
} else if (artemp < 30) {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, HIGH);
digitalWrite(ledVerde, LOW);
} else {
digitalWrite(ledVermelho, HIGH);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, LOW);
}
break;
// lcd temperadura da agua
case 2:
lcd.setCursor(0, 0);
lcd.print("Agua-Temperatura: ");
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(aguatemp.getTempCByIndex(0));
lcd.print((char)223);
lcd.print("C");
lcd.print(" ");
if (aguatemp.getTempCByIndex(0) < 23 ) {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, HIGH);
} else if (aguatemp.getTempCByIndex(0) < 30) {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, HIGH);
digitalWrite(ledVerde, LOW);
} else {
digitalWrite(ledVermelho, HIGH);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, LOW);
20
TUTORIAL 
}
break;
case 3:
lcd.setCursor(0, 0);
lcd.print("Agua-PH: ");
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(aguaph);
lcd.print("pH");
lcd.print(" ");
if (aguaph < 5 ) {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, HIGH);
} else if (aguaph < 10) {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, HIGH);
digitalWrite(ledVerde, LOW);
} else {
digitalWrite(ledVermelho, HIGH);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, LOW);
}
break;
case 4:
lcd.setCursor(0, 0);
lcd.print("Agua-Turbidez: ");
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(aguaturb);
lcd.print("NTU");
lcd.print(" ");
if (aguaturb < 50 ) {
digitalWrite(ledVermelho, HIGH);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, LOW);
} else if (aguaturb < 150) {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, HIGH);
digitalWrite(ledVerde, LOW);
} else {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, LOW);
21
TUTORIAL 
digitalWrite(ledVerde, HIGH);
}
break;
case 5:
lcd.setCursor(0, 0);
lcd.print("Agua-Condut: ");
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(conductividade);
lcd.print("ms/cm");
lcd.print(" ");
lcd.print(conducorrent);
lcd.print("mV");
lcd.print(" ");
if (conductividade < 5 ) {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, HIGH);
} else if (conductividade < 10) {
digitalWrite(ledVermelho, LOW);
digitalWrite(ledAmarelo, HIGH);
digitalWrite(ledVerde, LOW);
} else {
digitalWrite(ledVermelho, HIGH);
digitalWrite(ledAmarelo, LOW);
digitalWrite(ledVerde, LOW);
}
break;
default:
counter = counter - 5;
break;
}
}
22
TUTORIAL 
​X - Incluir as bibliotecas para funcionar
1. No projeto deverá ir em Sketch - Incluir biblioteca - Adicionar .zip
2. Incluir todas as bibliotecas necessárias para este projecto repetindo o processo
várias vezes.
23
TUTORIAL 
 XI - Aplicação para guardar dados 
 
 
 
 
 
1. Design: 
Para fazer a aplicação utilizou-se o 
                                              App Inventor 2. 
 
Completamente gratis. 
 
 
 
 
 
 
 
 
2. Arrastar 3 table arrangement para a tela. 
       
24
TUTORIAL 
3. Separar as informações 
a. Data e Local 
b. Dados a guardar 
c. Botões 
4. Adicionar colunas e linhas 
   
   
   
   
   
   
   
   
   
   
   
   
   
5. Renomear para se poder orientar melhor 
 
No canto inferior direito existe as 
opções apagar e renomear. 
 
 
 
 
 
 
 
Podem consultar o tutorial em 
https://www.slideshare.net/projetosaeb/tutorial-aplicao-registo-de-dados 
 
25
TUTORIAL 
The end
Enjoy your project ;)
26

Mais conteúdo relacionado

Semelhante a Tutorial do KIT - Para analisar a qualidade da água

Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresFlavio Oliveira Rodrigues
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino Edgley Xavier
 
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSetApostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSetSaymon Cristian Alves Oliveira
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IICarlos Carvalho
 
Arduino - Parte 2.pdf
Arduino - Parte 2.pdfArduino - Parte 2.pdf
Arduino - Parte 2.pdfprofwtelles
 
Oficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.orgOficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.orgGuilherme Kruger Araujo
 
Introdução ao arduino palestra
Introdução ao arduino palestraIntrodução ao arduino palestra
Introdução ao arduino palestraVitor Ferreira
 
Arduino - Hardware Livre e Robótica
Arduino -  Hardware Livre e RobóticaArduino -  Hardware Livre e Robótica
Arduino - Hardware Livre e RobóticaMarinho Brandão
 
Projeto tacômetro com arduino
Projeto  tacômetro com arduinoProjeto  tacômetro com arduino
Projeto tacômetro com arduinoJonaspm
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018Alvaro Viebrantz
 
Hack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao ArduinoHack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao ArduinoDiogo Gomes
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Introdução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoIntrodução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoJuan Manoel
 

Semelhante a Tutorial do KIT - Para analisar a qualidade da água (20)

Treinamento arduino (1).pptx
Treinamento arduino (1).pptxTreinamento arduino (1).pptx
Treinamento arduino (1).pptx
 
Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadores
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino
 
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSetApostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
 
Arduino - Parte 2.pdf
Arduino - Parte 2.pdfArduino - Parte 2.pdf
Arduino - Parte 2.pdf
 
3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino3 aula do curso de automação - Arduino
3 aula do curso de automação - Arduino
 
Oficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.orgOficina de Arduino Beta - Matehackers.org
Oficina de Arduino Beta - Matehackers.org
 
Introdução ao arduino palestra
Introdução ao arduino palestraIntrodução ao arduino palestra
Introdução ao arduino palestra
 
Arduino - Hardware Livre e Robótica
Arduino -  Hardware Livre e RobóticaArduino -  Hardware Livre e Robótica
Arduino - Hardware Livre e Robótica
 
Projeto tacômetro com arduino
Projeto  tacômetro com arduinoProjeto  tacômetro com arduino
Projeto tacômetro com arduino
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
 
Hack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao ArduinoHack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao Arduino
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Introdução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoIntrodução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduino
 
Clp ab avancado
Clp ab avancadoClp ab avancado
Clp ab avancado
 
Guia AC mod 5
Guia AC mod 5Guia AC mod 5
Guia AC mod 5
 

Mais de Projetos AEB

Projeto de Autonomia e Flexibilidade Curricular
Projeto de Autonomia e Flexibilidade CurricularProjeto de Autonomia e Flexibilidade Curricular
Projeto de Autonomia e Flexibilidade CurricularProjetos AEB
 
Apresentação no III Encontro Co-Lab (12.06.17 - Coimbra)
Apresentação no III Encontro Co-Lab (12.06.17 - Coimbra)Apresentação no III Encontro Co-Lab (12.06.17 - Coimbra)
Apresentação no III Encontro Co-Lab (12.06.17 - Coimbra)Projetos AEB
 
Relatório final do projeto Rio Lena
Relatório final do projeto Rio LenaRelatório final do projeto Rio Lena
Relatório final do projeto Rio LenaProjetos AEB
 
Ficheiro de problemas sobre o projeto
Ficheiro de problemas sobre o projetoFicheiro de problemas sobre o projeto
Ficheiro de problemas sobre o projetoProjetos AEB
 
Folheto de divulgação do projeto: Rio Lena Engenheiros do futuro em ação
Folheto de divulgação do projeto: Rio Lena Engenheiros do futuro em açãoFolheto de divulgação do projeto: Rio Lena Engenheiros do futuro em ação
Folheto de divulgação do projeto: Rio Lena Engenheiros do futuro em açãoProjetos AEB
 
Poster projeto Rio Lena - Futuros Engenheiros em Ação
Poster projeto Rio Lena - Futuros Engenheiros em Ação Poster projeto Rio Lena - Futuros Engenheiros em Ação
Poster projeto Rio Lena - Futuros Engenheiros em Ação Projetos AEB
 
Rio Lena: Ficha de registo
Rio Lena: Ficha de registoRio Lena: Ficha de registo
Rio Lena: Ficha de registoProjetos AEB
 
Rio Lena: futuros engenheiros em ação (Apresentação Pública)
Rio Lena: futuros engenheiros em ação (Apresentação Pública)Rio Lena: futuros engenheiros em ação (Apresentação Pública)
Rio Lena: futuros engenheiros em ação (Apresentação Pública)Projetos AEB
 
Tutorial Aplicação - Registo de dados
Tutorial Aplicação - Registo de dadosTutorial Aplicação - Registo de dados
Tutorial Aplicação - Registo de dadosProjetos AEB
 

Mais de Projetos AEB (9)

Projeto de Autonomia e Flexibilidade Curricular
Projeto de Autonomia e Flexibilidade CurricularProjeto de Autonomia e Flexibilidade Curricular
Projeto de Autonomia e Flexibilidade Curricular
 
Apresentação no III Encontro Co-Lab (12.06.17 - Coimbra)
Apresentação no III Encontro Co-Lab (12.06.17 - Coimbra)Apresentação no III Encontro Co-Lab (12.06.17 - Coimbra)
Apresentação no III Encontro Co-Lab (12.06.17 - Coimbra)
 
Relatório final do projeto Rio Lena
Relatório final do projeto Rio LenaRelatório final do projeto Rio Lena
Relatório final do projeto Rio Lena
 
Ficheiro de problemas sobre o projeto
Ficheiro de problemas sobre o projetoFicheiro de problemas sobre o projeto
Ficheiro de problemas sobre o projeto
 
Folheto de divulgação do projeto: Rio Lena Engenheiros do futuro em ação
Folheto de divulgação do projeto: Rio Lena Engenheiros do futuro em açãoFolheto de divulgação do projeto: Rio Lena Engenheiros do futuro em ação
Folheto de divulgação do projeto: Rio Lena Engenheiros do futuro em ação
 
Poster projeto Rio Lena - Futuros Engenheiros em Ação
Poster projeto Rio Lena - Futuros Engenheiros em Ação Poster projeto Rio Lena - Futuros Engenheiros em Ação
Poster projeto Rio Lena - Futuros Engenheiros em Ação
 
Rio Lena: Ficha de registo
Rio Lena: Ficha de registoRio Lena: Ficha de registo
Rio Lena: Ficha de registo
 
Rio Lena: futuros engenheiros em ação (Apresentação Pública)
Rio Lena: futuros engenheiros em ação (Apresentação Pública)Rio Lena: futuros engenheiros em ação (Apresentação Pública)
Rio Lena: futuros engenheiros em ação (Apresentação Pública)
 
Tutorial Aplicação - Registo de dados
Tutorial Aplicação - Registo de dadosTutorial Aplicação - Registo de dados
Tutorial Aplicação - Registo de dados
 

Último

Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - DissertaçãoMaiteFerreira4
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreElianeElika
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaronaldojacademico
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresAnaCarinaKucharski1
 

Último (20)

Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - Dissertação
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riqueza
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
 

Tutorial do KIT - Para analisar a qualidade da água

  • 1. KIT - Para analisar a qualidade da água Kit desenvolvido por:      Aplicação por:  Grupo3: Grupo 5: Alexandre Bértolo Rodrigo Ervilha Diogo Carvalhana
  • 2. TUTORIAL  I Parte - Ligação LCD 2 Material: 2 Ligações: 2 Código: 2 II Parte - Ligação sensor de temperatura e humidade 3 Material: 3 Ligações: 3 Código: 3 III Parte - Ligação LEDs 4 Material: 4 Ligações: 4 Código: 4 IV Parte - Botão 5 Material: 5 Ligações: 5 Código: 6 V Parte - Sensor de temperatura da água 6 Material: 6 Ligações: 7 Código: 7 VI Parte - Medidor de pH 8 Material: 8 Ligações: 8 Código: 8 VII Parte - Sensor de turbidez 10 Material: 10 Ligações: 11 Código: 11 VIII Parte - Sensor de conductividad 12 Material: 12 Ligações: 12 Código: 12 IX Parte - Juntar todo o codigo 14 Código: X Final - Incluir as bibliotecas para funcionar 14 1
  • 3. TUTORIAL      I Parte - Ligação LCD  Material: Arduino uno LCD ​BreadBoard Potênciometro 10k Ligações: Código: #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); lcd.print("hello, world!"); } 2
  • 4. TUTORIAL  void loop() { lcd.setCursor(0, 1); lcd.print(millis() / 1000); } II Parte - Ligação sensor de temperatura e humidade  Material:  DTH 22 Ligações: Código: #include <DHT.h> #define DHTPIN 7 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); int chk; float hum; float temp; void setup(){ Serial.begin(9600); 3
  • 5. TUTORIAL  dht.begin(); } void loop(){ hum = dht.readHumidity(); temp= dht.readTemperature(); Serial.print("Humidity: "); Serial.print(hum); Serial.print(" %, Temp: "); Serial.print(temp); Serial.println(" Celsius"); delay(2000); } III Parte - Ligação LEDs  Material: Led Vermelho Led Amarelo Led Verde Resistor de 220 ohm Ligações:  Código:  int ledVermelho = 8; int ledAmarelo = 9; 4
  • 6. TUTORIAL  int ledVerde = 10; void setup() { pinMode(ledVermelho, OUTPUT); pinMode(ledAmarelo, OUTPUT); pinMode(ledVerde, OUTPUT); } void loop() { digitalWrite(ledVerde, LOW); digitalWrite(ledVermelho, HIGH); delay(100); digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, HIGH); delay(100); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, HIGH); delay(100); } IV Parte - Botão  Material: Push Button Resistor de 10 kohm Ligações: 5
  • 7. TUTORIAL  Código: const int buttonPin = 1; const int ledVermelho = 8; const int ledAmarelo = 9; const int ledVerde = 10; int buttonState = 0; void setup() { pinMode(ledVermelho, OUTPUT); pinMode(ledAmarelo, OUTPUT); pinMode(ledVerde, OUTPUT); pinMode(buttonPin, INPUT); } void loop() { buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { digitalWrite(ledVermelho, HIGH); digitalWrite(ledAmarelo, HIGH); digitalWrite(ledVerde, HIGH); } else { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, LOW); } } V Parte - Sensor de temperatura da água  Material: Waterproof sensor 4.7 kohm resistor 6
  • 8. TUTORIAL  Ligações: Código: #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 13 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); Serial.println("Dallas Temperature IC Control Library Demo"); sensors.begin(); } void loop(void) { Serial.print("Requesting temperatures..."); sensors.requestTemperatures(); Serial.println("DONE"); Serial.print("Temperature for the device 1 is: "); Serial.println(sensors.getTempCByIndex(0)); Serial.print("celsius"); } 7
  • 9. TUTORIAL  VI Parte - Medidor de pH  Material: Ph sensor Ligações: Código: #define SensorPin A2 #define Offset 0.00 #define LED 10 #define samplingInterval 20 #define printInterval 200 #define ArrayLenth 40 int pHArray[ArrayLenth]; int pHArrayIndex=0; void setup(void){ pinMode(LED,OUTPUT); Serial.begin(9600); 8
  • 10. TUTORIAL  Serial.println("pH meter experiment!"); } void loop(void){ static unsigned long samplingTime = millis(); static unsigned long printTime = millis(); static float pHValue,voltage; if(millis()-samplingTime > samplingInterval){ pHArray[pHArrayIndex++]=analogRead(SensorPin); if(pHArrayIndex==ArrayLenth)pHArrayIndex=0; voltage = avergearray(pHArray, ArrayLenth)*5.0/1024; pHValue = 3.5*voltage+Offset; samplingTime=millis(); } if(millis() - printTime > printInterval) { Serial.print("Voltage:"); Serial.print(voltage,2); Serial.print(" pH value: "); Serial.println(pHValue,2); digitalWrite(LED,digitalRead(LED)^1); printTime=millis(); } } double avergearray(int* arr, int number){ int i; int max,min; double avg; long amount=0; if(number<=0){ Serial.println("Error number for the array to avraging!/n"); return 0; } if(number<5){ for(i=0;i<number;i++){ amount+=arr[i]; } avg = amount/number; return avg; }else{ if(arr[0]<arr[1]){ min = arr[0];max=arr[1]; } else{ 9
  • 12. TUTORIAL  Ligações: Código: int ledPin = 10; int sensor_in = A4; void setup(){ pinMode(sensor_in, INPUT); } void loop(){ if(digitalRead(sensor_in)==LOW){ digitalWrite(ledPin, HIGH); }else{ digitalWrite(ledPin, LOW); } float sensorValue = analogRead(A4); float voltage = sensorValue * (5.0 / 1024.0); Serial.print("Voltage:"); Serial.print(voltage,2); Serial.print(" NTU value: "); Serial.println(sensorValue); delay(500); } 11
  • 13. TUTORIAL  VIII Parte - Sensor de conductividad  Material:  Sensor de conductividade Ligações:       Código: #include <OneWire.h> #define StartConvert 0 #define ReadTemperature 1 const byte numReadings = 20; byte ECsensorPin = A1; byte DS18B20_Pin = 13; 12
  • 14. TUTORIAL  unsigned int AnalogSampleInterval=25,printInterval=700,tempSampleInterval=850; unsigned int readings[numReadings]; byte index = 0; unsigned long AnalogValueTotal = 0; unsigned int AnalogAverage = 0,averageVoltage=0; unsigned long AnalogSampleTime,printTime,tempSampleTime; float temperature,ECcurrent; OneWire ds(DS18B20_Pin); void setup() { Serial.begin(9600); for (byte thisReading = 0; thisReading < numReadings; thisReading++) readings[thisReading] = 0; TempProcess(StartConvert); AnalogSampleTime=millis(); printTime=millis(); tempSampleTime=millis(); } void loop() { if(millis()-AnalogSampleTime>=AnalogSampleInterval) { AnalogSampleTime=millis(); AnalogValueTotal = AnalogValueTotal - readings[index]; readings[index] = analogRead(ECsensorPin); AnalogValueTotal = AnalogValueTotal + readings[index]; index = index + 1; if (index >= numReadings) index = 0; AnalogAverage = AnalogValueTotal / numReadings; } if(millis()-tempSampleTime>=tempSampleInterval) { tempSampleTime=millis(); temperature = TempProcess(ReadTemperature); TempProcess(StartConvert); } if(millis()-printTime>=printInterval) { printTime=millis(); averageVoltage=AnalogAverage*(float)5000/1024; 13
  • 15. TUTORIAL  Serial.print("Analog value:"); Serial.print(AnalogAverage); Serial.print(" Voltage:"); Serial.print(averageVoltage); Serial.print("mV "); Serial.print("temp:"); Serial.print(temperature); Serial.print("^C EC:"); float TempCoefficient=1.0+0.0185*(temperature-25.0); float CoefficientVolatge=(float)averageVoltage/TempCoefficient; if(CoefficientVolatge<150)Serial.println("No solution!"); else if(CoefficientVolatge>3300)Serial.println("Out of the range!"); else { if(CoefficientVolatge<=448)ECcurrent=6.84*CoefficientVolatge-64.32; else if(CoefficientVolatge<=1457)ECcurrent=6.98*CoefficientVolatge-127; else ECcurrent=5.3*CoefficientVolatge+2278; ECcurrent/=1000; Serial.print(ECcurrent,2); Serial.println("ms/cm"); } } IX Parte - Juntar todo o codigo  Código: // biblioteca #include <LiquidCrystal.h> #include <DHT.h> #include <OneWire.h> #include <DallasTemperature.h> // estado do botão int btnEstado = 0; // defenir pinos const int btnPin = 1; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #define DHTPIN 7 int ledVermelho = 8; 14
  • 16. TUTORIAL  int ledAmarelo = 9; int ledVerde = 10; #define ONE_WIRE_BUS 13 #define SensorPin A2 int sensor_in = A4; byte ECsensorPin = A1; byte DS18B20_Pin = 13; // define o tipo de sensor #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); OneWire oneWire(ONE_WIRE_BUS); DallasTemperature aguatemp(&oneWire); #define Offset 0.00 #define samplingInterval 20 #define pI 20 #define ArrayLenth 40 #define StartConvert 0 #define ReadTemperature 1 const byte numReadings = 20; unsigned int AnalogSampleInterval=20,printInterval=20,tempSampleInterval=20; unsigned int readings[numReadings]; byte index = 0; unsigned long AnalogValueTotal = 0; unsigned int AnalogAverage = 0,averageVoltage=0; unsigned long AnalogSampleTime,printTime,tempSampleTime; float temperature; float ECcurrent; OneWire ds(DS18B20_Pin); // variveis int counter = 1; int chk; float arhum; float artemp; int pHArray[ArrayLenth]; int pHArrayIndex = 0; float aguaph; float conductividade; int conducorrent; // function para pH double avergearray(int* arr, int number) { int i; int max, min; 15
  • 17. TUTORIAL  double avg; long amount = 0; if (number <= 0) { return 0; } if (number < 5) { for (i = 0; i < number; i++) { amount += arr[i]; } avg = amount / number; return avg; } else { if (arr[0] < arr[1]) { min = arr[0]; max = arr[1]; } else { min = arr[1]; max = arr[0]; } for (i = 2; i < number; i++) { if (arr[i] < min) { amount += min; min = arr[i]; } else { if (arr[i] > max) { amount += max; max = arr[i]; } else { amount += arr[i]; } } } avg = (double)amount / (number - 2); } return avg; } // function para conductividade float TempProcess(bool ch) { static byte data[12]; static byte addr[8]; static float TemperatureSum; if(!ch){ if ( !ds.search(addr)) { ds.reset_search(); 16
  • 18. TUTORIAL  return 0; } if ( OneWire::crc8( addr, 7) != addr[7]) { return 0; } if ( addr[0] != 0x10 && addr[0] != 0x28) { return 0; } ds.reset(); ds.select(addr); ds.write(0x44,1); } else{ byte present = ds.reset(); ds.select(addr); ds.write(0xBE); for (int i = 0; i < 9; i++) { data[i] = ds.read(); } ds.reset_search(); byte MSB = data[1]; byte LSB = data[0]; float tempRead = ((MSB << 8) | LSB); TemperatureSum = tempRead / 16; } return TemperatureSum; } // preparação dos pinos void setup(void) { // pin do botão pinMode(btnPin, INPUT); // inicia o lcd lcd.begin(16, 2); // inicia o sensor dht.begin(); // pin dos ldes pinMode(ledVermelho, OUTPUT); pinMode(ledAmarelo, OUTPUT); pinMode(ledVerde, OUTPUT); 17
  • 19. TUTORIAL  // inicia o sensor de temperatura da agua aguatemp.begin(); // inicia o sensor de turbidez pinMode(sensor_in, INPUT); } // codigo void loop(void) { // le o estado do botão e verifica se é precionado ou não btnEstado = digitalRead(btnPin); if (btnEstado == HIGH) { counter = counter + 1; } // le os valores do sensor de ar temp/hump arhum = dht.readHumidity(); artemp = dht.readTemperature(); // le os valores do sensor de temp da agua aguatemp.requestTemperatures(); // le os valores de ph static unsigned long samplingTime = millis(); static unsigned long printTime = millis(); static float pHValue, voltage; if (millis() - samplingTime > samplingInterval) { pHArray[pHArrayIndex++] = analogRead(SensorPin); if (pHArrayIndex == ArrayLenth)pHArrayIndex = 0; voltage = avergearray(pHArray, ArrayLenth) * 5.0 / 1024; pHValue = 3.5 * voltage + Offset; samplingTime = millis(); } if (millis() - printTime > pI) { aguaph = pHValue ; printTime = millis(); } // le os valores de turbidez int aguaturb = analogRead(A4); // le os valores do sensor de conductividade if(millis()-AnalogSampleTime>=AnalogSampleInterval) { AnalogSampleTime=millis(); AnalogValueTotal = AnalogValueTotal - readings[index]; 18
  • 20. TUTORIAL  readings[index] = analogRead(ECsensorPin); AnalogValueTotal = AnalogValueTotal + readings[index]; index = index + 1; if (index >= numReadings) index = 0; AnalogAverage = AnalogValueTotal / numReadings; } if(millis()-tempSampleTime>=tempSampleInterval) { tempSampleTime=millis(); temperature = TempProcess(ReadTemperature); TempProcess(StartConvert); } if(millis()-printTime>=printInterval) { printTime=millis(); averageVoltage=AnalogAverage*(float)5000/1024; conducorrent = averageVoltage; float TempCoefficient=1.0+0.0185*(temperature-25.0); float CoefficientVolatge=(float)averageVoltage/TempCoefficient; if(CoefficientVolatge<10) conductividade = 0.00; else if(CoefficientVolatge>3300) conductividade =0.00; else { if(CoefficientVolatge<=448)ECcurrent=6.84*CoefficientVolatge-64.32; else if(CoefficientVolatge<=1457)ECcurrent=6.98*CoefficientVolatge-127; else ECcurrent=5.3*CoefficientVolatge+2278; ECcurrent/=1000; conductividade = ECcurrent; } } // menu switch (counter) { // lcd temperatura e humdidade do ar case 1: lcd.setCursor(0, 0); lcd.print("Ar-Hum: "); lcd.print(arhum); 19
  • 21. TUTORIAL  lcd.print("%"); lcd.print(" "); lcd.setCursor(0, 1); lcd.print("Ar-Temp: "); lcd.print(artemp); lcd.print((char)223); lcd.print("C"); lcd.print(" "); if (artemp < 23 ) { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, HIGH); } else if (artemp < 30) { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, HIGH); digitalWrite(ledVerde, LOW); } else { digitalWrite(ledVermelho, HIGH); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, LOW); } break; // lcd temperadura da agua case 2: lcd.setCursor(0, 0); lcd.print("Agua-Temperatura: "); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); lcd.print(aguatemp.getTempCByIndex(0)); lcd.print((char)223); lcd.print("C"); lcd.print(" "); if (aguatemp.getTempCByIndex(0) < 23 ) { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, HIGH); } else if (aguatemp.getTempCByIndex(0) < 30) { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, HIGH); digitalWrite(ledVerde, LOW); } else { digitalWrite(ledVermelho, HIGH); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, LOW); 20
  • 22. TUTORIAL  } break; case 3: lcd.setCursor(0, 0); lcd.print("Agua-PH: "); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); lcd.print(aguaph); lcd.print("pH"); lcd.print(" "); if (aguaph < 5 ) { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, HIGH); } else if (aguaph < 10) { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, HIGH); digitalWrite(ledVerde, LOW); } else { digitalWrite(ledVermelho, HIGH); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, LOW); } break; case 4: lcd.setCursor(0, 0); lcd.print("Agua-Turbidez: "); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); lcd.print(aguaturb); lcd.print("NTU"); lcd.print(" "); if (aguaturb < 50 ) { digitalWrite(ledVermelho, HIGH); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, LOW); } else if (aguaturb < 150) { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, HIGH); digitalWrite(ledVerde, LOW); } else { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, LOW); 21
  • 23. TUTORIAL  digitalWrite(ledVerde, HIGH); } break; case 5: lcd.setCursor(0, 0); lcd.print("Agua-Condut: "); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(conductividade); lcd.print("ms/cm"); lcd.print(" "); lcd.print(conducorrent); lcd.print("mV"); lcd.print(" "); if (conductividade < 5 ) { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, HIGH); } else if (conductividade < 10) { digitalWrite(ledVermelho, LOW); digitalWrite(ledAmarelo, HIGH); digitalWrite(ledVerde, LOW); } else { digitalWrite(ledVermelho, HIGH); digitalWrite(ledAmarelo, LOW); digitalWrite(ledVerde, LOW); } break; default: counter = counter - 5; break; } } 22
  • 24. TUTORIAL  ​X - Incluir as bibliotecas para funcionar 1. No projeto deverá ir em Sketch - Incluir biblioteca - Adicionar .zip 2. Incluir todas as bibliotecas necessárias para este projecto repetindo o processo várias vezes. 23
  • 26. TUTORIAL  3. Separar as informações  a. Data e Local  b. Dados a guardar  c. Botões  4. Adicionar colunas e linhas                                                      5. Renomear para se poder orientar melhor    No canto inferior direito existe as  opções apagar e renomear.                Podem consultar o tutorial em  https://www.slideshare.net/projetosaeb/tutorial-aplicao-registo-de-dados    25