Ombre portée & G'MIC
Image d'origine :
http://www.flickr.com/photos/fontplaydotcom/6044205066/sizes/o/in/photostream/
Par www.fontplay.com CC BY 2.0
/*
lcd1602 avec vatiations de luminosité de l'affichage et du fond.
samj le 21 novembre 2015
Domaine Public
Câblage :
Arduino Resist. 2N2222 2N2907 LCD1602
(E commun) (C commun)
(+5)-------------------------------------------(2) VCC
(+5)-------------------------------------------(15) LED +
(GND)------------------------------------------(1) VSS
(GND)------------------------------------------(5) R/W
(GND)-------------------(E)
(GND)------------------------------(C)
(3)------[4.7kOhm]------(B)
(5)------[4.7kOhm]-----------------(B)
(C)---------------------(16) LED -
(E)----------(3) VEE
(7)---------------------------------------------(4) RS
(8)---------------------------------------------(6) Enable
(9)---------------------------------------------(11) DB4
(10)--------------------------------------------(12) DB5
(11)--------------------------------------------(13) DB6
(12)--------------------------------------------(14) DB7
*/
/**********************************************
Initialisation
**********************************************/
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11 , 12); // LiquidCrystal(rs, enable, d4, d5, d6, d7)
int Sortie_PWM_Luminosite_Fond = 3; // vers resistance 4.7kOhm reliée à la base 2N2222
int Sortie_PWM_Contrastes_Caracteres = 5; // vers resistance 4.7kOhm reliée à la base 2N2907
int Luminosite_Fond = 255;
int Luminosite_Caracteres = 50; // Ajuster cette valeur
int Variation_Luminosite_Caracteres;
/**********************************************
SETUP
**********************************************/
void setup()
{
pinMode(Sortie_PWM_Luminosite_Fond, OUTPUT);
pinMode(Sortie_PWM_Contrastes_Caracteres, OUTPUT);
FondEclaire(Luminosite_Fond, 10);
Variation_Luminosite_Caracteres = 0;
while(Variation_Luminosite_Caracteres < 255){
analogWrite(Sortie_PWM_Contrastes_Caracteres, Variation_Luminosite_Caracteres);
delay(20);
Variation_Luminosite_Caracteres++;
}
analogWrite(Sortie_PWM_Contrastes_Caracteres, Luminosite_Caracteres);
FondNoir(Luminosite_Fond, 20);
// message -> LCD
lcd.noCursor();
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Bonjour! Hello!");
lcd.setCursor(0,1);
lcd.print("V 20151121 / ");
lcd.print(Luminosite_Caracteres);
FondEclaire(Luminosite_Fond, 20);
}
/**********************************************
LOOP
**********************************************/
void loop()
{
FondNoir(Luminosite_Fond, 20);
analogWrite(Sortie_PWM_Luminosite_Fond, 0);
lcd.noDisplay();
FondEclaire(40, 50);
FondNoir(100, 25);
// message -> LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("abcdefghijklmnop");
lcd.setCursor(0,1);
lcd.print("0123456789ABCDEF");
lcd.display();
FondEclaire(Luminosite_Fond,20);
}
/**********************************************
Fond Noir
**********************************************/
void FondNoir(int Luminosite_Origine, int BaseDeTemps)
{
int index=Luminosite_Origine;
analogWrite(Sortie_PWM_Luminosite_Fond, Luminosite_Origine);
while(index > 0){
analogWrite(Sortie_PWM_Luminosite_Fond, index);
delay(BaseDeTemps);
index=index-1;
}
}
/**********************************************
Fond Eclairé
**********************************************/
void FondEclaire(int Luminosite_Origine, int BaseDeTemps)
{
int index=Luminosite_Origine;
index=0;
analogWrite(Sortie_PWM_Luminosite_Fond, 0);
delay(2000);
while(index < Luminosite_Origine){
analogWrite(Sortie_PWM_Luminosite_Fond, index);
delay(BaseDeTemps);
index=index+1;
}
analogWrite(Sortie_PWM_Luminosite_Fond, Luminosite_Origine);
}
/* FIN */