Je cherche a étalonné ma sonde TDS ( KEYESTUDIO V1) avec un étalon de type NaCl 342 PPM.
J'ai créer un programme compatible avec ce que je veut faire, néanmoins je ne trouve pas comment programmer avec un potentiomètre ou un interrupteur pour incrémenter ou décrémenter la valeur de lecture de sortie de l'afficheur.
Quel sont les fonctions pour faire varié la valeur de sortie simplement sachant que la valeur ajusté doit se garder en mémoire après une coupure d'alimentation du Arduino Nano.
Je pense qu'il faut que je connecte un potentiomètre sur une entrée analogique, puis lire cette valeur. La valeur lu serait la valeur zéro. Ensuite le fait de décaler le potentiomètre dans le sens horaire et anti horaire ferait variè la valeur de sortie de ma sonde TDS sur mon LCD. Fonctionnant comme un off Set.
Une âme charitable pour m'aiguiller?
Voici mon code fonctionnant parfaitement avec mon montage:
[code]
#include <EEPROM.h>
#include "GravityTDS.h"
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define TdsSensorPin A1 // Where Analog pin of TDS sensor is connected to arduino
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
GravityTDS gravityTds;
float tdsValue = 0;
void setup()
{
Serial.begin(115200);
gravityTds.setPin(TdsSensorPin);
gravityTds.setAref(5.0); //reference voltage on ADC, default 5.0V on Arduino UNO
gravityTds.setAdcRange(1024); //1024 for 10bit ADC;4096 for 12bit ADC
gravityTds.begin(); //initialization
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
pinMode(2,OUTPUT); //règle la borne numérique numéro 2 de la carte Arduino en mode sortie LED ROUGE
pinMode(3,OUTPUT); //règle la borne numérique numéro 3 de la carte Arduino en mode sortie LED ORANGE
pinMode(4,OUTPUT); //règle la borne numérique numéro 4 de la carte Arduino en mode sortie LED VERTE
}
void loop()
{
gravityTds.update(); //calculation done here from gravity library
tdsValue = gravityTds.getTdsValue(); // then get the TDS value
Serial.print("TDS value is:");
Serial.print(tdsValue,0);
Serial.println("ppm");
delay(2000);
//clear display
display.clearDisplay();
// display conductivity
display.setTextSize(2);
display.setCursor(0,12);
display.print("Cond: ");
display.setTextSize(2);
display.setCursor(60,12);
display.print(tdsValue,0);
display.setTextSize(2);
display.setCursor(104,12);
display.cp437(true);
display.write(230);
display.print("S");
if (tdsValue < 50) {
digitalWrite(4,HIGH); //le courant est envoyé sur la borne 2, la led verte s'allume
}
if (tdsValue > 50) {
digitalWrite(4,LOW); //le courant se coupe sur la borne 2, la led verte s'eteint
}
if (tdsValue > 50) {
digitalWrite(3,HIGH); //le courant est envoyé sur la borne 2, la led orange s'allume
}
if (tdsValue > 80) {
digitalWrite(3,LOW); //le courant se coupe sur la borne 2, la led orange s'eteint
}
if (tdsValue < 50) {
digitalWrite(3,LOW); //le courant se coupe sur la borne 2, la led orange s'eteint
}
if (tdsValue > 80) {
digitalWrite(2,HIGH); //le courant est envoyé sur la borne 2, la led route s'allume
}
if (tdsValue < 80) {
digitalWrite(2,LOW); //le courant se coupe sur la borne 2, la led route s'eteint
}
display.display();
}
[/code]