Voila bientôt je ferrais une petite commande pour me prendre un meilleur chassie , pour un meilleur stabilisation , c'est celui si. avec une nouvel carte shield 2A celle si.
Voila la suite bientôt.
[2WD]mon robot Jardise
Débuté par
seb03000
, juil. 22 2011 03:29
202 réponses à ce sujet
#202
Posté 18 mai 2012 - 11:56
Voila depuis hier , je me suis pencher sur mon écran LCD , pour affiché l'heure et la date.
Voici les composant que j'ai utilisé.
la carte Arduino LCD et clavier Shield (SKU: DFR0009)
la carte DFRduino Duemilanove 328 celle si.

La carte Log shield pour Arduino sur carte SD avec horloge RTC celle si

Bon le seule bémol c'est que je n'arrive pas a mettre la date sur mon LCD , mes j'ai bien l'heure sur mon écran LCD .
Je vous mes le code , ça peux éventuellement servir a d'autre membre sur le forum.
Voici les composant que j'ai utilisé.
la carte Arduino LCD et clavier Shield (SKU: DFR0009)
la carte DFRduino Duemilanove 328 celle si.

La carte Log shield pour Arduino sur carte SD avec horloge RTC celle si

Bon le seule bémol c'est que je n'arrive pas a mettre la date sur mon LCD , mes j'ai bien l'heure sur mon écran LCD .
Je vous mes le code , ça peux éventuellement servir a d'autre membre sur le forum.
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,4,5,6,7);
int a=0;
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// définir des caractères personnalisés pour le haut / bas / gauche / droite
byte ua[8] = { B00100, B01110, B11111, B10101, B00100, B00100, B00100, B00100};
byte da[8] = {B00100, B00100, B00100, B00100, B10101,B11111,B01110, B00100};
byte la[8] = {B00011, B00110, B01100, B11111, B11111, B01100, B00110, B00011};
byte ra[8] = {B11000, B01100, B00110, B11111, B11111, B00110, B01100, B11000 };
void setup()
{
lcd.begin(16, 2);
Wire.begin();
lcd.createChar(0,ua);
lcd.createChar(1,da);
lcd.createChar(2,la);
lcd.createChar(3,ra);
}
// Convertir normalement des nombres décimaux à virgule , codé binaire
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
// Convertir décimal , codé en binaire à la normale des nombres décimaux
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
int readButtons()
// retourne le numéro du bouton enfoncé, ou zéro pour aucune pression
{
int b,c = 0;
c=analogRead(0); // obtenir la valeur analogique
if (c>1000)
{
b=0; // boutons qui n'ont pas été pressée
}
else
if (c>500 && c<510)
{
b=1; // le bouton 1 enfoncé
}
else
if (c<150 && c>135)
{
b=2; // le bouton 2 enfoncé
}
else
if (c>320 && c<340)
{
b=3; // le bouton 3enfoncé
}
else
if (c<10)
{
b=4; // touche 4 enfoncée
}
else
if (c<750 && c>735)
{
b=5; // touche 5 enfoncée
}
return b;
}
// Obtient la date et l'heure de la DS1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
// Réinitialiser le registre de pointeur
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
//des bits de contrôle
*second = bcdToDec(Wire.receive() & 0x7f);
*minute = bcdToDec(Wire.receive());
*hour = bcdToDec(Wire.receive() & 0x3f); // Besoin de changer cela si 12 heures am / pm
*dayOfWeek = bcdToDec(Wire.receive());
*dayOfMonth = bcdToDec(Wire.receive());
*month = bcdToDec(Wire.receive());
*year = bcdToDec(Wire.receive());
}
void setDateDs1307(byte second, // 0-59
byte minute, // 0-59
byte hour, // 1-23
byte dayOfWeek, // 1-7
byte dayOfMonth, // 1-28/29/30/31
byte month, // 1-12
byte year) // 0-99
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.send(0);
Wire.send(decToBcd(second)); // 0 à 7 bits commence l'horloge
Wire.send(decToBcd(minute));
Wire.send(decToBcd(hour));
Wire.send(decToBcd(dayOfWeek));
Wire.send(decToBcd(dayOfMonth));
Wire.send(decToBcd(month));
Wire.send(decToBcd(year));
Wire.send(00010000); // envoie 0x10 (hex) 00010000 (binaire) pour contrôler inscrire - tourne sur les ondes carré
Wire.endTransmission();
}
void showTime()
{
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
lcd.clear(); // écran LCD clair
lcd.setCursor(0,0);
lcd.print(" ");
lcd.print(hour, DEC);
lcd.print(":");
if (minute<10)
{
lcd.print("0");
}
lcd.print(minute, DEC);
lcd.print(":");
if (second<10)
{
lcd.print("0");
}
lcd.print(second, DEC);
}
void setTime()
{
int escape=0;
int h=0;
int m=0;
do
{
escape=readButtons();
delay(100); // pour anti-rebond
if (escape==1)
{
--m;
if (m<0)
{
m=59;
}
}
else
if (escape==2)
{
h++;
if (h>23)
{
h=0;
}
}
else
if (escape==3)
{
--h;
if (h<0)
{
h=23;
}
}
else
if (escape==4)
{
m++;
if (m>59)
{
m=0;
}
}
lcd.clear();
lcd.setCursor(0,0);
lcd.write(0);
lcd.write(1);
lcd.print(":h ");
lcd.write(2);
lcd.write(3);
lcd.print(":m Sel=OK");
lcd.setCursor(5,1);
if (h<10)
{
lcd.print("0");
}
lcd.print(h);
lcd.print(":");
if (m<10)
{
lcd.print("0");
}
lcd.print(m);
}
while (escape<5);
setDateDs1307(0, m, h, dayOfWeek, dayOfMonth, month, year);
}
void loop()
{
lcd.clear();
showTime();
a=readButtons();
if (a==5) // appuyé sur «select»
{
delay(200); // pour anti-rebond
setTime();
}
delay(75); // retard l'arrê scintillement du LCD
}
Répondre à ce sujet
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users














