Microcontrolleurs: Marin Iuliana

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

MICROCONTROLLEURS

TP 12
Marin Iuliana
Date et horloge avec écran LCD

2
Composants

3
Le code (1/15)
#include<LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int button = 13;


int buttonOld=0;
unsigned long previousMil = 0;
unsigned long currentMil =0;
const long period = 3000;

bool tr=false;
bool trinfo=false;
bool eng=false;
bool enginfo=false;

4
Le code (2/15)
String s;
int days=0;
int day=24;
int month=5;
int year=2021;
int hour=23;
int min=59;
int sec=58;

void setup()
{
lcd.begin(16,2);
pinMode(button,INPUT);
Serial.begin(9600);
}

5
void loop()
Le code (3/15)
{
if(sec==60){
min+=1;
sec=0;
if(min==60){
hour+=1;
min=0;
if(hour==24){
day+=1;
days+=1;
hour=0;
if(day==31){
month+=1;
day=1;
if(month==13){
year+=1;
month=1;
}
}
}
}
} 6
Le code (4/15)

if(eng==false && tr==false){


eng=true;
}

currentMil = millis();
if (currentMil - previousMil >= period) {
previousMil = currentMil;
lcd.clear();
if(tr==true && trinfo==false){trinfo=true;}
else if(tr==true && trinfo==true){trinfo=false;}
else if(eng==true && enginfo==false){enginfo=true;}
else if(eng==true && enginfo==true){enginfo=false;}
}

7
Le code (5/15)
if(push(button)&& buttonOld==0){
previousMil = currentMil;
buttonOld=1;
lcd.clear();
if(tr==true){
eng=true;
enginfo=false;
tr=false;
}
else if(eng==true){
tr=true;
trinfo=false;
eng=false;
}
}
else if(push(button)==false && buttonOld==1){
buttonOld=0;
}

8
Le code (6/15)
if(tr==true && trinfo==true){
showInfoTUR();
}
else if(tr==true && trinfo==false){
s=DOW("TUR",days);
showDefaultTUR(s);
}
else if(eng==true && enginfo==true){
showInfoENG();
}
else if(eng==true && enginfo==false){
s=DOW("ENG",days);
showDefaultENG(s);
}
delay(1000);
sec+=1;
}

9
Le code (7/15)
bool push(int b){

int x= digitalRead(b);
if(x==1){return (true);}
}
void showDefaultENG(String dow){

int hourtemp=0;
if(hour>12) {hourtemp=(hour-12);}
else if(hour==0){hourtemp=12;} //12.00 AM

if(hourtemp<10){
lcd.setCursor(0,0); lcd.print(0);
lcd.setCursor(1,0); lcd.print(hourtemp);
}
else {
lcd.setCursor(0,0); lcd.print(hourtemp);
}
lcd.setCursor(2,0); lcd.print(":");

10
if(min<10){ Le code (8/15)
lcd.setCursor(3,0); lcd.print(0);
lcd.setCursor(4,0); lcd.print(min);
}
else {
lcd.setCursor(3,0); lcd.print(min);
}
lcd.setCursor(5,0); lcd.print(":");

if(sec<10){
lcd.setCursor(6,0); lcd.print(0);
lcd.setCursor(7,0); lcd.print(sec);
}
else {
lcd.setCursor(6,0); lcd.print(sec);
}

if(hour<12){
lcd.setCursor(9,0); lcd.print("AM");

}
else{
lcd.setCursor(9,0); lcd.print("PM");
11
}
if(min<10){ Le code (9/15)
lcd.setCursor(3,0); lcd.print(0);
lcd.setCursor(4,0); lcd.print(min);
}
else {
lcd.setCursor(3,0); lcd.print(min);
}
lcd.setCursor(5,0); lcd.print(":");

if(sec<10){
lcd.setCursor(6,0); lcd.print(0);
lcd.setCursor(7,0); lcd.print(sec);
}
else {
lcd.setCursor(6,0); lcd.print(sec);
}

if(hour<12){
lcd.setCursor(9,0); lcd.print("AM");

}
else{
lcd.setCursor(9,0); lcd.print("PM");
12
}
Le code (10/15)
lcd.setCursor(11,0); lcd.print(" ");
lcd.setCursor(13,0); lcd.print("ENG");

if(day<10){
lcd.setCursor(0,1); lcd.print(0);
lcd.setCursor(1,1); lcd.print(day);
}
else {
lcd.setCursor(0,1); lcd.print(day);
}
lcd.setCursor(2,1); lcd.print(":");

if(month<10){
lcd.setCursor(3,1); lcd.print(0);
lcd.setCursor(4,1); lcd.print(month);
}
else {
lcd.setCursor(3,1); lcd.print(month);
}
lcd.setCursor(5,1); lcd.print(":");
lcd.setCursor(6,1); lcd.print(year);
lcd.setCursor(13,1); lcd.print(dow);
} 13
Le code (11/15)
void showDefaultTUR(String dow){

if(hour<10){
lcd.setCursor(0,0); lcd.print(0);
lcd.setCursor(1,0); lcd.print(hour);
}
else {
lcd.setCursor(0,0); lcd.print(hour);
}
lcd.setCursor(2,0); lcd.print(":");

if(min<10){
lcd.setCursor(3,0); lcd.print(0);
lcd.setCursor(4,0); lcd.print(min);
}
else {
lcd.setCursor(3,0); lcd.print(min);
}
lcd.setCursor(5,0); lcd.print(":");

14
Le code (12/15)
if(sec<10){
lcd.setCursor(6,0); lcd.print(0);
lcd.setCursor(7,0); lcd.print(sec);
}
else {
lcd.setCursor(6,0); lcd.print(sec);
}

lcd.setCursor(9,0); lcd.print(" ");


lcd.setCursor(13,0); lcd.print("TUR");

if(day<10){
lcd.setCursor(0,1); lcd.print(0);
lcd.setCursor(1,1); lcd.print(day);
}
else {
lcd.setCursor(0,1); lcd.print(day);
}
lcd.setCursor(2,1); lcd.print(":");

15
Le code (13/15)
if(month<10){
lcd.setCursor(3,1); lcd.print(0);
lcd.setCursor(4,1); lcd.print(month);
}
else {
lcd.setCursor(3,1); lcd.print(month);
}
lcd.setCursor(5,1); lcd.print(":");
lcd.setCursor(6,1); lcd.print(year);
lcd.setCursor(13,1); lcd.print(dow);
}
void showInfoENG(){

lcd.setCursor(0,0); lcd.print("HH:MM:SS");
lcd.setCursor(9,0); lcd.print("12H");
lcd.setCursor(13,0); lcd.print("LNG");

lcd.setCursor(0,1); lcd.print("DD.MM.YYYY");
lcd.setCursor(13,1); lcd.print("DOW");
}

16
Le code (14/15)
void showInfoTUR(){

lcd.setCursor(0,0); lcd.print("HH:MM:SS");
lcd.setCursor(9,0); lcd.print("24H");
lcd.setCursor(13,0); lcd.print("LNG");

lcd.setCursor(0,1); lcd.print("DD.MM.YYYY");
lcd.setCursor(13,1); lcd.print("DOW");
}
String DOW(String lng,int days){

String thisDay;
if(lng=="ENG"){
if(days%7==0){thisDay="WED";}
else if(days%7==1){thisDay="THU";}
else if(days%7==2){thisDay="FRI";}
else if(days%7==3){thisDay="SAT";}
else if(days%7==4){thisDay="SUN";}
else if(days%7==5){thisDay="MON";}
else if(days%7==6){thisDay="TUE";}
}
17
Le code (15/15)
if(lng=="TUR"){
if(days%7==0){thisDay="CAR";}
else if(days%7==1){thisDay="PER";}
else if(days%7==2){thisDay="CUM";}
else if(days%7==3){thisDay="CMT";}
else if(days%7==4){thisDay="PZR";}
else if(days%7==5){thisDay="PZT";}
else if(days%7==6){thisDay="SAL";}
}
return thisDay;
}

18
Exercices
1.Testez l’exercice de laboratoire.
2.Modifiez le code du laboratoire actuel de sorte qu'il
affiche la date et l'heure actuelles à New York. La date en
Amérique a le format mois, jour et année.
3.Créez un écran LCD pour une gare, de sorte qu'il affiche
la destination (abréviation) et l'heure de départ, ainsi que
le temps restant avant de partir.

19

You might also like