Arduino UNO to MKR 1400

Hi. I finish a project envolving 5 relays, 5 sensors, 1 water flow sensor and 8 buttons. Everything runs ok with my arduino uno connected to the 3.3 volt pin but now i want to migrate the project to an MKR GSM 1400 to give connectivity to the project. The problem is the relays (Grove 1.2) that turn on the inbuilt led but don't activate the relay. I have detected that UNO 3.3V pin gives an output of 3.33V and MKR 1400 gives a VCC pin output of 3.29-3-30.
I connect all the VCC and ground to Uno and the communication cables to MKR but the problem remains the same. Any idea to solve the problem? Sketch below (incomplete because it's bigger than 9000 characters and forum do not accept it). Thanks in advance.

//PINS
int rele_fim = 3;
int rele_natural = 4;
int rele_fria = 5;
int rele_sensores = 6;
int rele_enchimento = 7;



// conta litros
volatile int flow_frequency; // Mede os pulsos
unsigned char flowsensor = 1; // Pin sensor água tem que ser um attatchinterrupt da placa
float contagem_total = 0;





//Variáveis
int botao = 0;
bool botao_ocupado = false;
int last_botao = 0;
int last_fluxo = 0; //backup para recomeço
int last_estado = 0; //backup para recomeço
int fluxo1 = 300;
int fluxo2 = 500;
int fluxo3 = 1000;
int fluxo4 = 1000;
int fluxo5 = 1000;
int fluxo6 = 1000;
int estado1 = 1;
int estado2 = 2;
int estado3 = 1;
int estado4 = 1;
int estado5 = 1;
int estado6 = 1;





void flow () // Interrupt function
{
  flow_frequency++;
}



void setup() {

  Serial.begin (9600);
  pinMode(rele_enchimento, OUTPUT);
  pinMode(rele_fim, OUTPUT);
  pinMode(rele_natural, OUTPUT);
  pinMode(rele_fria, OUTPUT);
  pinMode(rele_sensores, OUTPUT);
  pinMode(flowsensor, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(flowsensor), flow, RISING);

}




void loop() {


  //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ESTADOS INICIAIS
  digitalWrite(rele_enchimento, LOW);
  digitalWrite(rele_fim, LOW);
  digitalWrite(rele_natural, LOW);
  digitalWrite(rele_fria, LOW);
  digitalWrite(rele_sensores, LOW);



  //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Definição de Botões


  botao = analogRead(A1);


  if (botao > 10) {

    if (botao_ocupado == false) {
      if (botao > 560)    {
        delay(200);
        last_estado = estado2;
        last_fluxo = fluxo2;
        last_botao = 2;
      }
      else if (botao > 510)    {
        delay(200);
        last_fluxo = fluxo2;
        last_estado = estado1;
        last_botao = 1;
      }
      else if (botao > 1001)    {
        delay(200);
        last_fluxo = fluxo3;
        last_botao = 3;
      }
      else if (botao > 1002)    {
        delay(200);
        last_fluxo = fluxo4;
        last_botao = 4;
      }
      else if (botao > 1003)    {
        delay(200);
        last_fluxo = fluxo5;
        last_botao = 5;
      }
      else if (botao > 1004)    {
        delay(200);
        last_fluxo = fluxo6;
        last_botao = 6;
      }
      else if (botao > 1006)    {  //>>>>>>>>>>>>>>>>>>>>>>>>>>>< BOTÃO RECOMEÇAR
        delay(200);
        last_botao = 7;
      }
    }
  }




  //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<>>>>>>>>>>ARRANQUE DO CONTADOR E ZERAR A CONTAGEM

  if (last_botao > 0)     {
    botao_ocupado = true;
    contagem_pulsos();
  }

  if (last_botao == 0)    {
    contagem_total = 0;
    flow_frequency = 0;
  }




  //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>BOTÃO 1

  if (last_botao == 1) {
    if (contagem_total < fluxo1 - 80) {
      if (estado1 == 1) {
        digitalWrite(rele_natural, HIGH);
      }
      if (estado1 == 2) {
        digitalWrite(rele_fria, HIGH);
      }
      digitalWrite(rele_enchimento, HIGH);
      digitalWrite(rele_fim, LOW);

    }
    else if (contagem_total < fluxo1) {
      if (estado1 == 1) {
        digitalWrite(rele_natural, HIGH);
      }
      if (estado1 == 2) {
        digitalWrite(rele_fria, HIGH);
      }
      digitalWrite(rele_enchimento, LOW);
      digitalWrite(rele_fim, HIGH);
    }
    else if (contagem_total == fluxo1 || contagem_total < fluxo1) {
      digitalWrite(rele_enchimento, LOW);
      digitalWrite(rele_fim, LOW);
      digitalWrite(rele_natural, LOW);
      digitalWrite(rele_fria, LOW);
      last_botao = 0;
      last_estado = 0;
      last_fluxo = 0;
      botao_ocupado = false;
    } 
  }




  //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>BOTÃO 2

  if (last_botao == 2) {
    if (contagem_total < fluxo2 - 80) {
      if (estado2 == 1) {
        digitalWrite(rele_natural, HIGH);
      }
      if (estado2 == 2) {
        digitalWrite(rele_fria, HIGH);
      }
      digitalWrite(rele_enchimento, HIGH);
      digitalWrite(rele_fim, LOW);

    }
    else if (contagem_total < fluxo2) {
      if (estado2 == 1) {
        digitalWrite(rele_natural, HIGH);
      }
      if (estado2 == 2) {
        digitalWrite(rele_fria, HIGH);
      }
      digitalWrite(rele_enchimento, LOW);
      digitalWrite(rele_fim, HIGH);
    }
    else if (contagem_total == fluxo2 || contagem_total < fluxo2) {
      digitalWrite(rele_enchimento, LOW);
      digitalWrite(rele_fim, LOW);
      digitalWrite(rele_natural, LOW);
      digitalWrite(rele_fria, LOW);
      last_botao = 0;
      last_estado = 0;
      last_fluxo = 0;
      botao_ocupado = false;
    }
  }

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.