Show Posts
Pages: 1 ... 4 5 [6] 7 8
76  International / Français / Re: Avertisseur visuel de présence de personne on: March 06, 2012, 04:11:18 pm
Moi je l'aime bien ton projet à base d'arduino! je suis électricien spécialisé en automatisme, et je peux te dire que bien souvent j’interviens sur des systèmes qui valent plus de 1000 euros alors que après étude détailler de la fonction, une simple carte arduino et du relayage aurais suffit...
Bref continu et si j’habitai prés de chez toi je viendrais t'aider a le mettre en œuvre (moi sud ouest toi paris...ça fais une trotte smiley-confuse)
77  International / Français / Re: Avertisseur visuel de présence de personne on: March 04, 2012, 03:12:23 pm
La résistance à le rôle de "charge" car si tu envoi une tension direct dans le transistor tu va mettre ta sortie en court-circuit ce qui risque d’endommager ta board et ton transistor.
Pour l'alim 12 volt, je pence que ce qui te perturbe c'est les masses communes(le 0 Vdc de ta board et de l'alim 12 Vdc qui alimente le relais doivent être interconnectées), c'est nécessaire au fonctionnement...
Tu as besoin d'une seul alim 12 Vdc, fais une dérivation avec un domino ou autre...
Je te corrige le schéma =

PS= Tu me fais un peu peur quand tu dis = "une bobine relais ( 12 v -> 220 v)" regarde mon premier post je t'ai donné une référence d'un relais qui va bien pour ton installation.
Et fais des essais  "à vide" (sans le  220 Vac) smiley-eek
78  International / Français / Re: Avertisseur visuel de présence de personne on: March 04, 2012, 01:03:05 pm
Voila un schéma pour ta config.
Mais attention !!!?? Si tu n'as pas les compétences ne touche pas au 220 Vac tu risque une électrocution et ça ça pique!!
Demande a une personne qualifiée de faire les branchements coté alternatif, par contre entraine toi avec ta board arduino a faire coller le relais... le 5 Vdc et 12 Vdc ça ne risque rien (pour les personnes).
79  International / Français / Re: Avertisseur visuel de présence de personne on: March 03, 2012, 04:22:22 pm
Bonjour, il faut que tu passe par un transistor de base type BC547 pour alimenter un relais 12 volt
de type finder http://www.conrad.fr/relais_de_couplage_avec_1_inverseur_10_a_16_a_ou_2_inverseurs_8_a_serie_4c_p_48674_49201_791765_888417
qui lui même commutera une tension 220 Vac 16 A.
Je te fais un petit schéma vite fais:

Remplace l'inter et l'alim 5 Vdc par une sortie digitale de ta carte arduino et la lampe par la bobine du relais.
Ou sinon il existe des relais 5 Vdc c'est plus simple... tu l'active avec ta sortie aussi...Mais fais attention a la valeur de ta bobine qui influera sur l 'intensité demander a la sortie digitale de ta carte tu es limité a 20 mA ou 40 mA je sais plus.
80  International / Français / Re: convertir un signal analogique 5V en 3,3V on: February 29, 2012, 04:22:04 pm
Ouais, apparemment dans son code il essai de le générer avec "digitalWrite" ?!
81  International / Français / Re: convertir un signal analogique 5V en 3,3V on: February 29, 2012, 03:18:24 pm
Bonjour, tu ne peux pas "écrire" directement une tension.
Il te faudra passer par un TIP122, recherche google "TIP122 + Arduino" tu trouvera ton bonheur.
Si tu n'y arrive pas je te donnerais un schéma et un exemple de code.
82  International / Français / Re: Lib "VirtualWire.h" incompatible avec Lib "Servo.h" !!? on: February 29, 2012, 03:07:19 pm
J'ai eu des soucis avec ServoTimer2.h l'IDE 023 me donner ces erreurs =
Code:
In file included from E:\#ARDUINO#\#IDE_ARDUINO#\arduino-0023\hardware\arduino\cores\arduino/WProgram.h:6,
                 from sketch_feb29a.cpp:8:
e:/#arduino#/#ide_arduino#/arduino-0023/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected unqualified-id before 'double'
e:/#arduino#/#ide_arduino#/arduino-0023/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected `)' before 'double'
e:/#arduino#/#ide_arduino#/arduino-0023/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected `)' before 'double'
Mais dans les commentaires de la lib j'ai trouvé ce lien =  http://www.arduino.cc/playground/ComponentLib/Servo
et la miracle la lib SoftwareServo.h est pile ce qu'il me faut.
Je vous remercie bien tous les deux, à bientôt.
83  International / Français / Re: Lib "VirtualWire.h" incompatible avec Lib "Servo.h" !!? on: February 28, 2012, 04:48:47 pm
Merci pour vos réponses!!
@skywodd =
T'es un magicien je teste ça et je post le résultat.(j' étais prêt a commander 2 modules "nRF24L01+" dont les lib sont apparament compatible avec Servo.h ... mon porte monnaie te dit merci aussi smiley-money)
@Super_Cinci=
Ouhaaa, je t'envie de savoir coder a ce niveau!! Moi j'en suis bien loin  smiley-sad je dois m'appuyer sur ce que de vrais pros ont fais ou m'aide a faire...
84  International / Français / [Résolu] Lib "VirtualWire.h" incompatible avec Lib "Servo.h" !!? on: February 27, 2012, 05:04:15 pm
Bonjour a tous, mon projet avance mais je me trouve confronté à un problème de lib!!!
"VirtualWire" et "Servo" utilisent toute les deux le Timer1 et donc lors de la compilation ca bloque!!  smiley-mad

VirtualWire =>
Code:
// This is the interrupt service routine called when timer1 overflows
// Its job is to output the next bit from the transmitter (every 8 calls)
// and to call the PLL code if the receiver is enabled
//ISR(SIG_OUTPUT_COMPARE1A)
SIGNAL(TIMER1_COMPA_vect)
{
    vw_rx_sample = digitalRead(vw_rx_pin);

    // Do transmitter stuff first to reduce transmitter bit jitter due
    // to variable receiver processing
    if (vw_tx_enabled && vw_tx_sample++ == 0)
    {
        // Send next bit
// Symbols are sent LSB first
        // Finished sending the whole message? (after waiting one bit period
// since the last bit)
        if (vw_tx_index >= vw_tx_len)
{
   vw_tx_stop();
   vw_tx_msg_count++;
}
        else
        {
   digitalWrite(vw_tx_pin, vw_tx_buf[vw_tx_index] & (1 << vw_tx_bit++));
   if (vw_tx_bit >= 6)
   {
       vw_tx_bit = 0;
                vw_tx_index++;
   }
        }
    }
    if (vw_tx_sample > 7)
vw_tx_sample = 0;

    if (vw_rx_enabled && !vw_tx_enabled)
vw_pll();
}

Servo =>
Code:
#ifndef WIRING // Wiring pre-defines signal handlers so don't define any if compiling for the Wiring platform
// Interrupt handlers for Arduino
#if defined(_useTimer1)
SIGNAL (TIMER1_COMPA_vect)
{
  handle_interrupts(_timer1, &TCNT1, &OCR1A);
}
#endif
et plus loin...

Que faire ?  smiley-slim
Dites moi qu'il y a une solution!! Mon projet de tourelle radioguidé (module 433Mhz) monté sur un 4*4 géant  lui aussi radioguidé ...le tout piloté avec un joystick PS2 ne peut pas s’arrêter la  smiley-cry
85  International / Français / Re: Télémétrie sur module 433mhz on: February 22, 2012, 12:04:09 pm
OK, merci de m'avoir expliquer et merci++ pour ton aide smiley-wink
86  International / Français / Re: Télémétrie sur module 433mhz on: February 21, 2012, 06:01:10 pm
Il aura fallut que tu me le dise 3 fois pour que j' arrête avec mes string et que je copie ton code !!
Merci a toi ça fonctionne très bien.
TX =
Code:
#include <VirtualWire.h>

 byte report[3];
 int tmp1;
 int tmp2;

void setup()
{
    Serial.begin(9600);
    Serial.println("setup");
  
    vw_setup(2000);
}

void loop()
{
    tmp1 = analogRead(A0);
    report[0] = tmp1& 0xFF;
    report[1] = (tmp1 & 0xFF00) >> 8;
    
    
    tmp2 = analogRead(A1);
    report[2] = tmp2& 0xFF;
    report[3] = (tmp2 & 0xFF00) >> 8;
    
    
    vw_send((uint8_t *)report,4);
    vw_wait_tx();
    
    delay(1000);
}
RX =
Code:
#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);
    Serial.println("setup");

    vw_setup(2000);
    vw_rx_start();      
}

void loop()
{
    uint8_t buf[3];
    uint8_t buflen = 4;

    if (vw_get_message(buf, &buflen))
    {
Serial.print("Got: ");
Serial.println("");
Serial.print(buf[0]+ (buf[1] << 8));
Serial.println("");
        Serial.print(buf[2]+ (buf[3] << 8));
        Serial.println("");
    }
}
Par contre j' ai de grosse lacune en prog et comme j'aime bien comprendre ce que je fais, peux-tu m'expliquer =
byte report[1]; et pas int report[1]; (j'ai essayer les valeur s'arrete a 255 et reparte a zero)
et aussi =
pour la stoker

tmp1 = analogRead(A0);
    report[0] = tmp1& 0xFF;
    report[1] = (tmp1 & 0xFF00) >> 8;

et pour la lire

Serial.print(buf[0]+ (buf[1] << 8 ));

Désoler, mais j'ai du louper un gros passage... je me suis encore jamais attarder sur les bytes et leur manip
87  International / Français / Re: Télémétrie sur module 433mhz on: February 21, 2012, 12:28:31 am
Si j'ai fais cette mini usine a gaz c'est pas parce que je suis fou des String...quoi-que smiley-mr-green
Mais parce que selon moi (et mes nombreux tests) la lib m'oblige a poster ce type de variable.
J'aimerai me tromper (chose qui arrive souvent) et pouvoir envoyer des int....
88  International / Français / Re: Télémétrie sur module 433mhz on: February 20, 2012, 11:21:24 am
J'ai fais deux sketchs qui fonctionnent bien,je traite mon String reçut a base de "substring"et autre "indexOf" peux tu me dire ce que tu en pense ?
Et si c'était pas du tout a cela que tu pensais , peux tu me donner un exemple.

TX =
Code:
#include <VirtualWire.h>
//pin tx = 12 par default

int a0;
int a1;
char ARRAY[30];//déclare un buffer qui contient le msg

//##########################################################################################
//########################################################################################## 

void setup()
{
    Serial.begin(9600); // Initialisation du port série pour avoir un retour sur le serial monitor
    Serial.println("test VirtualWire");

    vw_setup(2000);
    //envoi une premiere fois les valeurs
    transfo();
    envoi_val();
}

//##########################################################################################
//########################################################################################## 

void loop()
{
delay(20);

  a0 = analogRead(A0);
  a1 = analogRead(A1);
   
  if  (analogRead(A0)!=a0 || analogRead(A1)!=a1)
   {
      transfo();
      envoi_val();
   }
 
}//fin loop

//##########################################################################################
//########################################################################################## 

void transfo()
{
 char val_1[5] ;// max 1023 = 4 char + char null \0
 String ana_0_val = itoa(analogRead(A0),val_1,10);// transformation décimal -> chaine de char
 String ana_0 = ("A0="+ ana_0_val);//ajoute a la chaine "A0" pour connaitre l'analog input
   
 char val_2[5] ;// max 1023 = 4 char + char null \0
 String ana_1_val = itoa(analogRead(A1),val_2,10);// transformation décimal -> chaine de char
 String ana_1 = ("A1="+ ana_1_val);//ajoute a la chaine "A1" pour connaitre l'analog input
   
 (">" +ana_0 + ">" + ana_1 + ">").toCharArray(ARRAY, 30);//convertion de la chaine en array de char max 30 char + ajout de balise pour le traitement de la chaine a la reception
 Serial.println(ARRAY);
   
}

//##########################################################################################
//########################################################################################## 

void envoi_val()
{
 
 //Serial.print("TX ... "); // On signale le début de l'envoi
 vw_send((uint8_t *)ARRAY, strlen(ARRAY)); // On envoi le message
 vw_wait_tx(); // On attend la fin de l'envoi
 //Serial.println("Done !"); // On signal la fin de l'envoi
   
}

RX =
Code:
#include <VirtualWire.h> // inclusion de la librairie VirtualWire
//pin de rx = 11 par default
uint8_t buf[VW_MAX_MESSAGE_LEN]; // Tableau qui va contenir le message recu (de taille maximum VW_MAX_MESSAGE_LEN)
uint8_t buflen = VW_MAX_MESSAGE_LEN; // Taille maximum de notre tableau

String val_rx;

//##########################################################################################
//########################################################################################## 

void setup()   
{
  Serial.begin(9600);
  vw_setup(2000); // initialisation de la librairie VirtualWire à 2000 bauds
  vw_rx_start();  // Activation de la partie réception de la librairie VirtualWire
}

//##########################################################################################
//########################################################################################## 

void loop()
{
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen))
             {
       int i;
               val_rx = "";   
                 
                  for (i = 0; i < buflen; i++)
                    {
                       val_rx += buf[i];// on construit la variable string de reception en assemblent les char du tableau
                    }
                 
                 Serial.println (val_rx);
                 traite_val_rx();
                 
}
 
}//fin loop

//##########################################################################################
//##########################################################################################

void traite_val_rx()
{
 
//###################################
//découpe la chaine reçu
//###################################

   int premiere_balise = val_rx.indexOf(">");
   int seconde_balise = val_rx.indexOf(">",premiere_balise+1);
   int troisieme_balise = val_rx.indexOf(">",seconde_balise+1);
 
   String val_a0 = val_rx.substring(premiere_balise+4,seconde_balise);//+4 pour enlever le A0=(inclu dans la chaine tx)
   String val_a1 = val_rx.substring(seconde_balise+4,troisieme_balise);//+4 pour enlever le A1=(inclu dans la chaine tx)
 
//###################################
//convertion String en Int
//###################################
 
   int longueur_chaine_1 = val_a0.length()+1;//pour construire le tableau on prend la taille de la chaine et on rajoute un char null
   char a0 [longueur_chaine_1];//on construit le tableau
   val_a0.toCharArray(a0,longueur_chaine_1);//on y met la chaine
   int A0 = atoi(a0);//on transforme le tableau en int
 
   int longueur_chaine_2 = val_a1.length()+1;//pour construire le tableau on prend la taille de la chaine et on rajoute un char null
   char a1 [longueur_chaine_2];//on construit le tableau
   val_a1.toCharArray(a1,longueur_chaine_2);//on y met la chaine
   int A1 = atoi(a1);//on transforme le tableau en int
 
 
   Serial.println(A0);//=>affiche la valeur de A0 de la carte distante
   Serial.println(A1);//=>affiche la valeur de A1 de la carte distante
}

//##########################################################################################
//########################################################################################## 
89  International / Français / Re: Télémétrie sur module 433mhz on: February 19, 2012, 02:50:56 pm
Ha si j'ai une idée, la lib me limite a un array a une dimension de max [30], j'ai qu'a me débrouiller pour y mettre les entrée ana qui m’intéresse et leur valeurs.
Le probleme suivant est a la réception...
90  International / Français / Re: Télémétrie sur module 433mhz on: February 19, 2012, 02:08:37 pm
Oui, c'est plus ou moins ce que je fais sauf que j'ai des char dans le nom de l'entrée ana...qui peuvent être replacer par un int.
Mais ce qui me dérange c'est que je ne peux pas envoyer 2 valeurs de 2 entrées ana dans le même array?
Genre:
            array[0] = n° de l' entrée ana
            array[1] = valeur de l'entrée ana
            array[2] = n° de l' entrée ana
            array[3] = valeur de l'entrée ana
Pages: 1 ... 4 5 [6] 7 8