/******************************************************************************* * * Projeto 85: Conectando vários sensores DS18B20 em um único pino do Arduino * Autor: Angelo Luis Ferreira * Data: 30/06/2020 * http://squids.com.br/arduino * *******************************************************************************/ #include #include #include // define a conexão do terminal de sinal do DS18B20 e o botão com o Arduino const byte sensorPin = 2; const byte botPin = 10; // define o estado do botão byte menu = 0; // declara a variável que receberá o número de sensores conectados byte nSensores = 0; // instancia a classe OneWire da biblioteca "OneWire.h" com o nome "pin" OneWire oneWire(sensorPin); // instancia a classe DallasTemperatura da biblioteca DallasTemperature.h com o nome "bus" DallasTemperature bus(&oneWire); // Inicializa o LCD com o módulo I2C LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE); // Declara o vetor "sensor" para armazenar temperaturas dos sensores conectados float sensor[0]; void setup() { bus.begin(); // inicializa o objeto sensor Serial.begin(9600);// inicia monitor serial lcd.begin(16, 2); // inicia lcd pinMode(botPin, INPUT_PULLUP); // define botão como pullup interno do Arduino lcd.clear(); // limpa o disply nSensores = bus.getDeviceCount(); // obtem o número de sensores conectados } void loop() { // faz leitura do sensor bus.requestTemperatures(); // permite a leitura dos sensores // faz leituras de todos sensores for (int i = 0; i < nSensores; i++) { sensor[i+1] = bus.getTempCByIndex(i); Serial.println(sensor[i+1]); } // verifica se o botão foi pressionado para mudar de local if (!digitalRead(botPin)) { menu++; if(menu>nSensores) menu=0; lcd.clear(); exibir(); while(!digitalRead(botPin)) {}; delay(50); } else exibir(); //exibir temperaturas } void exibir() { /* * Sensores verificados previamente * Sala = sensor[2] * Quarto = sensor[1] * Piscina = sensro[3] * */ switch(menu) { case 0: lcd.setCursor(0,0); lcd.print("Controle Squids"); lcd.setCursor(0,1); lcd.print("N. Sensores = "); lcd.print(nSensores); break; case 1: lcd.setCursor(0,0); lcd.print("SALA"); lcd.setCursor(0,1); lcd.print("Temp.: "); lcd.print(sensor[2]); lcd.write(B11011111); lcd.print("C"); break; case 2: lcd.setCursor(0,0); lcd.print("QUARTO"); lcd.setCursor(0,1); lcd.print("Temp.: "); lcd.print(sensor[1]); lcd.write(B11011111); lcd.print("C"); break; case 3: lcd.setCursor(0,0); lcd.print("PISCINA"); lcd.setCursor(0,1); lcd.print("Temp.: "); lcd.print(sensor[3]); lcd.write(B11011111); lcd.print("C"); break; } }