Talvez eu tenha complicado as coisas ao tentar explicar o projeto por completo.
Hoje fiz novos testes, e enviando somente um sinal analógico (1V fornecido por uma fonte que temos no lab), consegui ler esse 1V através do multiplexer em todos os pinos que queria. Para isso, usei esse código:
/*Teste para tentar ler 1V de sinal no Arduino através do Multiplexer*/
/*Bibliotecas*/
#include <ESP8266WiFi.h>
/*existe biblioteca para multiplexer?*/
#define TEMPO_ENTRE_LEITURAS 1000 //ms
float pVoltage[3];
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(12, OUTPUT); //D6
pinMode(14, OUTPUT); //D5
pinMode(0, OUTPUT); //D3
pinMode(2, OUTPUT); //D4
}
void loop() {
// put your main code here, to run repeatedly:
mux (0,1,1,1); //(0,0,0,0) Set the multiplexer to door 0
delay(2000);
pVoltage[0] = analogRead(A0)*5.0/1024.0; // analog sensor is 5v-0v
Serial.print("Sinal 1: ");
Serial.print(pVoltage[0]);
Serial.println("V");
mux (0,1,1,0);
delay(2000);
pVoltage[1] = analogRead(A0)*5.0/1024.0; // analog sensor is 5v-0v
Serial.print("Sinal 2: ");
Serial.print(pVoltage[1]);
Serial.println("V");
mux (0,1,0,1);
delay(2000);
pVoltage[2] = analogRead(A0)*5.0/1024.0; // analog sensor is 5v-0v
Serial.print("Sinal 3: ");
Serial.print(pVoltage[2]);
Serial.println("V");
delay(TEMPO_ENTRE_LEITURAS);
}
void mux (int state1,int state2,int state3,int state4){
digitalWrite(12, state1); //D6
digitalWrite(14, state2); //D5
digitalWrite(2, state3); //D4
digitalWrite(0, state4); //D3
}
Após conseguir isso, o que tentei foi passar para o próximo nível: ler a temperatura pelo sensor MAX6675. Tentei utilizar esse código:
/*Teste para tentar ler temperatura no Arduino através do Multiplexer*/
/*Bibliotecas*/
#include <ESP8266WiFi.h>
#include <max6675.h>
/*existe biblioteca para multiplexer?*/
#define TEMPO_ENTRE_LEITURAS 1000 //ms
#define pin_SO 5 //D1
#define pin_CLK 4 //D2
float pin_Temp[3];
MAX6675 termopar(pin_CLK, pin_Temp[3], pin_SO);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(12, OUTPUT); //D6
pinMode(14, OUTPUT); //D5
pinMode(0, OUTPUT); //D3
pinMode(2, OUTPUT); //D4
pinMode(13, INPUT); //D7
}
void loop() {
// put your main code here, to run repeatedly:
mux (0,1,1,1); //(0,0,0,0) Set the multiplexer to door 0
delay(2000);
//pin_Temp[0] = termopar.readCelsius();
Serial.print("Temperatura 1: ");
Serial.print(termopar.readCelsius());
Serial.println("C");
mux (0,1,1,0); //(0,0,0,0) Set the multiplexer to door 0
delay(2000);
pin_Temp[1] = termopar.readCelsius();
Serial.print("Temperatura 2: ");
Serial.print(pin_Temp[1]);
Serial.println("C");
mux (0,1,0,1); //(0,0,0,0) Set the multiplexer to door 0
delay(2000);
//pin_Temp[2] = termopar.readCelsius();
Serial.print("Temperatura 3: ");
Serial.print(termopar.readCelsius());
Serial.println("C");
delay(TEMPO_ENTRE_LEITURAS);
}
void mux (int state1,int state2,int state3,int state4){
digitalWrite(12, state1); //D6
digitalWrite(14, state2); //D5
digitalWrite(2, state3); //D4
digitalWrite(0, state4); //D3
digitalRead(13);
}
Mas tudo que consigo no Serial Monitor do Arduino são leituras de Temperatura 1 = Temperatura 2 = Temperatura 3 = 0.00 ºC. Como se não houvesse qualquer tipo de leitura.
Não consigo descobrir onde está o erro. As conexões foram feitas igual está representado no desenho que fiz no paint (existem resistores 10k no caminho do fio amarelo que esqueci de representar).