Aller au contenu


Photo
- - - - -

[2WD]mon robot Jardise


202 réponses à ce sujet

#201 seb03000

seb03000

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 192 messages
  • Gender:Male
  • Location:Loins dérrière toi.
  • Interests:La Robotique , plus l'informatique

Posté 25 mars 2012 - 01:17

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.

#202 seb03000

seb03000

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 192 messages
  • Gender:Male
  • Location:Loins dérrière toi.
  • Interests:La Robotique , plus l'informatique

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)

Image IPB

la carte DFRduino Duemilanove 328 celle si.

Image IPB

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

Image IPB

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 seb03000

seb03000

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 192 messages
  • Gender:Male
  • Location:Loins dérrière toi.
  • Interests:La Robotique , plus l'informatique

Posté 18 mai 2012 - 12:12

Et voici une photo de mon écran LCD avec l'heure:

Image IPB

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