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 }
#203
Posté 18 mai 2012 - 12:12
Et voici une photo de mon écran LCD avec l'heure:

Manque plus cas rajouté la Date mes je bloque.

Manque plus cas rajouté la Date mes je bloque.
Répondre à ce sujet

0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users