Show Posts
Pages: [1]
1  International / Français / Re: transfert sans fil des données EEPROM d'un arduino a l'autre? on: January 11, 2013, 03:11:04 am
en fait je me rends comptes que ma question est mal posée..
l'utilisation de l'arduino "maitre" avec l'ecran de controle tactile n'est necessaire uniquement de temps en temps pour les mises a jour de l'eeprom de l'arduino esclave.
le but etant je le rappelle laisser un maximum de sortie pwm sur l'arduino esclave.

ayant deja tenté d'etablir une communication permanente rx/tx entre les 2 arduinos qui geraient chacun des sorties pwm. l'arduino maitre envoyé en permanence des infos que l'arduino esclave "executait" et s'adaptait ..mais cette solution a therme n'etait pas fiable....
je suis partie dans ma question sur un type de communication sans fil pour envoyer les infos de l'un a l'autre. mais en fait je me rends compte que ca doit etre tout a fais faisable de le faire en filaire , de brancher l'arduino 1( je dis arduino 1 au lieu de maitre) sur le 2eme, et de modifier les valeurs de l'eeprom de l'arduino 2 et de les debrancher une fois la mise a jour effectuée. les 2 arduinos etant autonome, l'arduino avec l'ecran pouvant modifier les valeurs de l'eeprom du 2eme..

j'espere que c'est un peu plus clair....je vais prendre un café lol
2  International / Français / Re: transfert sans fil des données EEPROM d'un arduino a l'autre? on: January 10, 2013, 05:46:05 pm
merci encore...

non je n'ai aucun probleme de portée...les 2 arduinos seront max a 2 m l'un de l'autre....
3  International / Français / Re: transfert sans fil des données EEPROM d'un arduino a l'autre? on: January 09, 2013, 02:16:19 pm
merci pour vous reponses..

j'ai besoin juste de transferer une fois de temps en temps les données de l'eeprom....
c'est une rampe led qui s'eclaire tous les jours a l'heure voulu avec l'intensité voulue....ce transfert ne se fera que si je veux changer ces parametres.
vous utiliseriez quel materiel sans fil pour le faire?
4  International / Français / transfert sans fil des données EEPROM d'un arduino a l'autre? on: January 07, 2013, 06:56:12 pm
bonjour,
j'aurai voulu savoir s'il etait possible de transferer les données programmées et stockées dans un arduino (eeprom) sur un autre arduino et le tout sans fil?
est ce que le module x-bee peut servir?

le but etant de programmer par ecran tactile un arduino, (cette partie c'est bon), et d'envoyer les valeurs enregistrées sur l'eeprom vers l'eeprom d'une autre carte arduino et le tout sans fil (je ne veux pas d'ecran pour cette 2eme carte)...le but etant de liberer des sorties PWM normalement associés a l'ecran et ainsi pouvoir les reutiliser pour autre chose (controle de led)

merci
5  International / Français / Re: [Résolu]comment controler la vitesse d'un ventilateur de pc? on: June 05, 2012, 08:19:24 am
bonjour,
comment tu l'as remarqué je suis debutant en electronique, et bidouilleur amateur, je ne suis donc pas familier avec les termes...mais j'arrive a comprendre...desfois LOL smiley-mr-green
quand tu dis que tu mets des diodes, tu parles de resistances?, la somme de ces diodes en serie fait combien, ? le calcul est il aussi simple de mettre des resistances selon la formule de base U=RI, pour avoir une tension désirée.....je me souviens avoir utilisé un LM35 (ou 37 je ne sais plus) et quelques resistances pour faire passer la tension de 12 a 10..serait plutot par la qu il faut voir les choses?
merci
6  International / Français / Re: comment controler la vitesse d'un ventilateur de pc? on: June 04, 2012, 05:05:44 pm
merci,
ca marche....a priori il s'agit bien d'un probleme de masse..
j'utilise maintenant la meme alim 12v pour commander l'arduino et le ventilo....et j'arrive a controler le ventilo avec la meme pin (et le meme code) que pour le pwm de mes leds, sans jouer sur le timer....
la partie hardware etant concluante il n'y a plus qu'a relier tout ca avec un capteur de temperature...ca devrait aller
merci encore pour votre aide
7  International / Français / Re: comment controler la vitesse d'un ventilateur de pc? on: June 04, 2012, 07:25:53 am
merci macman pour ta reponse
effectivement je n'ai pas connecté la masse du ventilo a celle de l'arduino.
d'ailleurs avant de faire une betise,qu'elle est la bonne solution...utiliser juste la borne +12v de l'alim ext sur l'entrée du ventilo sans utiliser la masse de l'alim externe, mais relier la masse de l'arduino avec celle du ventilo?... ou brancher +12v et la masse de l'alim sur le ventilo et mettre un cable entre la masse de l'arduino et la masse du ventilo ?
merci...
autre question, il me semble que l'arduino peut etre alimenter avec un transfo de 7v a 12v.....puis je utiliser le +12v, pour brancher egalement le ventilo?
8  International / Français / [Résolu]comment controler la vitesse d'un ventilateur de pc? on: June 03, 2012, 05:42:41 pm
bonjour,
je souhaite faire varier la vitesse d'un ventilateur en fonction de la temperature mesurée...
j'ai un capteur de temperature ds18b20, j'arrive a lire la temperature...pas de probleme(j'y reviendrai plus tard)
j'ai acheté un ventilo avec controle PWM inclus (noctua NF-P12 PWM)
je pensais betement pouvoir controler avec la fonction analogwrite..
il y a 4 fils...12v (rouge), masse (noire),PWM (bleu), tachometre (vert) ....j'ai relié a une alimentation externe en 12v, le fil bleu a une sortie pwm de l'arduino et le vert ...a rien...
premiere question, faut il relier ce fil (qui donne la vitesse RPM si j'ai bien compris) a quelque chose?...j'ai lu un sujet ou il me semble qu'il la reliait a une sortie digital (sans aucun composant entre la carte et le fil) url=http://forum.myduino.com/viewtopic.php?f=1&t=20 quelqu'un peut il me confirmer?
j'ai lu pas mal de sujet, avec des ventilos ayant 3 fils mais quasi rien avec ceux a 4 fils.
Avant de compliquer le code, je souhaite juste voir si j'arrive a modifier manuellement la vitesse par la commande analogwrite.
j'ai lu egalement qu'il fallait modifier le timer
je teste actuellement un petit prog trouvé http://www.civade.com/post/2011/05/25/Snootlab-Essai-de-l-Arduino-i2C-Power-proto-shield-ventilateurs-pwm-ds1820-fanduino (que j'ai un peu modifié): il ne s'agit pas d'un ventilo avec 4 fils...je n'ai pas utilisé de VN67AF
Code:
/*
 Fanduino: 2 channels DS1820 based temperature fan controller

 Fans are controlled by a PWM output connected on
   * D3 for Fan 1 (PinA)
   * D11 for fan 2 (PinB)
  
 Onewire lib reads is values on D10
 
 Sample drive circuit for pwm outputs :
                                                +12V
                   N CHANNEL FET                 |
 D11                 (ex:VN67AF)    ------------ |
 or                   __-----------|  -fan +fan  |
 D3            Gate /    \  Drain   ------------
   ---\/\/\/---*---|      |            12V Fan
 on   120ohms  |    \    /
 arduino       \      --
               / 10K   | Source
               \       |
               /       |
               |       |
              GND     GND
 
 DS1820 wiring :
 1: GND
 2: D10 on arduino. A pull up of 4K7 MUST be wired also on pin 10.
 3: VCC (5V)
 TOP VIEW
   ---
 /     \
|       |
 -------
 1  2  3
 v1.0 creation
 V1.1 Add softstart, and stop under Tmin
 */

#include <OneWire.h>
#include <DallasTemperature.h>

int pinA = 11; // pin 3 and 11 are PWM output controled by Timer2
//int pinB = 11; // connect pinA/B to H-Bridge

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 49

// Setup a oneWire instance to communicate with any OneWire devices aa(not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature tempbacsensor(&oneWire);

  // Compute linearization constant
  // Fan1
  float Fan1Min=50;    // PWM is between 40 and 255 for that fan (8 bit pwm)
  float Fan1Max=255;
  float Temp1Min=20.0;  // relinearization will be done between 20 Celcius (pwm=Fan1Min)
  float Temp1Max=25.0;  // to 48 celcius (pwm=Fan1Max)
/*  // Fan2
  float Fan2Min=50;
  float Fan2Max=255;
  float Temp2Min=25.0;
  float Temp2Max=50.0;
 */
  //  
  float K1=(Fan1Max-Fan1Min)/(Temp1Max-Temp1Min);
//  float K2=(Fan2Max-Fan2Min)/(Temp2Max-Temp2Min);
  
  //
  boolean Fan1Active=FALSE;
//  boolean Fan2Active=FALSE;
float tempbac;
void setup(){
 
  // See wxxxxxxxxxxxxxxx
  //__________________________________TIMER2_for_Motor_PWM_________________________________
  // set TIMER2 for PWM 31 kHz
  //
  // clear all prescaler bits in TCCR2B = the last 3 Bits
  // leave other bits as set by arduino init() in wiring.c
  byte mask = B11111000;
  TCCR2B &= mask; // TCCR2B is now xxxxx000
  //
  // set CS22:20 in TCCR2B see p 156 of datasheet
  TCCR2B |= (0<<CS22) | (0<<CS21) | (1<<CS20); // same as TCCR2B |= B00000001; TCCR2B is now xxxxx001

  //__pinmode
  pinMode(pinA,OUTPUT);
 // pinMode(pinB,OUTPUT);

  // start serial port
  Serial.begin(9600);
  Serial.println("Fanduino: DS1820 based temperature fan controller");

  // Start up the library
 // sensors.begin();
  tempbacsensor.begin();
}

void loop()  {
  // call sensors.requestTemperatures() to issue a global temperature request
  //sensors.requestTemperatures(); // Send the command to get temperatures
  tempbacsensor.requestTemperatures();
  // read sensors values
 
 tempbac = tempbacsensor.getTempCByIndex(0);
 // float T1 = sensors.getTempCByIndex(0);
 // float T2 = sensors.getTempCByIndex(1);
  // skip conversion error

if ( tempbac>0 )
//  if ( ( T1>-127.00 ) && ( T2 > -127.0) )
    {
    // print them on serial
    Serial.print("Temp1: ");
    Serial.print(tempbac);  
   // Serial.print(" Temp2: ");
  //  Serial.print(T2);  
    boolean SoftStart=FALSE;
    // Softstart with hysterisis  0.3 degrees
    if ( (tempbac > Temp1Min+0.3) && !Fan1Active) {
      Fan1Active=TRUE;
      SoftStart=TRUE;
      analogWrite(pinA, 200);
      }
     /*if ( (T2 > Temp2Min+0.3) && !Fan2Active) {
      Fan2Active=TRUE;
      SoftStart=TRUE;
      analogWrite(pinB, 200 );
      } */    
    if (SoftStart)
      delay (750);
    // normalize values between TempXMin and TempXMax
    if (tempbac < Temp1Min) {
      tempbac = Temp1Min;
      if (Fan1Active) {
        Fan1Active=FALSE;
        }
      }
    if (tempbac > Temp1Max)
      tempbac = Temp1Max;
  
 /*   if (T2 < Temp2Min) {
      T2 = Temp2Min;
      if (Fan2Active) {
        Fan2Active=FALSE;
        }
      }
    if (T2 > Temp2Max)
      T2 = Temp2Max;
   */
    // compute pwm value
    // when temp will be from TempXMin celcius to TempXMax, pwm will be from FanXMin to FanXMax
    float Pwm1=0;
  //  float Pwm2=0;
    if (Fan1Active)
      Pwm1=((tempbac-Temp1Min)*K1)+Fan1Min;
  //  if (Fan2Active)
   //   Pwm2=((T2-Temp2Min)*K2)+Fan2Min;
  
    // print pwm values on serial for debugging
  //  Serial.print   (" PWM1: ");
 //   Serial.print   ( Pwm1 );
 //   Serial.print   (" PWM2: ");
  //  Serial.print ( Pwm2 );
 //   if (Fan1Active) Serial.print ( " 1" );
  //  if (Fan2Active) Serial.print ( " 2" );
//    Serial.println ();
    // Assign pwm
    analogWrite(pinA, Pwm1 );
 //   analogWrite(pinB, Pwm2 );
    
    // and sleep 1s until next computation
    delay (1000);
    }
}

Quelqu'un pourrait il m'aider ou m'indiquer un lien (ca me semble fou de ne pas trouver de tuto sur ce sujet) ?
merci
9  International / Français / Re: communication entre arduino mega et uno? on: May 24, 2012, 03:47:43 am
merci pour vous reponses..
bon j'ai changé un peu de facon de faire..
je suis revenu a une version precedente de EasyTransfer Arduino Library v1.7
, et je ne passe plus par la librairie newsoftserial
j'ai branché sur les pin rx0 et tx1 en croisant ...
et la ca marche...il me reste a adapter le code
je mets le code pour en dessous si un jour quelqu'un se trouve dans la meme situation que moi...

Code:
#include <EasyTransfer.h>

//create object
EasyTransfer ET;

struct RECEIVE_DATA_STRUCTURE{
  //put your variable definitions here for the data you want to receive
  //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
  int blinks;
  int pause;
};

//give a name to the group of data
RECEIVE_DATA_STRUCTURE mydata;

void setup(){
  Serial.begin(9600);
  //start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc.
  ET.begin(details(mydata), &Serial);
 
  pinMode(13, OUTPUT);
 
}

void loop(){
  //check and see if a data packet has come in.
  if(ET.receiveData()){
    //this is how you access the variables. [name of the group].[variable name]
    //since we have data, we will blink it out.
    for(int i = mydata.blinks; i>0; i--){
      digitalWrite(13, HIGH);
      delay(mydata.pause * 100);
      digitalWrite(13, LOW);
      delay(mydata.pause * 100);
    }
  }
 
  //you should make this delay shorter then your transmit delay or else messages could be lost
  delay(250);
}
et

Code:
#include <EasyTransfer.h>

//create object
EasyTransfer ET;

struct SEND_DATA_STRUCTURE{
  //put your variable definitions here for the data you want to send
  //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
  int blinks;
  int pause;
};

//give a name to the group of data
SEND_DATA_STRUCTURE mydata;

void setup(){
  Serial.begin(9600);
  //start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc.
  ET.begin(details(mydata), &Serial);
 
  pinMode(13, OUTPUT);
 
  randomSeed(analogRead(0));
 
}

void loop(){
  //this is how you access the variables. [name of the group].[variable name]
  mydata.blinks = random(5);
  mydata.pause = random(5);
  //send the data
  ET.sendData();
 
  //Just for fun, we will blink it out too
   for(int i = mydata.blinks; i>0; i--){
      digitalWrite(13, HIGH);
      delay(mydata.pause * 100);
      digitalWrite(13, LOW);
      delay(mydata.pause * 100);
    }
 
  delay(5000);
}
10  International / Français / communication entre arduino mega et uno?[REGLE] on: May 23, 2012, 05:35:20 pm
bonjour,
je suis entrain de bidouiller un code pour controller des leds via un ecran tactile...
tout marche,
 sauf que je n'ai pas assez de sorties pwm disponible sur ma carte mega, (l'ecran tactile me prend des sorties)
j'ai a ma disposition une carte uno....et je pense relier les 2, pour qu'elle communique entre elles (en fait j'ai juste besoin que la mega donne la bonne valeur de la led a la carte uno, ..relation maitre-esclave)
j'ai essayer plusieurs choses, et je bute...je n'arrive pas a les faire communiquer ensemble dans un premier temps
j'utilise la librairie SoftEasyTransfer, et  NewSoftSerial sous arduino 23

le code de la carte master (mega)
Code:
#include <SoftEasyTransfer.h>

/*   For Arduino 1.0 and newer, do this:   */
//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(2, 3);

/*   For Arduino 22 and older, do this:   */
#include <NewSoftSerial.h>
NewSoftSerial mySerial(2, 3);



//create object
SoftEasyTransfer ET;

struct SEND_DATA_STRUCTURE{
  //put your variable definitions here for the data you want to send
  //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
  int blinks;
  int pause;
};

//give a name to the group of data
SEND_DATA_STRUCTURE mydata;

void setup(){
  mySerial.begin(9600);
  //start the library, pass in the data details and the name of the serial port.
  ET.begin(details(mydata), &mySerial);
  
  pinMode(13, OUTPUT);
  
  randomSeed(analogRead(0));
  
}

void loop(){
  //this is how you access the variables. [name of the group].[variable name]
  mydata.blinks = random(5);
  mydata.pause = random(5);
  //send the data
  ET.sendData();
  
  //Just for fun, we will blink it out too
   for(int i = mydata.blinks; i>0; i--){
      digitalWrite(13, HIGH);
      delay(mydata.pause * 100);
      digitalWrite(13, LOW);
      delay(mydata.pause * 100);
    }
  
  delay(5000);
}

j'ai bien ma led qui s'allume aleatoirement..pas de probleme

le code de l'esclave (uno)
Code:
#include <SoftEasyTransfer.h>

/*   For Arduino 1.0 and newer, do this:   */
//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(2, 3);

/*   For Arduino 22 and older, do this:   */
#include <NewSoftSerial.h>
NewSoftSerial mySerial(2, 3);


//create object
SoftEasyTransfer ET;

struct RECEIVE_DATA_STRUCTURE{
  //put your variable definitions here for the data you want to receive
  //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
  int blinks;
  int pause;
};

//give a name to the group of data
RECEIVE_DATA_STRUCTURE mydata;

void setup(){
  mySerial.begin(9600);
  //start the library, pass in the data details and the name of the serial port.
  ET.begin(details(mydata), &mySerial);
  
  pinMode(13, OUTPUT);
  
}

void loop(){
  //check and see if a data packet has come in.
  if(ET.receiveData()){
    //this is how you access the variables. [name of the group].[variable name]
    //since we have data, we will blink it out.
    for(int i = mydata.blinks; i>0; i--){
      digitalWrite(13, HIGH);
      delay(mydata.pause * 100);
      digitalWrite(13, LOW);
      delay(mydata.pause * 100);
    }
  }
  //you should make this delay shorter then your transmit delay or else messages could be lost
  delay(250);
}

et la ..rien....

en premier probleme je pense a une erreur de cablage...
mega pin 3---> uno pin 2
        pin 2---> pin 3
(j'ai aussi essayé l'inverse)
faut il utiliser une autre pin, 0,1 (rx,tx) ?
faut il utiliser un autre type de connections (j'ai une horloge sur le port sda et scl de l'arduino mega)?
merci
Pages: [1]