Show Posts
Pages: [1] 2
1  International / Français / Re: Incompréhension transfert de valeurs par le port serie on: February 16, 2014, 06:55:35 am
Je transmet avec une paire d'APC220, par contre, les essais effectués, sont faits avec une liaison filaire entre les 2 MCU (Tx-Rx et GND)

Toutes les liaisons séries sont faites à 9600 Bauds.

Après, dans le terminal Série (No line Ending    9600 Bds     /     Autoscroll)

Merci
2  International / Français / Re: Incompréhension transfert de valeurs par le port serie on: February 16, 2014, 05:42:40 am
Merci pour la remarque,

mais cela n'a rien changé, je reçois toujours "  ÿ  ", sur le terminal Série du PC
3  International / Français / Re: Incompréhension transfert de valeurs par le port serie on: February 16, 2014, 05:22:07 am
Merci pour vos réponses, j'ai compris les boucles FOR !!!
J'ai modifié le code, les boucles s'executent, par contre les données renvoyées sur le terminal du PC ressemblent à "  ÿ  " !!!
Rien à voir avec ce que j'ai envoyé.
- Est ce que le MEGA 2560 interprète bien 'A'   ???
- Pourquoi la valeur renvoyée est "  ÿ  "    ???

Merci de votre aide !

Olivier

EMETTEUR
Code:
// Mega 1280  EMETTEUR

char Valeurs[4] = {'A','B','C','D'};
int Start = 2;
void setup()
{
Serial1.begin(9600);
pinMode (Start, HIGH);
pinMode (2, OUTPUT);
}
void loop()
{
  digitalWrite (2, HIGH);
//  if (digitalRead (Start) == HIGH){
    for (int i=0 ; i < 6 ; i++){
      if (i == 5){
        Serial1.println();
        break;
      }
      Serial1.println (Valeurs[i]);
      delay (100);
     }
//  }
}

RECEPTEUR:
Code:
// MEGA 2560 RECEPTEUR
char Valeurs[4];
char Temp = 0;
void setup()
{
Serial1.begin(9600);
Serial.begin(9600);
}
void loop()
{
  for(int i=0 ; i < 5 ; i++)
  {
   Valeurs[i] = Serial1.read ();
//   Serial.print ("DECIMAL:  ");
//   Serial.println (Valeurs[i], DEC);  // print as an ASCII-encoded decimal
//   Serial.print ("HEXA:  ");
//   Serial.println (Valeurs[i], HEX);  // print as an ASCII-encoded hexadecimal
//   Serial.print ("OCTAL:  ");
//   Serial.println (Valeurs[i], OCT);  // print as an ASCII-encoded octal
//   Serial.print ("BINAIRE:  ");
//   Serial.println (Valeurs[i], BIN);  // print as an ASCII-encoded binary
//   Serial.print ("RAW:  ");
   Serial.println (Valeurs[i],DEC);
   delay (250);
  }
}
4  International / Français / Nouveau club electronique / Robotique / Arduino en Nord Isere isererobot.fr on: February 15, 2014, 07:22:39 pm
Nous créons un club électronqiue, robotique, arduino, pour ceux qui sont intéressés.

Tous niveaux acceptés !

Prochaine réunion le Vendredi 21 février à 20H00, salle des fêtes de Rochetoirin,

si vous êtes intéressés, cela n'engage à rien, venez avec vos idées !!!
plus d'informations:
http://www.isererobot.fr
5  International / Français / Incompréhension transfert de valeurs par le port serie on: February 15, 2014, 06:17:02 pm
Bonjour a tous après BEAUCOUP de recherches personnelles, j'en suis arrivé à la conclusion que je ne comprends rien au port Série !
J'ai besoin de votre aide, jute pour comprendre comment envoyer et recevoir, correctement, des données par le port série:
1 MEGA 1280 envoie par liaison série (sans fil) à un MEGA 2560 un array de 4 valeurs.
le MEGA 2560 les envoi sur le port Série relié au PC, le PC les affiche dans le terminal (Ctrl Maj M).
Code de l'émetteur:
Code:
// Mega 1280  EMETTEUR

char Valeurs[4] = {'A','B','C','D'};
int Start = 2;
void setup()
{
Serial1.begin(9600);
pinMode (Start, HIGH);
}
void loop()
{
  if (digitalRead (Start) == HIGH){
    for (int i=0 ; i == 5 ; i++){
      if (i == 5){
        Serial1.println();
        break;
      }
      Serial1.print (Valeurs[i]);
      delay (100);
     }
  }
}

code du récepteur:
Code:
// MEGA 2560 RECEPTEUR
char Valeurs[4];
char Temp = 0;
void setup()
{
Serial1.begin(9600);
Serial.begin(9600);
}
void loop()
{
  for(int i=0 ; i==4 ; i++)
  {
   Valeurs[i] = Serial1.read ();
   Serial.println (Valeurs[i]);
   delay (100);
  }
}

Si quelqu'un pourrait me dire:
- Pourquoi je ne reçois rien sur le terminal Série du PC ?
- Est ce que si je vois inscrit (sur le terminal du PC) :  A   , le MEGA 2560 verra, lui aussi un A ?
- N'y a t'il pas quelques règles à respecter pour l'envoi et la réception de valeurs par le port Série ?

Merci à vous

Olivier
6  Using Arduino / Displays / Re: Graphic LCD Double text problem on: February 03, 2013, 04:44:11 am
Ok, thanks for reply,

i am agree with you that both chips receiving the same info, but i am sure that CS1 and CS2 are not connected together and it works with the demo program !

Please, do you have other idea ?
7  Using Arduino / Displays / Graphic LCD Double text problem on: February 02, 2013, 06:27:24 pm
Hello, thanks for this great forum !!!

 i'm running a 128x64 Graphic LCD with a Arduino MEGA 2560, and i try to make lines of text display on the screen,

Everything works fine with the demo Program, but with my program everything is displayed 2 times

this is a part of my program.

thanks

Code:

#include <glcd.h>
#include "fonts/Arial14.h"         // proportional font
#include "fonts/SystemFont5x7.h"   // system font

void setup()
{
  GLCD.Init();   // initialise the library, non inverted writes pixels onto a clear screen
}

void loop(){
  GLCD.ClearScreen();
  GLCD.SelectFont(System5x7);
  GLCD.Puts("PROGRAMME");
  GLCD.CursorTo (0 , 1);
  GLCD.Puts ("HEAT V1.06");
  delay (2000);
}

8  Using Arduino / Sensors / Nano and float bas result on: December 16, 2012, 09:09:12 am
Hello,

i"m here to ask for a bad result of float data acquisition on NANO Card.

I'm acquiring, with PulseIn(), the lenght (in µS) of a square wave impulsion.

Next i want to transform it to Second.

The problem is that the Float variable is limited at 0,001, no more decimals available.

I also, tried with Double, and get the same problem.

--> Do you know how to increase the decimal numbers.


thanks

Olivier
9  Using Arduino / Programming Questions / Re: DS1307 SPI incorrect values on: October 25, 2011, 01:16:07 pm
Thank you Paul for your informations !

I found my mistake,
i changed the Date/Time values type to INT, removed ,DEC at the end of each string addition, everything is running bright !


Many thanks for your help


Regards
10  Using Arduino / Programming Questions / Re: DS1307 SPI incorrect values on: October 25, 2011, 12:28:31 pm
Ok PaulS, but how do you explain that there is value "10" for all Date/time values ?

I fell that my values are not formatted correctly, but how do you do it ?


Please let me know,

Regards
11  Using Arduino / Programming Questions / DS1307 SPI incorrect values on: October 25, 2011, 12:26:25 am
Hi, i can't find solution at my problem,

maybe someone coud help me !

I'm running with an arudino MEGA2560, DS1307 is connected via I2C, SD Card is connected to SPI.


On the first code, it is a function to acquire date on RTC DS1307 (date and time variables are declared as byte)

On the second part of code, it a a string arrangement to send values to SD CARD file.
For date and time values, the data sent to the file are always "10", i can't have the real date and time values, i'm sure that the DS1307 is giving good informations (it's working with demo program)

I feel that the problem is in string arrangement with date/time variable format.

Please can you help me ?


Thanks

Code:
void getDateDs1307()
{
  // Reset the register pointer
  Wire.beginTransmission(0x68);
  Wire.send(0);
  Wire.endTransmission();
  Wire.requestFrom(0x68, 7);
 
  second     = bcdToDec(Wire.receive() & 0x7F);
  minute     = bcdToDec(Wire.receive());
  hour       = bcdToDec(Wire.receive() & 0x3F);  // Need to change this if 12 hour am/pm
  dayOfWeek  = bcdToDec(Wire.receive());
  dayOfMonth = bcdToDec(Wire.receive());
  month      = bcdToDec(Wire.receive());
  year       = bcdToDec(Wire.receive());
 
  Serial.print(hour,DEC);
  Serial.print(":");
  Serial.print(minute,DEC);
  Serial.print(":");
  Serial.print(second,DEC);
  Serial.print(" ");
  Serial.print(dayOfMonth,DEC);
  Serial.print("/");
  Serial.print(month,DEC);
  Serial.print("/20");
  Serial.print(year, DEC);
  Serial.println();
}



Code:

getDateDs1307(); 

dataString = "*** ";                      // *** sur la chaine de caractères
        dataString += commentaire;                // Ajout de la chaine commentaire dans la chaine de caractères
        dataString += "***";                      // *** sur la chaine de caracteres
        dataString += ";";
        dataString += hour;
        dataString += ":";
        dataString += minute;
        dataString += ":";
        dataString += (second,DEC);
        dataString += ";";
        dataString += (dayOfMonth,DEC);
        dataString += "/";
        dataString += (month,DEC);
        dataString += "/20";
        dataString += (year,DEC);
       
12  Using Arduino / Networking, Protocols, and Devices / Re: DS1307 problems on: October 24, 2011, 04:01:03 pm
Thank you PaulS, it works fine ! You tips was the right one !

Following, i found why my DS1307 was not working, i was missing Wire.begin() inside setup !

Now i still have a last problem before running my Arduino on heater:

On the first code, it is a function to acquire date on RTC DS1307 (date and time variables are declared as byte)

On the second part of code, it a a string arrangement to send it to SD CARD file.
The data sent to the file are always "10", i can't have the real date and time values, i'm sure that the DS1307 is giving good informations.

I feel that the problem is in string arrangement with date/time variable format.

Please can you help me ?


Thanks

Code:
void getDateDs1307()
{
  // Reset the register pointer
  Wire.beginTransmission(0x68);
  Wire.send(0);
  Wire.endTransmission();
  Wire.requestFrom(0x68, 7);
 
  second     = bcdToDec(Wire.receive() & 0x7F);
  minute     = bcdToDec(Wire.receive());
  hour       = bcdToDec(Wire.receive() & 0x3F);  // Need to change this if 12 hour am/pm
  dayOfWeek  = bcdToDec(Wire.receive());
  dayOfMonth = bcdToDec(Wire.receive());
  month      = bcdToDec(Wire.receive());
  year       = bcdToDec(Wire.receive());
 
  Serial.print(hour,DEC);
  Serial.print(":");
  Serial.print(minute,DEC);
  Serial.print(":");
  Serial.print(second,DEC);
  Serial.print(" ");
  Serial.print(dayOfMonth,DEC);
  Serial.print("/");
  Serial.print(month,DEC);
  Serial.print("/20");
  Serial.print(year, DEC);
  Serial.println();
}










Code:
getDateDs1307(); 

dataString = "*** ";                      // *** sur la chaine de caractères
        dataString += commentaire;                // Ajout de la chaine commentaire dans la chaine de caractères
        dataString += "***";                      // *** sur la chaine de caracteres
        dataString += ";";
        dataString += hour;
        dataString += ":";
        dataString += minute;
        dataString += ":";
        dataString += (second,DEC);
        dataString += ";";
        dataString += (dayOfMonth,DEC);
        dataString += "/";
        dataString += (month,DEC);
        dataString += "/20";
        dataString += (year,DEC);
       
13  Using Arduino / Networking, Protocols, and Devices / Re: DS1307 problems on: October 23, 2011, 12:27:13 pm
Hi PaulS, thanks for helping me,

my problem is with this part of code.

First, during serial connection, i write C with text after and sending to Arduino.
Arduino needs to read each character, adding the current date/time and write them inside SD file AND send the String to the serial.
The string sended to Arduino by Serial is for example: CAAA, but when arduino send it back to Serial, it sends 656565.

So i would him to send AAA.

Please help me,

Regards


Code:
if (command == 'C')                        // Si le caractère C est envoyé
          {
        int chrserial = 0;
        String dataString = "";
        String commentaire = "";
            for (int i=0 ; i<10 ; i++){
        chrserial = Serial.read ();             // Lecture du commentaire sur le port série
        commentaire += chrserial;
            }
           
        dataString = "*** ";                      // *** sur la chaine de caractères
        dataString += (commentaire);              // Ajout de la chaine commentaire dans la chaine de caractères
        dataString += "***";                      // *** sur la chaine de caracteres
        File dataFile = SD.open("data00.csv", FILE_WRITE);   // Ouverture du fichier Data00/csv sur la carte SD
            if (dataFile) {                                  // Si le fichier existe
            dataFile.println(dataString);                    // Ecriture de la chaine de caractères
            dataFile.close();                                // Fermeture du fichier dans la carte SD
            Serial.println ("Commentaire ajouté :");         // Envoi sur le porte série du résultat
            Serial.print (commentaire);                 // Envoi sur le porte série du commentaire ajouté
            }
14  Using Arduino / Networking, Protocols, and Devices / Re: DS1307 problems on: October 23, 2011, 10:45:22 am
Sorry,

i forgot to tell you, that i'm using Arduino Mega 2560, I2C connected to 20 et 21 (I2C SDA/SCL).
I'm sure it is a syntax problem, because when using DS1307 demo program, all is functionning ok !

For ASCII, i tried what you tell Serial.print(Val,DEC), but it continue giving a A as 65.

Please let me know

Olivier
15  Using Arduino / Networking, Protocols, and Devices / DS1307 problems on: October 23, 2011, 08:53:35 am
Hi,
i'm neewby on arduino, so please i need help,
It is a datalogger with Analog senders, RTC DS1307 on SPI bus and SD Card
--> I can't make the Date/time functionning when building the String for SD File
--> I can't make the caracters sended to Serial being "A" and not 65, i feel that's is ASCII form, but i don't know how to convert it !

If someone have ideas, please, let me know !


Thanks

Code:

#include <SD.h>
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68  // This is the I2C address
#include <LiquidCrystal.h>
/*
The circuit:
 * LCD RS pin to digital pin 8
 * LCD Enable pin to digital pin 3
 * LCD D4 pin  to digital pin 4
 * LCD D5 pin  to digital pin 5
 * LCD D6 pin  to digital pin 6
 * LCD D7 pin  to digital pin 7
 * SD  MISO    to digital pin 50
 * SD  MOSI    to digital pin 51
 * SD  SCK     to digital pin 52
 * SD  SS      to digital pin 53
 * Led         to digital pin 32
 * Bouton      to digital pin 30
 */
int command = 0;                                                // Déclaration de la variable de stockage de la commande envoyée par le port série     
int i;
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;  // déclaration des variables de stockage de la date et heure
const int buttonPin = 30;                                       // Declaration du port E/S du bouton
const int ledPin =  32;                                         // Declaration du port E/S de la led de statut
int buttonState = 0;                                            // variable de stockage du statut du bouton

byte decToBcd(byte val)                                         // Conerti les nombres décimaux en nombres binaires codés en décimal
{
  return ( (val/10*16) + (val%10) );
}
 
byte bcdToDec(byte val)                                          // Converti les nombres binaires codés decimal en nombres décimaux normaux
{
  return ( (val/16*10) + (val%16) );
}
 
void Print2Digit(byte Val)
{
  if (Val < 10)
  {
    Serial.print("0");
  } 
  Serial.print(Val, DEC);
}

// Gets the date and time from the ds1307 and prints result
void getDateDs1307()
{
  // Reset the register pointer
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.send(0x00);
  Wire.endTransmission();
 
  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
 
  // A few of these need masks because certain bits are control bits
  second     = bcdToDec(Wire.receive() & 0x7F);
  minute     = bcdToDec(Wire.receive());
  hour       = bcdToDec(Wire.receive() & 0x3F);  // Need to change this if 12 hour am/pm
  dayOfWeek  = bcdToDec(Wire.receive());
  dayOfMonth = bcdToDec(Wire.receive());
  month      = bcdToDec(Wire.receive());
  year       = bcdToDec(Wire.receive());
 
  Serial.print ("flag");
  Serial.println (second);
 
  Print2Digit(hour);
  Serial.print(":");
  Print2Digit(minute);
  Serial.print(":");
  Print2Digit(second);
  Serial.print("  ");
  PrintDayName(bcdToDec(dayOfWeek));
  Serial.print(" ");
  Print2Digit(dayOfMonth);
  Serial.print("-");
  PrintMonthName(bcdToDec(month));
  Serial.print("-20");
  Serial.print(year, DEC);
  Serial.println();
}

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8,3, 4,5,6,7);
int sensorcorr = 0;
int Val7 = 0;
int analogPin = 0;
int sensor = 0;

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  Serial.begin(9600);
  const int chipSelect = 53;
  Serial.print("Init. SD Card...");
  pinMode(53, OUTPUT);
 
  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Carte muette ou absente");
    // don't do anything more:
    return;
  }
  Serial.println("carte initialisee.");
   pinMode(ledPin, OUTPUT);     
  // initialize the pushbutton pin as an input:
   pinMode(buttonPin, INPUT);     
}
 
void loop() {
  buttonState = digitalRead(buttonPin);          // Vérifie l'état du bouton 30 est appuyé
 
  if (buttonState == HIGH) {                     // Si le bouton est appuyé
    // turn LED on:   
    digitalWrite(ledPin, HIGH);                  // Allumage de la Led 32
    Logging();
  }
  else {
    digitalWrite(ledPin, LOW);                   // Extinction de la led 32
 
  int commentaire = 0;
   if (Serial.available())                        // Vérifie si la connexion Série est disponible
    {     
      command = Serial.read();                    // lecture de la commande série
      if (command == 'T')                         // Si le caractère T est envoyé alors
        {     
          setDateDs1307();                        // Lance la fonction SetDateDs1307()
          Serial.println("Set time OK");          // Envoi sur le porte série
          Serial.println();                       // Envoi saut de ligne sur le port Série
          getDateDs1307();                        // Envoi la date et l'heure courante sur le port série
        }
       if (command == 'C')                        // Si le caractère C est envoyé
          {
        int chrserial = 0;
        String dataString = "";
        String commentaire = "";
            for (int i=0 ; i<10 ; i++){
        chrserial = Serial.read ();             // Lecture du commentaire sur le port série
        commentaire += chrserial;
            }
           
        dataString = "*** ";                      // *** sur la chaine de caractères
        dataString += (commentaire);              // Ajout de la chaine commentaire dans la chaine de caractères
        dataString += "***";                      // *** sur la chaine de caracteres
        File dataFile = SD.open("data00.csv", FILE_WRITE);   // Ouverture du fichier Data00/csv sur la carte SD
            if (dataFile) {                                  // Si le fichier existe
            dataFile.println(dataString);                    // Ecriture de la chaine de caractères
            dataFile.close();                                // Fermeture du fichier dans la carte SD
            Serial.println ("Commentaire ajouté :");         // Envoi sur le porte série du résultat
            Serial.print (commentaire);                 // Envoi sur le porte série du commentaire ajouté
            }
        }
    }
 }
 
 
lcd.clear();                                        // Effacement afficheur
Val7 = analogRead(A7);                              // lecture voie analogique 7A7

lcd.setCursor(0,0);                                  // Positionnement curseur à ligne 0, colonne 0
lcd.print("Maison:");                                // Affichage sur le LCD "Maison"
Val7 = Val7/2;                                       // Conversion de la valeur Maison
lcd.setCursor (7,0);                                 // Positionnement curseur à la ligne 0, colonne 7
lcd.print(Val7);                                     // Affichage de la valeur de A7
}

void Logging(){                                             // Sub routine Logging
  getDateDs1307();                                          // Affichage de la date et heure courant
  delay(1000);
 
  String dataString = "" ;                                  // Confection du String pour enregistrement dans le fichier
  dataString +=" ";
  dataString +=";";
  dataString += (hour,DEC);
  dataString += ":";
  dataString += (minute,DEC);
  dataString += ":";
  dataString += (second,DEC);
  dataString += ";";
  dataString += (dayOfMonth,DEC);
  dataString += "/";
  dataString += (month,DEC);
  dataString += "/";
  dataString += (year,DEC);
  dataString += ";";
  dataString += Val7;
   
  File dataFile = SD.open("data00.csv", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    // print to the serial port too:
    Serial.println(dataString);
  } 
  // if the file isn't open, pop up an error:
  else {
    Serial.println("impossible d'ouvrir data00.csv");
  }
}

Pages: [1] 2