Show Posts
Pages: [1] 2 3 ... 5
1  International / Français / Re: Projet - Horloge Tetris et plus on: March 02, 2013, 01:53:34 pm
Salut,

Je vais t'orienté un peu et te donner mon astuce pour gérer des Thread avec l'arduino mais tu le garde pour toi...  smiley-grin

Comme tu le sais mont projet utilise le code de l'horloge Pong, mais se code était prévu pour monopoliser toute la matrice de ce fait il ont tout fait avec des delai(), mon projet utilise 2 matrice pour 1 arduino et donc l'affichage de 2 info en même temps, enfin plus ou moins... L'astuce est là sur ces derniers mots.

Elle consiste à jouer avec le temps mais sans les delai() qui te bloque tout le code, tu affiche un de tes chiffres tu met une condition dans ton code pour bloquer quelque milliseconde la suite de l'affichage et tu passe à un autre chiffre et ainsi de suite. Pour se faire tu as 2 choix soit

tu utilise la fonction millis() avec une comparaison dans un "if" par rapport à une valeur de tempo en ms que tu aura définie. 
ou
l'objet Timer de ce site : http://arduino-info.wikispaces.com/Timer-SimonMonk

Pour mon code j'utilise les 2 options, voilà qui pourra te faire un peu avancer.

Bon courage  smiley-wink
2  International / Français / Re: Yahoo Weather et arduino on: November 11, 2012, 08:13:49 am
Bonjour,

Merci pour ce code Météo.  smiley-cool

Pour ceux qui cherche l'ID de votre ville il suffit de taper dans votre explorateur :
http://where.yahooapis.com/geocode?q=toulouse+france

Remplacer Toulouse par votre ville et sur la page afficher vous regardé la valeur du champ : "<woeid>628886</woeid>"

Ensuite dans votre code arduino vous remplacé l'ID (dans l'exemple "12893459") par celui de votre ville
Quote
client.println("GET /forecastrss?w=12893459&u=c HTTP/1.0");

Voilà

La source : http://developer.yahoo.com/geo/placefinder/
3  International / Français / Re: Projet - Horloge Tetris et plus on: October 31, 2012, 02:00:19 pm
Salut Maraumax,

Je vois que tu as subit quelque galères, mais tu t'en ai plutôt bien sortie... T’inquiète tu en verras d'autres...

Pour ma part, après l'avoir abandonné depuis 2 mois je viens de reprendre mon projet, c'est dur à reprendre, pense à faire un fichier changelog qui contient toutes les modif que tu fait au jour le jour dans ton code c'est pratique, et aussi faire des sauvegarde de ton projet dans le temps.

Concernant ton liens pour créer une polices sa à l'air bon (j'ai un peu survolé) pour ce qui est du fichier à modifier c'est sur la class ht1632c.h et .cpp .

T’inquiète pas pour ta matrice, si tu inverse pas la masse et le +5V elle ne prendra pas mal. d’ailleurs pour ce qui est de l'alim pense à utilisé une alim externe de 5V pour alimenté les 2 matrice car l'arduino ne pourra pas alimenter les 2 tout seul. (sa chauffe).

Voilà, je vais mettre une alerte de suivi sur ton post, pour pouvoir te répondre rapidement si je peux.  smiley-mr-green

Bon courage
 
4  International / Français / Re: Projet - Horloge Tetris et plus on: August 26, 2012, 06:24:42 am
je n'ai même pas vu comment différencier le nombre de matrice que l'on a mais ce n'est qu'une question de temps smiley-wink

En fait lorsque tu définit ton objet tu lui indique combien tu as de Matrice, sur mon code ci-dessous j'en ai déclaré 2 (dernier attribut) :
Code:
ht1632c ledMatrix = ht1632c(&PORTH, 3, 4, 5, 6, GEOM_32x16, 2); // Pin =6-7-8-9 Arduino Mega

Ensuite c'est une question d'adressage, car une fois cette déclaration fait ton objet ledMatrix (dans mon exemple) est une Matrice de 64x16.

Exemple pour écrire un "init" sur la deuxième matrice :
Code:
    ledMatrix.setfont(2); // Réglage de la police en 4x6
    ledMatrix.putchar(42, 1, 'i', 3); // écrire un 'i' au coordonnées (42,1) en Orange (3).
    ledMatrix.putchar(47, 1, 'n', 3);
    ledMatrix.putchar(52, 1, 'i', 3);
    ledMatrix.putchar(57, 1, 't', 3);
    ledMatrix.pwm(15); // Réglage luminosité
    ledMatrix.sendframe(); // Affichage sur la matrice

Voilà, mais bon je te laisse un peu chercher...  smiley-grin
N’hésite pas à poser des questions si tu galère, car j'ai passé un bon moment avant de pouvoir afficher simplement l'heure.
5  International / Français / Re: [1er Projet] Horloge Pong modifié on: August 25, 2012, 12:36:33 pm
Comme promit, voici une video :



Ce qui fonctionne :
- Horloge normal,
- Horloge Pong,
- Menu de Sélection,
- La température interne,
- Le dialogue avec le module Ethernet,
- L'ajustement auto de la luminosité de l'affichage en fonction de la lumière ambiante.

Ce qui me reste à faire au minimum :
- La deuxième sonde de température,
- Le module µSD pour sauvegarder la Température,
- La plaque MegaProtoshield pour fixé au propre derrière la Matrice,
- Le Maj auto de l'heure et de la date via l'Ethernet et le protocole NTP (finit à 70%).

Je reste ouvert au avis (négatif ou positif) et idée
6  International / Français / Re: Projet - Horloge Tetris et plus on: August 25, 2012, 07:23:42 am
En attendant tes matrices je te donne le lien vers la librairie que j'utilise pour contrôler les matrice bicouleur :
http://code.google.com/p/ht1632c/

Pour info mon projet à une taille de 32 Ko, bon c'est une pas finit avec cela j'ai la gestion du RTC, une sonde de température, l'horlogePong et normal, un menu de sélection, et le réglage manuel du RTC. Tout cela pour te dire que ça prend vite de la place et j'ai bien fait de prendre un arduinoMega 1280.

Sur ce Bon WE, je vais essayé de mettre à jour mon post sur l'horloge-Pong avec une vidéo.
7  International / Français / Re: Projet - Horloge Tetris et plus on: August 22, 2012, 10:36:55 am
Nickel,

ça me rappel mon projet...  smiley-grin
8  International / Français / Re: Projet - Horloge Tetris et plus on: August 22, 2012, 04:07:10 am
J'en ai donc commendé 2 en P4, je vais bien me documenté sur les HT1632C (j'ai pris en biccouleur) entre temps !

Je pourrai t'aidé sur l'utilisation de ces matrices et de la classe HT1632C.

Bon courage.
9  International / Français / Re: Projet - Horloge Tetris et plus on: August 22, 2012, 03:15:32 am
La différence entre les P7.62 et les P4 c'est uniquement le taille des LEDS ? C'est plus avantageux de commander sur sureelectronics que sur ebay...
c'est indiqué sur les descriptif :
P7.62 :  "24*16 5mm dots"  soit des Led de 5mm
P4 : "24*16 3mm dots" soit 3 mm

Regarde bien les dimensions total des matrice en 3 et 5 mm, pour ma part en 5mm je trouve celà trop grand.
Sinon moi j'ai commandé sur ebay mais c'est sureelect qui était directement le vendeur, il doivent avoir une boutique ebay de mémoire à vérifier.

Autre chose pour les monoCouleur tu peux en mettre jusqu’à 4 maximum en serie.
Pour les BiCouleur je ne sais pas le nombre maxi.

Bon courage et regarde bien les tuto sur les HT1632(C).
10  International / Français / Re: Projet - Horloge Tetris et plus on: August 21, 2012, 06:40:00 am
Je met permet de reposter un message. Je pense que je vais acheter cette Matrice 64x32 seulement avant de me lancer j'ai effectuer quelques recherche pour trouver d'éventuels tutoriels / exemples / informations mais je n'ai pas trouvé grand chose.
Si tu es debutant en prog. tu vas galérer pour utilisé une carte sans exemples ou tuto...

Je ne connait pas la matrice que tu indiques.

Perso ma carte à été commandé sur eBay, c'est une sure electronique, voici leur site :
http://www.sureelectronics.net/category.php?id=60

Tu ne trouveras pas de hauteur supérieur à 16, mais comme je te l'ai indiqué les chiffres de ta video Tetris font 10x6, donc il te reste 6 en hauteur pour affiché la decente des piéces.
Pour ce qui est de la largeur de 40 pixel il te faut prendre 2 matrices comme mon projet et les mettre en série.
Soit (2x24)x16 >> 48x16 sa te laisse 8x16 pour la météo,
Soit (2x32)x16 >> 64x16 il te reste 24x16 pour la météo là c'est fonctionnel.
Sinon tu peut toujours mettre plus de 2 matrice en série, et mettre les 2 premières cote à cote et les suivantes en dessous ou au dessus.

Voilà pour info la gestion des matrices monoCouleur utilise la classe HT1632, alors que les matrices biCouleur utilise la classe HT1632C qui est déférente de la première donc si tu trouve des exemple de l'un tu auras un peu de mal à les adapté à l'autres et vice/versa, et tu ne pourras pas mettre en série du monoCouleur avec du biCouleur.

Voilà pour ma contribution. smiley-mr-green
11  International / Français / Re: Projet - Horloge Tetris et plus on: August 17, 2012, 07:14:21 am
J’adore.... Je vais essayé de l'appliqué sur mon horloge Pong, j'ai une matriceLED bi-color de 64x16.
http://arduino.cc/forum/index.php/topic,73387.msg645239.html#msg645239


Ta vidéo montre une hauteur de chiffre de 10x6, chaque animation est identique pour chaque chiffre.
La longueur maxi de cette affichage est de -32, donc sa passera sur une Matrice de 32x16.

Pour ce qui est de ton problème de carré, les les d'une matrice son ronde mais pour ma part avec des led de 3mm à 2 metre tu ne remarque pas leurs rondeur. Sinon tu peux rusé en mettant un calque sur ta matrice sa donne un effet bien différant.

as tu d'autres liens pour cette horloge Tetris...? avec du code  smiley-mr-green
12  International / Français / Re: [1er Projet] Horloge Pong modifié on: July 15, 2012, 02:09:20 pm
C'est bon je viens de trouver la solution... smiley-lol

En fait je pense que j'avais 2 problèmes, le premier c'est que ISP utilisé par la MatriceLed n'est pas le meme que celui du module Ethernet-SD. Le deuxieme c'est les librairie utilisé, je m'explique :
-Pour l'Ethernet on utilise la classe Ethernet.h et SPI.h
-Pour la MatriceLed j'utilise la classe ht1632c.h qui en interne fait appel à la classe stdio.h pour utilise les PIN affecté à la matrice.

En gros le module Ethernet-SD communique avec le SPI en mode standart, et la matrice Led fabrique un port SPI personnalisé pour communiquer avec la Matrice, de ce fait lorsque j'utilisai les 2 sur les meme PIN (sauf CS) sa marchait pas...

Voilà j'ai de ce fait déclaré la Matrice sur le Port L0 L1 L2 et L3. Et sa fonctionne. Du coup me voilà obliger de poster la prochaine fois pour vous montrez l'avancement du projet via photos et p'tit video. smiley-wink
13  International / Français / Re: [1er Projet] Horloge Pong modifié on: July 14, 2012, 03:49:39 pm
Bonsoir à tous,

Comme d'habitude je met à jour mon post pour signaler mes problemes... smiley-red

Voici sur quoi je butte depuis quelques jour.
Mon code avec uniquement la Matrice Led sur le SPI fonctionne.
Un Code exemple Ethernet avec mon module Ethernet sur le SPI fonctionne.
Mon code avec la MatriceLed et Ethernet sur le SPI fonctionne (car je n'appel pas l'ethernet), MAIS si j'ai le malheur de vouloir communiquer avec l'ethernet, ma matrice n'affiche plus rien...

J'ai un conflit sur le SPI...
Voici mes déclaration des modules
MatriceLED :
Code:
#include <ht1632c.h>
ht1632c ledMatrix = ht1632c(&PORTB, 6, 2, 1, 3, GEOM_32x16, 2); // 12-51-52-50 Pin 10=53-51-52-12

EthernetShield :
Code:
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
setup(){
// start Ethernet and UDP
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // print your local IP address:
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(".");
  }
}

D'ailleurs maintenant que j'y pense le module ethernet fonctionne dans ce cas vu qu'il me retourne son IP.

Alors j'ai trouvé ça sur la librairie Ethernet :
Quote
Arduino communicates with the shield using the SPI bus. This is on digital pins 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used as SS. On the Mega, the hardware SS pin, 53, is not used to select the W5100, but it must be kept as an output or the SPI interface won't work.
Donc il ne faut pas utilisé la PIN 53 du mega mais la déclaré en OUTPUT uniquement, j'ai essayé avec "pinMode(53, OUTPUT);" mais sans succès.

Voilà je sèche... Quelqu'un a t'il une idée...

Promit la prochaine fois que je post, je vous met des photos et vidéo de l'état du projet (enfin quand mon problème sera résolut).
14  International / Français / Re: [1er Projet] Horloge Pong modifié on: June 11, 2012, 03:00:46 pm
Bon j'ai contourné mon probleme en créant un nouveau type de menu, avant j'ait un menu comme le code de la pongClock :
Quote
> Classic
   Rgl Heure

   Test
Sachant que je n'affiche que les 2 premiere lignes, chaque appui sur le bouton Menu fesai monté la deuxieme ligne sur la premiere...ect...

Mon nouveau Menu :
Quote
 1 - 2 - 3
  Classic

  Rgl Heure
  Test
J'affiche les 2 première ligne, chaque appui sur le bouton (< ou >) fait passé à droite ou gauche la surbrillance rouge du chiffre, et affiche en deuxième ligne le nom du choix, sélect pour valider. Je compte remplacer les chiffres par des icones via une nouvelle police dédié.
Code:
void switch_mode() //Affiche menu
{
  char* modes[] = {
    "Classic", "Rgl Heure", "Test"              };
  int nbr_mode=3; // Variable qui indique le nombre de mode dans le menu. A incrementé si besoin.

  flagMenu=1;

  if(menuCompt<200) {
    //si appui sur boutonB (+) , passe au mode suivant
    if(boutonB.uniquePress()){
      menuCompt=0;
      curseur_mode++;
      if(curseur_mode>=nbr_mode){
        curseur_mode=0;
      }
    }
    
    //si appui sur boutonC (-) , passe au mode suivant
    if(boutonC.uniquePress()){
      menuCompt=0;
      curseur_mode--;
      if(curseur_mode<0){
        curseur_mode=nbr_mode-1;
      }
    }
    if(boutonA.uniquePress()){
      mode=curseur_mode;
      menuCompt=0;
      flagMenu=0;
      return;
    }


    
    ledMatrix.setfont(3); // reglage police en 5x8
    
    // Affichage de la premiére ligne avec icone de selection
    ledMatrix.putchar(11,0,'-',1);
    ledMatrix.putchar(23,0,'-',1); //x+6
    switch(curseur_mode){
      case 0:
      ledMatrix.putchar(5,0,'1',2);
      ledMatrix.putchar(17,0,'2',1); //x+12
      ledMatrix.putchar(29,0,'3',1); //x+12
      break;
      
      case 1:
      ledMatrix.putchar(5,0,'1',1);
      ledMatrix.putchar(17,0,'2',2); //x+12
      ledMatrix.putchar(29,0,'3',1); //x+12
      break;
      
      case 2:
      ledMatrix.putchar(5,0,'1',1);
      ledMatrix.putchar(17,0,'2',1); //x+12
      ledMatrix.putchar(29,0,'3',2); //x+12
      break;
    }

    ledMatrix.setfont(4); // reglage police en 5x7W
    //Affichage du mode actuel sur la deuxieme ligne
    int len = strlen(modes[curseur_mode]);
    //char toto[len]=(char) modes[curseur_mode];
    for (int i=0; i<len; i++)
    {
      ledMatrix.putchar((5+i*6),8,modes[curseur_mode][i],1);
    }
    menuCompt++;
  }
  else
  {
    menuCompt=0;
    flagMenu=0;
  }
}


Je refléchie à la présentation des sous menu reglages divers, réglage Date/Heure... smiley-draw
15  International / Français / Re: [1er Projet] Horloge Pong modifié on: June 07, 2012, 02:12:02 am
 smiley-kitty smiley-kitty Voici une partie de mon programme  smiley-roll

Alors la fonction qui marche : switch_mode()
Code:
void switch_mode() {
  char* modes[] = {    "Classic", "Rgl Heure", "Test"            };
  int nbr_mode=3; // Variable qui indique le nombre de mode dans le menu. A incrementé si besoin.

  flagMenu=1;

  if(menuCompt<80) {
    //si appui sur boutonA , change le mode
    if(boutonA.uniquePress()){
      menuCompt=0;
      curseur_mode++;
      if(curseur_mode>=nbr_mode){
        curseur_mode=0;
      }
    }


    //Affichage du mode actuel sur la premiére ligne, et le mode suivant sur la ligne suivante
    ledMatrix.setfont(3);
    int len = strlen(modes[curseur_mode]);
    //char toto[len]=(char) modes[curseur_mode];
    for (int i=0; i<len; i++)
    {
      ledMatrix.putchar((5+i*5),0,modes[curseur_mode][i],1);
    }
    ledMatrix.putchar(0,0,'>',3);

    // Afiichage Deuxieme ligne
    if(curseur_mode+1>=nbr_mode)
    {
      len = strlen(modes[0]);
      for (int i=0; i<len; i++)
      {
        ledMatrix.putchar((5+i*5),8,modes[0][i],1);
      }
    }
    else{
      len = strlen(modes[curseur_mode+1]);
      for (int i=0; i<len; i++)
      {
        ledMatrix.putchar((5+i*5),8,modes[curseur_mode+1][i],1);
      }
    }
    menuCompt++;
  }
  else
  {
    menuCompt=0;
    flagMenu=0;
  }
}

Et sa copie qui ne marche pas : set_time()
Code:
void set_time() // Réglage de la date et heure
{
  char* rgldate[] = {"Jour", "Date", "Mois", "Annee", "Heure", "Min", "Sec", "Valider", "Retour"};
  int ligne_rgl=9; // Variable qui indique le nombre de ligne dans ce sous-menu. A incrementé si besoin.
  
  //Ci-dessous je transforme les variables de l'heure en 'char' et je met tout dans le tableau heure[]
  char* heure[7];
  itoa(jour,heure[0],10);
  if (jour < 10) {
    heure[0][1] = heure[0][0];
    heure[0][0] = '0';
  }
  itoa(date,heure[1],10);
  if (date < 10) {
    heure[1][1] = heure[1][0];
    heure[1][0] = '0';
  }
  itoa(mois,heure[2],10);
  if (mois < 10) {
    heure[2][1] = heure[2][0];
    heure[2][0] = '0';
  }
  itoa(annee,heure[3],10);
  if (annee < 10) {
    heure[3][1] = heure[3][0];
    heure[3][0] = '0';
  }
  itoa(hours,heure[4],10);
  if (hours < 10) {
    heure[4][1] = heure[4][0];
    heure[4][0] = '0';
  }
  itoa(mins,heure[5],10);
  if (mins < 10) {
    heure[5][1] = heure[5][0];
    heure[5][0] = '0';
  }
  itoa(sec,heure[6],10);
  if (sec < 10) {
    heure[6][1] = heure[6][0];
    heure[6][0] = '0';
  }
 

    //si appui sur boutonA , change le mode
    if(boutonA.uniquePress()){
      curseur_rgldate++;
    
    }
     if(curseur_rgldate==7){
        curseur_rgldate=0;
        Serial.println(curseur_rgldate);
      }


    //Affichage du mode actuel sur la premiére ligne, et le mode suivant sur la ligne suivante
    ledMatrix.setfont(3);
    
    ledMatrix.putchar(0,0,'>',3);
    
    int len = strlen(rgldate[curseur_rgldate]);
    for (int i=0; i<len; i++)
    {
      ledMatrix.putchar((5+i*5),0,rgldate[curseur_rgldate][i],1);    
    }
    if(curseur_rgldate<7) {
        ledMatrix.putchar(47,0,'0',2);
        ledMatrix.putchar(55,0,'1',2);  
      
//      ledMatrix.putchar(47,0,heure[curseur_rgldate][0],2); // Ne marche pas affiche un 'v'
//      ledMatrix.putchar(55,0,heure[curseur_rgldate][1],2); // Ne marche pas affiche un '0'
    }
    

    // Afiichage Deuxieme ligne
    if(curseur_rgldate+1>=ligne_rgl) // Si curseur sur dernier choix alors affiche en 2eme ligne le premier choix
    {
      len = strlen(rgldate[0]);
      for (int i=0; i<len; i++)
      {
        ledMatrix.putchar((5+i*5),8,rgldate[0][i],1);
      }
    }
    else{
      len = strlen(rgldate[curseur_rgldate+1]);
      for (int i=0; i<len; i++)
      {
        ledMatrix.putchar((5+i*5),8,rgldate[curseur_rgldate+1][i],1);
      }
    }
}

Je reste à votre disposition pour toutes questions ou critique sur mon code. smiley-eek-blue
Pages: [1] 2 3 ... 5