Show Posts
Pages: 1 ... 108 109 [110] 111 112 ... 234
1636  International / Français / Re: Entrée Reset et petit problème on: July 06, 2013, 04:13:36 pm
Quote
Connaîtriez-vous une astuce pour éviter cet inconvénient, avant que je ne me penche sur une solution Hard à renfort de transistor ou de relais ?
Tu n'y échapperas pas!!
Le plus simple et le plus fiable étant un optocoupleur. Sinon un bête transistor en collecteur ouvert.
1637  International / Français / Re: Conseil pour raccordement de relais on: July 06, 2013, 03:45:44 am
j'ai des craintes. N'oublie pas qu'il faut garder le cablage basse tension connecte a l'Arduino le plus court possible.
Ce sont les liaisons en 230V qu'il faut amener aux relais situes pres de l'Arduino et pas le contraire.
C'est discutable. La liaison optocouplée étant une boucle de courant elle est relativement immune aux perturbations secteur ce qui permet un déport moyennant une liaison en paire torsadée. Maintenant faut pas non plus tirer 10m de câble.
Mais c'est vrai que ce genre d'installation serait mieux placé dans le tableau électrique près du compteur plutôt que dispersé partout dans la maison.
1638  International / Français / Re: Une histoire de loop qui casse les ... on: July 06, 2013, 02:03:34 am
Les code est formaté de manière à masquer un maximum les erreurs. Une ligne par instruction et un code indenté correctement aiderait à la traque des soucis.

Les fonctions readmessage et sendmessage sont bizarre à mon sens.

SENDMESSAGE
tu fais incrémenter un index i à chaque élément que tu traites mais tu ne l'utilises pas. je pense qu'il faudrait utiliser i pour indexer buffer.
Code:
// SENDMESSAGE = Envoi des messages au LCD
bool sendMessage(uint8_t command0, uint16_t object0, uint16_t value0) {
       bool flag0 = false;
       uint8_t buffer[6];
       uint8_t checksum = 0x00;
       uint8_t i=0;

       buffer[i] = command0;
       checksum = command0;
       i++;
       buffer[i] = object0 >>8;
       checksum ^= buffer;
       i++;
       buffer[i] = object0 & 0xff;
       checksum ^= buffer;
       i++;
       buffer[i] = value0 >>8;
       checksum ^= buffer;
       i++;
       buffer[i]= value0 & 0xff;
       checksum ^= buffer;
       i++;
       buffer[i] = checksum;
       i++;

       mySerial.write(buffer, i);
       return(nacAck()==0x06);
}

READMESSAGE
Il te faut 3 arguments en paramètres de REPORT_EVENT mais tu n'attends pas de les avoir reçu pour les lire. Si tu n'as pas 3 octets tu sors du if et tu quittes la fonction.
Il faut attendre d'avoir les 3 octets avant de continuer.

Code:
bool readMessage(uint8_t &command0,uint16_t &object0, uint16_t &value0) {
    bool flag0=false;
    uint8_t buffer[6];
    uint8_t checksum = 0x00;
    uint8_t i=0;

    if(mySerial.available()>0) {
    buffer = mySerial.read();
    command0 = buffer[0];
    i++;
    checksum = command0;
if (command0==REPORT_EVENT){
while (mySerial.available()<3); // attend 3 caractères
buffer = mySerial.read();
checksum ^= buffer;
i++;
object0 = buffer[1]<<8 | buffer[2];
buffer = mySerial.read ();
checksum ^= buffer;
i++;
object0 = buffer[1]<<8 | buffer[2];
buffer = mySerial.read();
checksum ^=buffer;
i++;
value0 = buffer[3]<<8 | buffer[4];
}
flag0 = (checksum==mySerial.read());
}
return flag0;
}
Le problème c'est que cela rend la fonction bloquante il faudrait peut être la reécrire avaec des fonction non bloquantes comme Serial.readBytes(). Mais cela compliquerait peut être un peu. Si ça fonctionne comme ça il ne faut peut être pas se compliquer.

ATTENTION code non vérifié
1639  International / Français / Re: Touchscreen Seeed Studio, image .jpeg on: July 04, 2013, 03:30:29 pm
Le format JPEG n'est pas du tout adapté au traitement sur des petits processeurs. Il met en oeuvre des tables et du calcul matriciel sur des flottants.
Honnêtement, je ne pense pas qu'avec sa faible quantité de mémoire l'arduino puisse faire de la décompression. Peut être sur une Méga faudrait voir.
1640  International / Français / Re: moteur manque de patate on: July 04, 2013, 02:32:47 am
Le moteur pas à pas c'est sympa mais ce n'est pas la solution à tout les problèmes.
Il faut bien évaluer les avantages et les inconvénients d'une technologie avant de partir dans une réalisation.
Pour un télescope qui demande un mouvement très lent et très fluide (en phase de suivi) un moteur courant continu avec une bonne démultiplication et certainement plus adapté.
1641  International / Français / Re: probleme arduino et relais 12v on: July 03, 2013, 02:34:27 am
On dirait que tu commutes de la puissance c'est pas plutôt là que se situerait le problème?
1642  International / Français / Re: Probléme de code incompréhensible pour un débutant on: July 02, 2013, 06:35:54 am
Code:
#include <IRremote.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <string.h>
#include <SD.h>

Cela fait beaucoup de librairies. Je pencherai pour un problème de saturation de la mémoire. Surtout avec les symptômes que tu décris:
Quote
lorsque j'utilise le bouton de tir l’écran m'affiche des caractères inattendues pendant quelque secondes comme ceci
Cela ressemble vraiment à une chaîne de caractères qui déborde
   - soit parce qu'il y a un problème d'allocation cela arrive souvent lorsqu'on concatène des chaînes pour en faire une plus longue
   - soit parce que la mémoire est saturée et des tampons ne peuvent plus être alloués dynamiquement et les fonctions ne le testant souvent pas on écrase à ce moment là d'autres données.

La librairies SD est je crois assez gourmande en mémoire car elle conserve des buffers ouverts en permanence. Et la librairie String est aussi connue pour sa gestion de mémoire peut optimisée.

Regardes là: http://playground.arduino.cc/Code/AvailableMemory
Cela permet de contrôler la mémoire disponible. Tu peux faire afficher la mémoire disponible à différents moments vers la console pour tenir à l'oeil l'état de la mémoire.
1643  International / Français / Re: RTClib d'ADAFRUIT on: July 01, 2013, 02:33:38 pm

Code:
...
void setup()   // Initial setup
  {   
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning())
  {
    myGLCD.print("RTC is NOT running!",CENTER, 115);
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  ....
  }

void loop()
 {   
 DateTime now = RTC.now();     
 myGLCD.printNumI(now.second(),200,300);
....
Dans la portion de code que tu donnes, la ligne RTC.adjust(DateTime(__DATE__, __TIME__))t est sensée mettre la RTC à l'heure si la RTC n'est pas activée (ce qui est le cas lorsque tu la mets en route pour la première fois). L'heure et la date utilisées sont celles de la compilation. Il faut donc compiler le soft et l'exécuter tout de suite sinon l'heure est fausse. Seulement si tu as fait tourner une fois le logiciel, cette ligne ne s'exécute plus. Si tu veux faire une mise à l'heure il faut forcer l'exécution de cette ligne. Ou mettre en place un autre moyen de mise à l'heure.

Concernant le rafraîchissement de l'affichage, la ligne DateTime now = RTC.now(); récupère l'heure courante et devrait donc permettre la mise à jour de ton affichage. Maintenant il faudrait voir le reste du code pour vérifier si rien ne bloque par ailleurs.
1644  International / Réalisations et Projets Finis / Re: IR-Blue-duino caméra thermique on: July 01, 2013, 03:57:24 am
ok, et tu peut interpréter ces données directement dans le arduino? si c'est le cas je crois que ça sera mon prochaine achat :p
Sans problème.
Voilà le code dont je suis parti. Là tous les calculs sont fait dans l'arduino. La sortie se fait sur la console mais libre à toi de faire ce que tu veux. Il suffit de remplacer la fonction Temperatures_Serial_Transmit() par ton traitement. Les données sont dans le tableau "temperatures".
Concernant la sortie sur la console, il y a un #define VT100 qui permet d'activer, lorsqu'il est decommenté, une mise en forme pour rendre l'affichage plus agréable sur un terminal émulant le standard VT100 (Hyperterminal, Putty, Realterm, Minicom, ...).

ATTENTION
Dans le fichier "MLX90620_Example.ino" il y a le tableau "alpha_ij" qui doit être adapté à chaque capteur. Pour cela il faut utiliser "MLX90620_alphaCalculator.ino" qui va générer les valeurs du tableau à recopier dans toutes les applications que tu feras avec ce même capteur. C'est à faire en premier car sinon les valeurs retournées par "MLX90620_Example.ino" sont erronées.
1645  International / Français / Re: Commande de fortes inductions on: July 01, 2013, 03:23:19 am
Si la variation de +/-300mV c'est sur la 24V il n'y a pas trop de soucis à te faire.
Si c'est sur le 5V:
  1) ou la mesure est biaisée (mesure sur une mauvaise masse)
  2) les masses ne sont pas bien connectées (masse en étoile)
  3) les alimentations sont mal séparées 24V et 5V mal ségrégués

Pour limiter les efets induits par une charge inductive, tu peux faire des mises sous tension et coupures progressives (soft start) en utilisant le PWM ce qui va limiter le courant. Croissance/décroissance progressive du PWM sur 50ms.
1646  International / Français / Re: Un peu coup de main? transmission RF on: June 30, 2013, 07:44:36 am
Quote
je n'est aucune erreur quand je le compile
Voilà l'erreur retournée
sketch_jun30a.cpp: In function ‘void loop()’:
sketch_jun30a.cpp:47:24: error: incompatible types in assignment of ‘int’ to ‘int [2]’

Ecoutes dans cette boucles il y a une erreur que tu le veuilles ou non
Code:
    for(int i=0; i<=numAnalogPin; i++) {
      data=analogRead(i);
    }
data est défini comme :
Code:
int data[numAnalogPin];

data définit un tableau d'entier donc la variable data est un pointeur vers des entiers
pour accéder à son contenu tu as 2 moyens
Code:
data[i]= analogRead(i);
ou
Code:
*data = analogRead(i);

Comme tu as une boucle avec un index la première solution me semble la plus simple.

Lorsque tu écris
Code:
data=analogRead(i);
tu modifies la valeur de data (le pointeur, tu suis?) donc du coup data ne pointe plus sur la zone mémoire allouée au tableau en question mais quelque part ailleurs.
1647  International / Français / Re: Un peu coup de main? transmission RF on: June 30, 2013, 03:44:09 am
Svp sa devient Urgent, je vais pas tarder a recevoir ma Camera miniature wireless que je doit installer sur mon petit véhicule et doit m'en servir dans même pas une quinzaine
Et on est pas aux ordres. On rend service mais faudrait pas abuser.

Quote
Pouvez vous me dire si je suis sur la bonne voie?
Si tu as lancé une compilation de ton programme tu dois déjà avoir vu que c'est pas bon

Ce truc ne fonctionne pas la boucle for écrase le pointeur sur le tableau
Code:
    for(int i=0; i<=numAnalogPin; i++) {
      data=analogRead(i);
    }
    send((byte*)data, dataBytes);
    delay(100);
Je pense que ça serait mieux
Code:
    for(int i=0; i<=numAnalogPin; i++) {
      data[i]=analogRead(i);
    }
    send((byte*)data, dataBytes);
    delay(100);

Pour ce qui est de la partie réception.... on dirait qu'il n'y a pas de liaison entre la partie réception du message et la partie commande moteur
1648  International / Français / Re: Un peu coup de main? transmission RF on: June 30, 2013, 03:37:10 am
test
Dis tu crois pas que tu pourrais un peu faire le ménage?
Tu peux tuer tes messages
1649  International / Français / Re: Module Icomsat 1.1 - Seeeduino Mega - carte SIM Free on: June 30, 2013, 03:27:35 am
Vu qu'avec Free on est les 3/4 du temps en itinérance, il doit falloir initialiser la liste des opérateurs préférés AT+CPOL

1650  International / Français / Re: Mega 2560 qui ne marche plus ... ou presque on: June 29, 2013, 11:51:42 am
Lorsqu'on veut faire un diagnostic sur une carte on revient aux fondamentaux avec des programmes simples
On met les broches entrée et on regarde en les mettant alternativement à Vcc et à GND si elles changent d'état
Ensuite la même chose en les mettant en sortie pour voir si elles font clignoter une LED
Rien ne dit que c'est pas tes capteurs qui ont été fusillés.
Pages: 1 ... 108 109 [110] 111 112 ... 234