In first time change on setup of test code to:
Code: Select all
Serial3.begin(9600);Then, only send SERIAL,38400
Don't forget to change the serial monitor to finish command with carriage return.
Warning: The code below isn't needed for latest Ferduino available on Github.
Replace all content of "Stamps.ino" with:
Code: Select all
//------------------------------------- Leitura dos stamps
void check_parametro_ph_aquario()
{
  boolean done = false;
  byte holding;
  char sensorstring[15];
  do{
    Open_channel(ph1);
    delay(50);
    while(Serial3.available())
    {
      char c = Serial3.read();
    }
    Serial3.print("T,");
    Serial3.print(tempC);
    Serial3.print('\r');
    delay(1000);
    Serial3.print("R"); // Envia um comando.
    Serial3.print('\r');
    delay(1000);
    if(Serial3.available() > 3)
    {
      holding = Serial3.available();
      for(byte i=1; i <= holding; i++)
      {
        sensorstring[i]= Serial3.read();
      }
      if(holding == 6)
      {
        PHA = ((sensorstring[1]-48)*100 + (sensorstring[3]-48)*10 + (sensorstring[4]-48));
        PHA /= 100;
      }
      else
      {
        PHA = ((sensorstring[1]-48)*1000 + (sensorstring[2]-48)*100 + (sensorstring[4]-48)*10 + (sensorstring[5]-48));
        PHA /= 100;
      }
      Serial3.flush();
      break;
    }
  }
  while (done == true);
}
void check_parametro_ph_reator()
{
  boolean done = false;
  byte holding;
  char sensorstring[15];
  do{
    Open_channel(ph2);
    delay(50);
    while(Serial3.available())
    {
      char c = Serial3.read();
    }
    Serial3.print("T,");
    Serial3.print(tempC);
    Serial3.print('\r');
    delay(1000);
    Serial3.print("R"); // Envia um comando.
    Serial3.print('\r');
    delay(1000);
    if(Serial3.available() > 3)
    {
      holding = Serial3.available();
      for(byte i=1; i <= holding; i++)
      {
        sensorstring[i]= Serial3.read();
      }
      if(holding == 6)
      {
        PHR = ((sensorstring[1]-48)*100 + (sensorstring[3]-48)*10 + (sensorstring[4]-48));
        PHR /= 100;
      }
      else
      {
        PHR = ((sensorstring[1]-48)*1000 + (sensorstring[2]-48)*100 + (sensorstring[4]-48)*10 + (sensorstring[5]-48));
        PHR /= 100;
      }
      Serial3.flush();
      break;
    }
  }
  while (done == true);
}
void check_parametro_orp()
{
  boolean done = false;
  byte holding;
  char sensorstring[15];
  do{
    Open_channel(orp);
    delay(50);
   
    while(Serial3.available())
    {
      char c = Serial3.read();
    }
   
    Serial3.print("R"),
    Serial3.print('\r');
    delay(1000);
    if(Serial3.available() > 3)
    {
      holding = Serial3.available();
      for(byte i = 1; i <= holding; i++)
      {
        sensorstring[i]= Serial3.read();
      }
      if(holding == 5)
      {
        ORP = ((sensorstring[1]-48)*10 + (sensorstring[2]-48));
      }
      else
      {
        ORP = ((sensorstring[1]-48)*100 + (sensorstring[2]-48)*10 + (sensorstring[3]-48));
      }
      Serial3.flush();     
      break;
    }
  }
  while (done == true);
}
void check_parametro_densidade()
{
  boolean done = false;
  byte holding;
  char sensorstring[15];
  do{
    Open_channel(ec);
    delay(50);
    while(Serial3.available())
    {
      char c = Serial3.read();
    }
    Serial3.print("T,");
    Serial3.print(tempC);
    Serial3.print('\r');
    delay(1000);
    Serial3.print("R"); // Envia um comando.
    Serial3.print('\r');
    delay(1000);
    if(Serial3.available() > 3)
    {
      holding = Serial3.available();
      for(byte i=1; i <= holding; i++)
      {
        sensorstring[i]= Serial3.read();
      }
      if(holding == 6)
      {
        DEN = ((sensorstring[1]-48)*1000 + (sensorstring[3]-48)*100 + ((sensorstring[4]-48)*10) + (sensorstring[5]-48));
      }
      Serial3.flush();
      break;
    }
  }
  while (done == true);
}
void iniciar_stamp_ph_aquario()
{
  Open_channel(ph1); // Open channel for tank pH
  delay(50);
  Serial3.print("R"); // To get a value
  Serial3.print('\r');
  delay(1000);
  Serial3.print("C,0"); // To stop continuous reading
  Serial3.print('\r');
  delay(1000);
  Serial3.print("L,0"); // To turn off the LEDs of debug
  Serial3.print('\r');
  delay(1000);
  Serial3.print("RESPONSE,0"); // To disable response code
  Serial3.print('\r');
  delay(1000);
  check_parametro_ph_aquario();
}
void iniciar_stamp_ph_reator()
{
  Open_channel(ph2);
  delay(50);
  Serial3.print("R"); // To get a value
  Serial3.print('\r');
  delay(1000);
  Serial3.print("C,0"); // To stop continuous reading
  Serial3.print('\r');
  delay(1000);
  Serial3.print("L,0"); // To turn off the LEDs of debug
  Serial3.print('\r');
  delay(1000);
  Serial3.print("RESPONSE,0"); // To disable response code
  Serial3.print('\r');
  delay(1000);
  check_parametro_ph_reator();
}
void iniciar_stamp_orp()
{
  Open_channel(orp);
  Serial3.print("R"); // To get a value
  Serial3.print('\r');
  delay(1000);
  Serial3.print("C,0"); // To stop continuous reading
  Serial3.print('\r');
  delay(1000);
  Serial3.print("L,0"); // To turn off the LEDs of debug
  Serial3.print('\r');
  delay(1000);
  Serial3.print("RESPONSE,0"); // To disable response code
  Serial3.print('\r');
  delay(1000);
  check_parametro_orp();
}
void iniciar_stamp_densidade()
{
  Open_channel(ec); // To open channel for salinity
  delay(50);
  Serial3.print("R"); // To get a value
  Serial3.print('\r');
  delay(1000);
  Serial3.print("C,0"); // To stop continuous reading
  Serial3.print('\r');
  delay(1000);
  Serial3.print("L,0"); // To turn OFF the  LEDs of debug
  Serial3.print('\r');
  delay(1000);
  Serial3.print("RESPONSE,0"); // To disable response code
  Serial3.print('\r');
  delay(1000);
  Serial3.print("O,EC"); // Disable EC reading.
  Serial3.print('\r');
  delay(1000);
  Serial3.print("O,TDS"); // Disable TDS reading.
  Serial3.print('\r');
  delay(1000);
  Serial3.print("O,S"); // Disable salinity reading
  Serial3.print('\r');
  delay(1000);
  check_parametro_densidade();
}
void Open_channel(short channel)
{
  switch (channel)
  {
  case 0:
    //open channel Y0
    //S0=0
    //S1=0
    digitalWrite(multiplexadorS0Pin, LOW);
    digitalWrite(multiplexadorS1Pin, LOW);
    break;
  case 1:
    //open channel Y1
    //S0=1
    //S1=0
    digitalWrite(multiplexadorS0Pin, HIGH);
    digitalWrite(multiplexadorS1Pin, LOW);
    break;
  case 2:
    //open channel Y2
    //S0=0
    //S1=1
    digitalWrite(multiplexadorS0Pin, LOW);
    digitalWrite(multiplexadorS1Pin, HIGH);
    break;
  case 3:
    //open channel Y3
    //S0=1
    //S1=1
    digitalWrite(multiplexadorS0Pin, HIGH);
    digitalWrite(multiplexadorS1Pin, HIGH);
    break;
  }
  Serial3.print('\r');
  return;
}
On setup find:
Code: Select all
    iniciar_stamp_ph_reator();    // Lê o pH do reator
    iniciar_stamp_orp();          // Lê a ORP
    // iniciar_stamp_densidade();    // Lê a densidade
    iniciar_stamp_ph_aquario();   // Lê o pH do aquário
Comment or uncomment the functions according to your requirements.
On loop find:
Code: Select all
      check_parametro_ph_reator(); // Verifica os "stamps".
      check_parametro_orp(); 
      //      check_parametro_densidade(); 
      check_parametro_ph_aquario();
Comment or uncomment the functions according to your requirements.

 Portal
Portal Forum
Forum Login
Login Register
Register Search
Search Contact
Contact Images
Images Videos
Videos Web Control
Web Control

 
                            
                        

