Capteur de pression d'eau

Bonjour,

Dans le cadre d'un projet étudiants nous souhaitons créer un système composé d'une carte Arduino Uno, d'un capteur de pression hydraulique, d'un écran "2.8" SPI TFT Module" (la partie tactile ne nous intéresse pas ici), et pourquoi pas quelques leds dans le futur. Notre but est d'afficher la pression du capteur ainsi que la profondeur correspondante.

Nous aimerons adapter le code suivant (fonctionnant sur écran I2C) afin qui soit fonctionnel sur notre écran "2.8" SPI TFT Module".

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Largeur de l'écran OLED en pixels
#define SCREEN_HEIGHT 64 // Hauteur de l'écran OLED en pixels
#define OLED_RESET     -1 // Broche de réinitialisation # (ou -1 si elle partage la broche de réinitialisation de l'Arduino)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const float OffSet = 0.45 ;
int psensor = A0;
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
float V, P;


void setup()
{
 Serial.begin(9600);        // ouvrir le port série, définir le débit en bauds à 9600 bps
 pinMode(psensor, INPUT);
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);
 pinMode(led4, OUTPUT);
 pinMode(led5, OUTPUT);


 digitalWrite(led1, LOW);
 digitalWrite(led2, LOW);
 digitalWrite(led3, LOW);
 digitalWrite(led4, LOW);
 digitalWrite(led5, LOW);
 Serial.println("/** Démo du capteur de pression d'eau **/");
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 delay(2000);
 display.clearDisplay();
 display.setTextColor(WHITE);
}
void loop()
{
 // Connectez le capteur à l'Analogique 0
 V = analogRead(psensor) * 5.00 / 1024;     // Tension de sortie du capteur
 P = (V - OffSet) * 250;             // Calcul de la pression de l'eau


 Serial.print("Tension :");
 Serial.print(V, 3);
 Serial.println("V");


 Serial.print(" Pression :");
 Serial.print(P, 1);
 Serial.println(" kPa");
 Serial.println();
 display.clearDisplay();
 display.setCursor(10, 0);
 display.setTextSize(2);
 display.setTextColor(WHITE);
 display.print("Valeur :");
 display.setCursor(10, 30);
 display.setTextSize(2);
 display.print(P);
 display.print(" kPa");
 display.display();

 if ((P > 0) && (P <= 10))
 {
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
   digitalWrite(led3, LOW);
   digitalWrite(led4, LOW);
   digitalWrite(led5, LOW);
 }
 else if ((P > 10) && (P <= 20))
 {
   digitalWrite(led1, HIGH);
   digitalWrite(led2, LOW);
   digitalWrite(led3, LOW);
   digitalWrite(led4, LOW);
   digitalWrite(led5, LOW);
 }
 else if ((P > 20) && (P <= 40))
 {
   digitalWrite(led1, HIGH);
   digitalWrite(led2, HIGH);
   digitalWrite(led3, LOW);
   digitalWrite(led4, LOW);
   digitalWrite(led5, LOW);
 }
 else if ((P > 40) && (P <= 60))
 {
   digitalWrite(led1, HIGH);
   digitalWrite(led2, HIGH);
   digitalWrite(led3, HIGH);
   digitalWrite(led4, LOW);
   digitalWrite(led5, LOW);
 }
 else if ((P > 60) && (P <= 80))
 {
   digitalWrite(led1, HIGH);
   digitalWrite(led2, HIGH);
   digitalWrite(led3, HIGH);
   digitalWrite(led4, HIGH);
   digitalWrite(led5, LOW);
 }
 else if (P >= 95)
 {
   digitalWrite(led1, HIGH);
   digitalWrite(led2, HIGH);
   digitalWrite(led3, HIGH);
   digitalWrite(led4, HIGH);
   digitalWrite(led5, HIGH);
 }


 delay(100);
}

(Pour les curieux le but est une aide à la plongée sous-marine afin que les plongeurs puissent connaitre leur profondeur en temps réel).

Merci d'avance pour votre aide !

:warning:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ je l’ai déplacé vers le forum francophone pour vous pour cette fois...

Merci de prendre en compte les recommandations listées dans « Les bonnes pratiques du Forum Francophone”


Quelle aide attendez vous ?

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