Merci pour votre aide
/***********************************************************************************
*This program is a demo of how to display picture and
*how to use rotate function to display string.
*This demo was made for LCD modules with 8bit or 16bit data port.
*This program requires the the LCDKIWI library.
* File : display_graphics.ino
* Hardware Environment: Arduino UNO&Mega2560
* Build Environment : Arduino
*Set the pins to the correct ones for your development shield or breakout board.
*This demo use the BREAKOUT BOARD only and use these 8bit data lines to the LCD,
*pin usage as follow:
* LCD_CS LCD_CD LCD_WR LCD_RD LCD_RST SD_SS SD_DI SD_DO SD_SCK
* Arduino Uno A3 A2 A1 A0 A4 10 11 12 13
*Arduino Mega2560 A3 A2 A1 A0 A4 10 11 12 13
* LCD_D0 LCD_D1 LCD_D2 LCD_D3 LCD_D4 LCD_D5 LCD_D6 LCD_D7
* Arduino Uno 8 9 2 3 4 5 6 7
*Arduino Mega2560 8 9 2 3 4 5 6 7
*Remember to set the pins to suit your display module!
*
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
**********************************************************************************/
#include <LCDWIKI_GUI.h> //Core graphics library
#include <LCDWIKI_KBV.h> //Hardware-specific library
#include <TouchScreen.h> //touch library
#include <Wire.h>
#define TOUCH_ORIENTATION 0
#define TITLE "TouchScreen.h Calibration"
//if the IC model is known or the modules is unreadable,you can use this constructed function
LCDWIKI_KBV mylcd(ILI9486,A3,A2,A1,A0,A4); //model,cs,cd,wr,rd,reset
//if the IC model is not known and the modules is readable,you can use this constructed function
//LCDWIKI_KBV mylcd(320,480,A3,A2,A1,A0,A4);//width,height,cs,cd,wr,rd,reset
//define some colour values
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define YP A3 // must be an analog pin, use "An" notation!
#define XM A2 // must be an analog pin, use "An" notation!
#define YM 9 // can be a digital pin
#define XP 8 // can be a digital pin
TouchScreen mytouch(XP, YP, XM, YM, 300);
TSPoint tp;
void Read_Resistive(void)
{
tp = mytouch.getPoint();
pinMode(YP, OUTPUT); //restore shared pins
pinMode(XM, OUTPUT);
digitalWrite(YP, HIGH); //because TFT control pins
digitalWrite(XM, HIGH);
}
bool is_pressed(void)
{
bool state;
Read_Resistive();
state = (tp.z > 20 && tp.z < 1000);
return state;
}//Touchscreen_due branch uses Point
//display some string
const int FLOTH = 31; //flotteur haut fil rouge
const int FLOTB = 33; //flotteur bas fil noir
int Airlift = 35;
int O2 = 37;
int UV = 39;
int rincage = 43;
int tambour = 45;
int cascade = 47;
int egout = 49;
int arduino = 51;
uint32_t tx;
uint32_t ty;
int Etat_tambour = LOW;
unsigned long previousMillis = 0;
unsigned long interval;
unsigned long interval1 = 900000 ;
unsigned int interval2 = 4000;
void setup()
{
Serial.begin(9600);
tp = mytouch.getPoint();
pinMode(YP, OUTPUT);
pinMode(XM, OUTPUT);
digitalWrite(YP, HIGH);
digitalWrite(XM, HIGH);
//rinçage tambour
pinMode(FLOTH,INPUT);
pinMode(FLOTB,INPUT);
pinMode(Airlift,OUTPUT);
pinMode(O2,OUTPUT);
pinMode(UV,OUTPUT);
pinMode(rincage,OUTPUT);
pinMode(tambour,OUTPUT);
pinMode(arduino, OUTPUT);
//fin de rinçage tambour
mylcd.Init_LCD();
Serial.println(mylcd.Read_ID(), HEX);
delay(500);
for(uint8_t rotation=1; rotation<2; rotation++)
{
mylcd.Set_Rotation(rotation);
}
mylcd.Set_Text_Mode(0);
mylcd.Fill_Screen(BLACK);
mylcd.Fill_Rect(0, 0, 500, 30, WHITE);
mylcd.Draw_Pixe(400, 280, YELLOW);
mylcd.Set_Text_Back_colour(BLACK);
mylcd.Set_Text_colour(BLACK);
mylcd.Set_Text_Size(3);
mylcd.Print_String("GESTION BASSIN", 120, 5);
mylcd.Set_Text_colour(WHITE);
mylcd.Set_Text_Size(2);
mylcd.Print_String("Airlift :", 5, 40);
mylcd.Print_String("ON", 120, 40);
mylcd.Print_String("OFF", 180, 40);
mylcd.Set_Text_colour(WHITE);
mylcd.Set_Text_Size(2);
mylcd.Print_String("O2 Filtre", 5, 80);
mylcd.Print_String("ON", 120, 80);
mylcd.Print_String("OFF", 180, 80);
mylcd.Set_Text_colour(WHITE);
mylcd.Set_Text_Size(2);
mylcd.Print_String("UV", 5, 120);
mylcd.Print_String("ON", 120, 120);
mylcd.Print_String("OFF", 180, 120);
mylcd.Set_Text_colour(WHITE);
mylcd.Set_Text_Size(2);
mylcd.Print_String("Rincage", 5, 160);
mylcd.Print_String("ON", 120, 160);
mylcd.Print_String("OFF", 180, 160);
mylcd.Set_Text_colour(WHITE);
mylcd.Set_Text_Size(2);
mylcd.Print_String("Tambour", 5, 200);
mylcd.Print_String("ON", 120, 200);
mylcd.Print_String("OFF", 180, 200);
mylcd.Set_Text_colour(WHITE);
mylcd.Set_Text_Size(2);
mylcd.Print_String("Cascade", 260, 40);
mylcd.Print_String("ON", 360, 40);
mylcd.Print_String("OFF", 410, 40);
mylcd.Set_Text_colour(WHITE);
mylcd.Set_Text_Size(2);
mylcd.Print_String("Egout", 260, 80);
mylcd.Print_String("ON", 360, 80);
mylcd.Print_String("OFF", 410, 80);
mylcd.Set_Text_colour(YELLOW);
mylcd.Set_Text_Size(2);
mylcd.Print_String("SURFACE :", 260, 160);
mylcd.Set_Text_colour(YELLOW);
mylcd.Set_Text_Size(2);
mylcd.Print_String("FOND :", 260, 200);
mylcd.Set_Text_colour(WHITE);
mylcd.Set_Text_Size(2);
mylcd.Fill_Rect(400, 290, 30, 30, BLACK);
mylcd.Set_Text_colour(RED);
mylcd.Fill_Rect(410, 230, 0, 30, BLACK);
mylcd.Print_String("F" , 410, 290);
mylcd.Fill_Rect(450, 250, 30, 30, BLACK);
mylcd.Set_Text_colour(GREEN);
mylcd.Print_String("B" , 460, 290);
}
void loop(){
Read_Resistive();
// showpoint(tp);
if ((tp.z > 20 && tp.z < 1000) && (tp.x<=300 && tp.y<=200))
{
mylcd.Set_Text_colour(YELLOW);
mylcd.Set_Text_Size(2);
mylcd.Print_String("***Mode BAIGNADE***", 10, 290);
baignade();
delay(1000);}
if ((tp.z > 20 && tp.z < 1000) && (tp.x>400 && tp.y>300))
{
mylcd.Set_Text_colour(YELLOW);
mylcd.Set_Text_Size(2);
mylcd.Print_String("**Mode FILTRATION**", 10, 290);
filtration();
delay(1000);}
}
void baignade() {
if (digitalRead(FLOTH) == 0 & digitalRead(FLOTB)== 0){
mylcd.Set_Text_colour(RED);
mylcd.Set_Text_Size(2);
mylcd.Print_String(" Mode BAIGNADE - ****ACTIVE****", 0, 250);
mylcd.Print_String("OFF", 180, 80);
mylcd.Set_Text_colour(RED);
mylcd.Print_String("OFF", 180, 40);
mylcd.Print_String("OFF", 180, 120);
mylcd.Print_String("OFF", 180, 160);
mylcd.Print_String("OFF", 180, 200);
mylcd.Print_String("OFF", 410, 40);
mylcd.Print_String("OFF", 410, 80);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("ON", 120, 40);
mylcd.Print_String("ON", 120, 80);
mylcd.Print_String("ON", 120, 120);
mylcd.Print_String("ON", 120, 160);
mylcd.Print_String("ON", 120, 200);
mylcd.Print_String("ON", 360, 40);
mylcd.Print_String("ON", 360, 80);
digitalWrite(Airlift,LOW);
digitalWrite(O2,LOW);
digitalWrite(UV,LOW);
digitalWrite(rincage,LOW);
digitalWrite(tambour,LOW);
digitalWrite(cascade,LOW);
digitalWrite(egout,LOW);
digitalWrite(arduino,LOW);
}
if (digitalRead(FLOTH) == 1 & digitalRead(FLOTB)== 0){
mylcd.Set_Text_colour(RED);
mylcd.Set_Text_Size(2);
mylcd.Print_String(" Mode BAIGNADE - ****ACTIVE****", 0, 250);
mylcd.Print_String("OFF", 180, 80);
mylcd.Set_Text_colour(RED);
mylcd.Print_String("OFF", 180, 40);
mylcd.Print_String("OFF", 180, 120);
mylcd.Print_String("OFF", 180, 160);
mylcd.Print_String("OFF", 180, 200);
mylcd.Print_String("OFF", 410, 40);
mylcd.Print_String("OFF", 410, 80);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("ON", 120, 40);
mylcd.Print_String("ON", 120, 80);
mylcd.Print_String("ON", 120, 120);
mylcd.Print_String("ON", 120, 160);
mylcd.Print_String("ON", 120, 200);
mylcd.Print_String("ON", 360, 40);
mylcd.Print_String("ON", 360, 80);
digitalWrite(Airlift,LOW);
digitalWrite(O2,LOW);
digitalWrite(UV,LOW);
digitalWrite(rincage,LOW);
digitalWrite(tambour,LOW);
digitalWrite(cascade,LOW);
digitalWrite(egout,LOW);
digitalWrite(arduino,LOW);
}
if (digitalRead(FLOTH) == 1 & digitalRead(FLOTB)== 1){
mylcd.Set_Text_colour(RED);
mylcd.Set_Text_Size(2);
mylcd.Print_String(" Mode BAIGNADE - ****ACTIVE****", 0, 250);
mylcd.Print_String("OFF", 180, 80);
mylcd.Set_Text_colour(RED);
mylcd.Print_String("OFF", 180, 40);
mylcd.Print_String("OFF", 180, 120);
mylcd.Print_String("OFF", 180, 160);
mylcd.Print_String("OFF", 180, 200);
mylcd.Print_String("OFF", 410, 40);
mylcd.Print_String("OFF", 410, 80);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("ON", 120, 40);
mylcd.Print_String("ON", 120, 80);
mylcd.Print_String("ON", 120, 120);
mylcd.Print_String("ON", 120, 160);
mylcd.Print_String("ON", 120, 200);
mylcd.Print_String("ON", 360, 40);
mylcd.Print_String("ON", 360, 80);
digitalWrite(Airlift,LOW);
digitalWrite(O2,LOW);
digitalWrite(UV,LOW);
digitalWrite(rincage,LOW);
digitalWrite(tambour,LOW);
digitalWrite(cascade,LOW);
digitalWrite(egout,LOW);
digitalWrite(arduino,LOW);
}}
void filtration(){
unsigned long currentMillis = millis();
if (digitalRead(FLOTH) == 0 & digitalRead(FLOTB)== 0){
mylcd.Set_Text_colour(RED);
mylcd.Set_Text_Size(2);
mylcd.Print_String(" Mode DEFAUT - ****NIVEAU HAUT****", 0, 250);
mylcd.Print_String("OFF", 180, 80);
mylcd.Set_Text_colour(RED);
mylcd.Print_String("OFF", 180, 40);
mylcd.Print_String("OFF", 180, 120);
mylcd.Print_String("OFF", 180, 160);
mylcd.Print_String("OFF", 180, 200);
mylcd.Print_String("OFF", 410, 40);
mylcd.Print_String("OFF", 410, 80);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("ON", 120, 40);
mylcd.Print_String("ON", 120, 80);
mylcd.Print_String("ON", 120, 120);
mylcd.Print_String("ON", 120, 160);
mylcd.Print_String("ON", 120, 200);
mylcd.Print_String("ON", 360, 40);
mylcd.Print_String("ON", 360, 80);
digitalWrite(Airlift,LOW);
digitalWrite(O2,LOW);
digitalWrite(UV,LOW);
digitalWrite(rincage,LOW);
digitalWrite(tambour,LOW);
digitalWrite(cascade,LOW);
digitalWrite(egout,LOW);
digitalWrite(arduino,LOW);
}
if (digitalRead(FLOTH) == 1 & digitalRead(FLOTB)== 0){
mylcd.Set_Text_colour(RED);
mylcd.Set_Text_Size(2);
mylcd.Print_String(" Mode LAVAGE - *****TAMBOUR*****", 0, 250);
mylcd.Print_String("OFF", 180, 80);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("OFF", 180, 40);
mylcd.Print_String("OFF", 180, 80);
mylcd.Print_String("OFF", 180, 120);
mylcd.Print_String("OFF", 180, 160);
mylcd.Print_String("OFF", 180, 200);
mylcd.Print_String("OFF", 410, 40);
mylcd.Print_String("OFF", 410, 80);
mylcd.Set_Text_colour(GREEN);
mylcd.Print_String("ON", 120, 40);
mylcd.Print_String("ON", 120, 80);
mylcd.Print_String("ON", 120, 120);
mylcd.Print_String("ON", 120, 160);
mylcd.Print_String("ON", 120, 200);
mylcd.Print_String("ON", 360, 40);
mylcd.Print_String("ON", 360, 80);
digitalWrite(Airlift,LOW);
digitalWrite(O2,LOW);
digitalWrite(UV,LOW);
digitalWrite(tambour,HIGH);
digitalWrite(rincage,HIGH);
digitalWrite(cascade,HIGH);
digitalWrite(egout,HIGH);
digitalWrite(arduino,HIGH);
mylcd.Print_String(" Mode LAVAGE - *****EN COURS*****", 0, 250);
delay(12000);
mylcd.Print_String(" Mode LAVAGE - *****ATTENTE*****", 0, 250);
mylcd.Set_Text_colour(RED);
mylcd.Print_String("OFF", 180, 160);
mylcd.Print_String("OFF", 180, 200);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("ON", 120, 160);
mylcd.Print_String("ON", 120, 200);
digitalWrite(tambour,LOW);
digitalWrite(rincage,LOW);
delay(30000);
}
if (digitalRead(FLOTH) == 1 & digitalRead(FLOTB)== 1){
mylcd.Set_Text_colour(GREEN);
mylcd.Set_Text_Size(2);
mylcd.Print_String(" Mode FILTRATION - ****ACTIF****", 0, 250);
mylcd.Print_String("OFF", 180, 80);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("OFF", 180, 40);
mylcd.Print_String("OFF", 180, 80);
mylcd.Print_String("OFF", 180, 120);
mylcd.Print_String("OFF", 410, 40);
mylcd.Print_String("OFF", 410, 80);
mylcd.Set_Text_colour(GREEN);
mylcd.Print_String("ON", 120, 40);
mylcd.Print_String("ON", 120, 80);
mylcd.Print_String("ON", 120, 120);
mylcd.Print_String("ON", 360, 40);
mylcd.Print_String("ON", 360, 80);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("ON", 120, 160);
mylcd.Print_String("ON", 120, 200);
mylcd.Set_Text_colour(RED);
mylcd.Print_String("OFF", 180, 160);
mylcd.Print_String("OFF", 180, 200);
digitalWrite(Airlift,HIGH);
digitalWrite(O2,HIGH);
digitalWrite(UV,HIGH);
digitalWrite(rincage,LOW);
digitalWrite(cascade,HIGH);
digitalWrite(egout,HIGH);
digitalWrite(arduino,HIGH);
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
if (Etat_tambour == LOW)
{
Etat_tambour = HIGH;
mylcd.Set_Text_Size(2);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("Rotation Tambour", 50, 290);
Serial.print("Tambour en rotation");
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("OFF", 180, 200);
mylcd.Set_Text_colour(GREEN);
mylcd.Print_String("ON", 120, 200);
interval = interval2;
delay(100);
} else
{
Etat_tambour= LOW;
Serial.print("Tambour arrete");
mylcd.Print_String(" ", 50, 290);
mylcd.Set_Text_colour(RED);
mylcd.Print_String("OFF", 180, 200);
mylcd.Set_Text_colour(WHITE);
mylcd.Print_String("ON", 120, 200);//on l'éteint la LED
interval = interval1;
delay(100);
//défini le nouvel intervalle de clignotement
}
digitalWrite(tambour, Etat_tambour); //règle l'état de la LED avec le ledState de la variable
}}
}