deulign + shield ethernet

Forum spécifique au shield Deuligne

deulign + shield ethernet

Message non lude gaelbaert » Lun 10 Mar 2014 15:20

Bonjour,

Posedant une arduino uno. J'ai comme projet de devoir rentrer des donnée dans une base de donnée, donnée recu en analogique. Le programme pour l'envoie et la conversion des donnée ne ma pas posé de probleme. J'ai voudrais y ajouter une interface visuel donc je suis parti du le deulign. J'ai réussi a créer mes menu comme je le voulais.

Le probleme est le suivant, des que je regroupe mes deux programme, mon shield ethernet ne veut plus se connecter a ma base de donnée et tout les programme plante. Le probleme ce crée a partir du moment où dans mon code source j'ai mis une ligne avec :

- Serial.println("");
- lcd.print("");

A partir du moment où j'ai une de ces ligne qui apparait dans mon code plus moyen de me connecter a la base de donnée.

Cela est-il deja arriver à quelqu'un ou connait-il une solution pour y remédie.

Code: Tout sélectionner
#include <mysql.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Deuligne.h>
#include <Wire.h>

int data = 7; // sorti digital data pour commande vco broche 7
int Fsync1 = 6; // sorti digital syncro vco 1 broche 6
int Fsync2 = 8; // sorti digital syncro vco 2 broche 8
int sck = 5; // sorti digital horloge vco broche 5
unsigned char j;
Deuligne lcd;
const int valeurAna =3;
int valeurLue =0;
int valeur = 0;
int a= 0;
char buffer[5];
int valeurLue2 =0;
int valeur2 = 0;
char buffer2[5];
byte mac[] = { 0x00 , 0x00, 0x00, 0x00, 0x00, 0x01 }; //definition adresse mac
byte ip[] = {172, 16, 241, 200}; //definition de son adresse
byte serveur_addr[] = {172,16,241,1}; //definition adresse base MYSQL
char user[] = "arduino";
char password[] = "00000000";
char INSERT_SQL[] = "INSERT INTO vlf.signal_level VALUES (000,000,NULL)";
Connector my_conn;
boolean test;



void setup()
{
  //configuratiion intercarte
  pinMode(data,OUTPUT);
  pinMode(Fsync1,OUTPUT);
  pinMode(Fsync2,OUTPUT);
  pinMode(sck,OUTPUT);
 
  digitalWrite(data,LOW);
  digitalWrite(Fsync1,LOW);
  digitalWrite(Fsync2,LOW);
  digitalWrite(sck,HIGH);
 
  //configuration lcd
  lcd.init();
  //configuration ethernet
  Ethernet.begin(mac, ip); //initialisation mac et ip
  Serial.begin (115200);
  delay (1000);
 
 
 
 
 
}
void loop ()
{
  a = lcd.get_key();
  if (a==1)
  {
    delay(200);
    lcd.clear();
   
    confirmationenvoie();
  }
 
   
 
}

void confirmationenvoie()
{
  while (1)
  {
    a = lcd.get_key();
   
    if (a==4)
    {
      delay(200);
      envoiedonnee();
      lcd.clear();
    }
    if (a==2)
    {
       delay(200);
       break;
       lcd.clear();
    }
    if (a==3)
    {
      delay(200);
      break;
      lcd.clear();
    }
    if (a==0)
    {
      delay(200);
      break;
      lcd.clear();
    }
   
   
  }
}
void envoiedonnee()
{
  Serial.println("connection ...");
  my_conn.mysql_connect (serveur_addr,3306,user,password);
  while (1)
  {
   a=lcd.get_key();
   
    if (a==4)
    {
      delay(200);
      break;
    }
  lcd.clear();
  station1();
  lirevaleur1();
  station2(); 
  lirevaleur2();
  envoievaleur();
 }
}
void emet(unsigned int valeur,unsigned char voie)

{
   if (voie==0)  digitalWrite(Fsync1,LOW);
   else
   digitalWrite(Fsync2,LOW);
 
   for (j=0;j<16;j++)
 
  {
    if((valeur&0x8000)==0x8000) digitalWrite(data,HIGH);
    else digitalWrite(data,LOW);
    digitalWrite(sck,LOW);
    digitalWrite(sck,HIGH);
    valeur=valeur<<1;
  }
  digitalWrite(Fsync1,HIGH);
  digitalWrite(Fsync2,HIGH); 
}

void lirevaleur1()

{
    valeurLue=analogRead(valeurAna);
    valeur = map(valeurLue,0,1023,0,255);
    itoa(valeur,buffer,10);
}

void lirevaleur2()
{
  valeurLue2=analogRead(valeurAna);
    valeur2 = map(valeurLue2,0,1023,0,255);
    itoa(valeur2,buffer2,10);
}

void envoievaleur()
{
  //traitement valeur 1
    if (valeur>99)
      {
        INSERT_SQL[37]=buffer[0];
        INSERT_SQL[38]=buffer[1];
        INSERT_SQL[39]=buffer[2];
     
      }
      else if (valeur>9)
      {
        INSERT_SQL[37]='0';
        INSERT_SQL[38]=buffer[0];
        INSERT_SQL[39]=buffer[1];
     
      }
        else
       {
        INSERT_SQL[37]='0';
        INSERT_SQL[38]='0';
        INSERT_SQL[39]=buffer[0];
         }
         
         //traitement valeur 2
         if (valeur2>99)
      {
        INSERT_SQL[41]=buffer2[0];
        INSERT_SQL[42]=buffer2[1];
        INSERT_SQL[43]=buffer2[2];
     
      }
      else if (valeur2>9)
      {
        INSERT_SQL[41]='0';
        INSERT_SQL[42]=buffer2[0];
        INSERT_SQL[43]=buffer2[1];
     
      }
        else
     {
        INSERT_SQL[41]='0';
        INSERT_SQL[42]='0';
        INSERT_SQL[43]=buffer2[0];
     }
     
        test=my_conn.cmd_query(INSERT_SQL);
   
    Serial.println (INSERT_SQL);
}



void station1()
{
 
    emet(0x2000,1);
    emet(0x7BE7,1);
    emet(0x4027,1);
    lcd.setCursor(4,0);
    lcd.print("Station 1");
    delay(1000);
}
void station2()
{
 
    emet(0x2000,1);
    emet(0x7BE7,1);
    emet(0x4027,1);
    lcd.setCursor(4,0);
    lcd.print("Station 2");
    delay(1000);
}

 



Dans l’état actuel cela fonctionne malgré les deux lcd.print a la fin je ne ces pas pourquoi.
gaelbaert
 
Messages: 5
Inscription: Mer 29 Jan 2014 14:57

Re: deulign + shield ethernet

Message non lude phil » Lun 10 Mar 2014 16:02

Peut etre que c'est un probleme de RAM...

Tu peux utiliser ça pour tester la RAM dispo
http://playground.arduino.cc/Code/AvailableMemory

Il y a deux trois truc a faire pour liberer un peu de RAM
Code: Tout sélectionner
int data = 7; // sorti digital data pour commande vco broche 7 . A remplacer par ==> #define data 7
int Fsync1 = 6; // sorti digital syncro vco 1 broche 6. A remplacer par #define Fsync1 6
int Fsync2 = 8; // sorti digital syncro vco 2 broche 8 . A remplacer par #define Fsync2 8
int sck = 5; // sorti digital horloge vco broche 5. A remplacer par #define sck 8
unsigned char j;
Deuligne lcd;
const int valeurAna =3;//a remplacer par #define valeurAna 3
int valeurLue =0;
int valeur = 0;
int a= 0;
char buffer[5];
int valeurLue2 =0;
int valeur2 = 0;
char buffer2[5];
byte mac[] = { 0x00 , 0x00, 0x00, 0x00, 0x00, 0x01 }; //definition adresse mac
byte ip[] = {172, 16, 241, 200}; //definition de son adresse
byte serveur_addr[] = {172,16,241,1}; //definition adresse base MYSQL
char user[] = "arduino"; //a remplacer par #define user arduino (pas sur que ça marche...)
char password[] = "00000000"; //a remplacer par #define password 00000000 (pas sur que ça marche...)
char INSERT_SQL[] = "INSERT INTO vlf.signal_level VALUES (000,000,NULL)";
Connector my_conn;
boolean test;

....



ça doit libérer 19 octets de RAM
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19


Retourner vers Deuligne

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron