Skip to content

Instantly share code, notes, and snippets.

@Franck1333
Created July 6, 2020 17:43
Show Gist options
  • Save Franck1333/b5400f425e3a0cbf135d5d6d5388da7e to your computer and use it in GitHub Desktop.
Save Franck1333/b5400f425e3a0cbf135d5d6d5388da7e to your computer and use it in GitHub Desktop.
Programme Arduino simple ayant pour but de tester la valeur du bouton d'action pour déclencher oui/non le relay connecter a la pompe.
//This example has to be used with any SSD1306 screen Vertical/Horizontal screen with ~1" spec.
//This example use the Adafruits libs.
//AIDE: http://adafruit.github.io/Adafruit_SSD1306/html/index.html
//AIDE: https://projetsdiy.fr/ssd1306-mini-ecran-oled-i2c-128x64-arduino/
//---DECLARATION_SCREEN---
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//---DECLARATION_SCREEN---
//-------------FONCTION_PRINCIPALE-------------
const int RELAY = 3; //Pin Signale du Relay
const int BOUTON = 4; //Pin Signale du Bouton de commande
//-------------FONCTION_PRINCIPALE-------------
void setup() {
Serial.begin(9600);
//---INIT_SCREEN---
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
// Show initial display buffer contents on the screen --
// the library initializes this with an Adafruit splash screen.
display.display();
// Clear the buffer
display.clearDisplay();
delay(2048);
// display.display() is NOT necessary after every single drawing command,
// unless that's what you want...rather, you can batch up a bunch of
// drawing operations and then update the screen all at once by calling
// display.display(). These examples demonstrate both approaches...
//---INIT_SCREEN---
//---INIT_PIN---
pinMode(RELAY, OUTPUT); //Initialisation du Pin Signale du Relay
pinMode(BOUTON,OUTPUT); //Initialisation du Pin Signale du Bouton de commande
//---INIT_PIN---
//HelloWorld();
//TestLigneAffichage();
}
void loop() {
// put your main code here, to run repeatedly:
Tirage();
}
void HelloWorld(void){
display.clearDisplay(); //Nettoyage du 'buffer' de l'ecran
Serial.println("HelloWorld!!!"); //Message visible dans la console
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,0); // On va ecrire en x=0, y=0
display.print("Hello,"); // Un print pour écrire du texte sur l'ecran
display.println(" world!"); // Un println pour écrire du texte sur l'ecran
display.display(); // Affichage du Resultat
}
void TestLigneAffichage(void){
display.clearDisplay(); //Nettoyage du 'buffer' de l'ecran
Serial.println("Teste d'affichage de l'ecran OLED."); //Message visible dans la console
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,0); // On va ecrire en x=0, y=0
display.print("Ligne d'affichage 1"); // Un println pour écrire du texte sur l'ecran
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,10); // On va ecrire en x=0, y=10
display.print("Ligne d'affichage 2"); // Un println pour écrire du texte sur l'ecran
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,20); // On va ecrire en x=0, y=20
display.print("Ligne d'affichage 3"); // Un println pour écrire du texte sur l'ecran
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,30); // On va ecrire en x=0, y=30
display.print("Ligne d'affichage 4"); // Un println pour écrire du texte sur l'ecran
display.display(); // Affichage du Resultat
}
void Tirage(void){
bool BOUTON_ETAT = digitalRead(BOUTON); //Enregistrement de la Valeur detectee au Pin Signale du Bouton de commande
//Serial.print("Etat Bouton: ");
//Serial.println(BOUTON_ETAT);
if(BOUTON_ETAT == true) //Si le bouton n'est pas actionner alors...
{
display.clearDisplay(); //Nettoyage du 'buffer' de l'ecran
Serial.println("Bouton Non Actionner donc Relay OUVERT,"); //Message dans la console serie
Serial.println("Aucun flux eletrique ne passe."); //Message dans la console serie
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,0); // On va ecrire en x=0, y=0
display.print("En Attente..."); // Un println pour écrire du texte sur l'ecran
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,10); // On va ecrire en x=0, y=10
display.print("Distrib Dispo..."); // Un println pour écrire du texte sur l'ecran
//Volume de liquide deplacer par la pompe
//D'apres la doc (https://tinyurl.com/GikfunMiniPompeaAIR), la pompe deplace 1,5 Litre/Minutes
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,20); // On va ecrire en x=0, y=20
display.print("Volume 1,5L/Min"); // Un println pour écrire du texte sur l'ecran
digitalWrite(RELAY,LOW); //...Alors le RELAY sera DESACTIVER.
display.display(); // Affichage du Resultat
delay(512);
}
else if (BOUTON_ETAT == false) //Si le bouton est actionner alors...
{
display.clearDisplay(); //Nettoyage du 'buffer' de l'ecran
Serial.println("Bouton Actionner donc Relay FERMER,"); //Message a lire dans la console serie
Serial.println("Un flux eletrique passe."); //Message a lire dans la console serie
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,0); // On va ecrire en x=0, y=0
display.print("En Service..."); // Un println pour écrire du texte sur l'ecran
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,13); // On va ecrire en x=0, y=0
display.print("SVP Patientez..."); // Un println pour écrire du texte sur l'ecran
display.setTextColor(WHITE); // La couleur du texte
display.setCursor(0,24); // On va ecrire en x=0, y=0
display.print(BOUTON_ETAT); // Un println pour écrire du texte sur l'ecran
digitalWrite(RELAY,HIGH); //...Alors le RELAY sera ACTIVER.
display.display(); // Affichage du Resultat
delay(512);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment