Show Posts
|
|
Pages: [1] 2 3
|
|
1
|
International / Français / Re: besoin d'aide pour un projet tellement simple
|
on: April 03, 2013, 06:08:38 pm
|
zzeepphh
Mais tant pis, je vais me farcir deux semaine de tutos, parce-qu'en 6 posts, pas un seul ne tend a m'aiguiller vers la résolution de mon problème. Rhoooo c'est pas gentil de dire ça ! surtout que fdunews t'indique : fdunews
dans les exemples livrés avec l'environnement de développement tu vas trouver la moitié de ce que tu veux faire. Ensuite en cherchant un peu sur le net, tu vas sûrement trouver des exemples de minuteries toutes faites et qui feront très certainement une bonne base de départ pour développer la fonction telle que tu la désires et là pour le coup tu trouveras de l'aide. Si ça ce n'est pas de l'aiguillage vers la solution, tu devrais relire ! Deux mots me viennent à l'esprit : fainéantise et mauvaise foi .... on peut pas lutter 
|
|
|
|
|
7
|
International / Français / Re: Connection wifi shield
|
on: February 08, 2013, 04:51:18 am
|
Bonjour ... franchement  Extrait du premier site trouvé sur la toile : Aucune soudure n'est nécessaire, le shield s'emboite directement sur la carte Arduino et l'antenne WiFi est intégrée. La programmation est aussi considérablement simplifiée par l'utilisation de librairies dédiées pour le WiFi et la gestion de la carte SD. Je ne te laisse pas le lien volontairement. G...e est ton ami ...
|
|
|
|
|
8
|
International / Français / Re: EEPROM et union "libre" ...
|
on: February 06, 2013, 09:07:47 am
|
Rien ne te dit qu'un float fait vraiment 4 octets Mince alors, ça ce n'est pas forcément une bonne nouvelle. Mais peu importe puisque je n'ai plus d'union à faire et donc plus besoin de connaitre la taille occupée par la variable que je souhaite sauvegarder. C'est génial. Merci bien  Du coup voiçi le code modifié. Il fait la "même" chose que le premier que je vous ai soumis, mais en plus simple et en plus "universel" void setup() { Serial.begin(9600); }
void loop() {
float test = 123.456; byte* ptr = (byte*) &test;
for (byte i = 0; i < sizeof(test); ++i) { Serial.println(ptr[i],BIN); }
ptr[0] = 121; ptr[1] = 233; ptr[2] = 246; ptr[3] = 66;
Serial.println(test,3);
delay(10000);
}
le moniteur serie m'affichant : 1111001 11101001 11110110 1000010 123.456
Un obstacle de "passé", vivement le prochain.....
|
|
|
|
|
9
|
International / Français / [Resolu] EEPROM et union "libre" ...
|
on: February 06, 2013, 07:01:47 am
|
Bonjour à tous. Grace à vos nombreux conseils avisés, mon projet avance toujours. Mon objectif était de pouvoir sauvegarder la valeur ( float ) de déclenchement de certaines alarmes dans une EEPROM. Aucun souci pour lire ou écrire un octet, mais comment faire pour sauvegarder des floats - ou autres - La solution de multiplier le float par 10 x, récupérer chaque digit et les savegarder les uns apres les autres ne me satisfaisait pas, mais alors pas du tout. Je me suis tourné vers l'utilisation des pointeurs, je suis certain que ce doit être possible de les utiliser dans un cas comme le mien mais je n'ai pas reussi. Edit : "maintenant ça y est ! Je séchais jusqu'à ce que je découvre - en fouillant vraiment - union. Voiçi le code tel qu'il est au moment ou je laisse ces lignes. void setup() { Serial.begin(9600); }
void loop() {
union u_tag { byte b[4]; float valeur; } u;
u.valeur = 123.456;
for (int i = 0; i < sizeof(u.valeur); i++){ Serial.print(i); Serial.print(" "); Serial.println(u.b[i], BIN); } Serial.println(""); // ces valeurs sont celles affichées par le moniteur série u.b[0] = 121; u.b[1] = 233; u.b[2] = 246; u.b[3] = 66;
Serial.println(u.valeur,3); delay(1000); } C'est formidable. Ca fonctionne, le moniteur serie m'affiche : 0 1111001 1 11101001 2 11110110 3 1000010
123.456
Je souhaiterai pouvoir "automatiser" ce traitement. Une de mes nombreuses question est la suivante. Existe t-il en language Arduinesque lune fonction TypeOf ou GetType, une fonction qui me permettrai de connaitre le type d'une variable - int, long, float, objet ou autre - ? Merci bien à tout ceux qui m'ont deja aidé et un grand merci à la communauté  Un Ardui-Novice
|
|
|
|
|
11
|
International / Français / Re: [Resolu] L'interruption mystérieuse ...
|
on: January 30, 2013, 03:30:00 pm
|
Merci pour toutes vos reponses. Un condensateur de 10 ou 100 nF en parallèle sur le bouton poussoir forme un excellant anti-rebond matériel qui dans la très grande majorité des cas dispense d'utiliser un anti-rebond logiciel. 100nF installés, plus d'interruption mysterieuse et plus d'anti rebond logiciel. Je dois avouer que, grace à vous, mon montage à retrouvé réactivité et fiabilité ! C'est génial ... Merci
|
|
|
|
|
12
|
International / Français / Re: L'interruption mystérieuse ...
|
on: January 30, 2013, 02:55:36 pm
|
Merci bien  Habituellement on fait plutôt des résistances de pull-up avec une interruption FALLING. Voila qui est fait. Du coup mon code devient : const int DUREE_ANTI_REBOND = 300; // milli secpondes antirebond pour les switchs boolean action_clavier = false; unsigned long timer_touche_suivante; unsigned long timer_touche_enter;
void setup() { Serial.begin(9600);
// activer pull-up pinMode(2, INPUT); digitalWrite(2,HIGH); pinMode(3, INPUT); digitalWrite(3,HIGH);
// def interruptions attachInterrupt(0, interruption_suivante, FALLING); attachInterrupt(1, interruption_enter, FALLING); }
/* loop */ void loop() { // allumer le voyant de la carte digitalWrite(13, HIGH);
// delay for(int i = 0;i <= 1000; i++) { if(action_clavier) continue; delay(1); } action_clavier = false;
// eteindre digitalWrite(13, LOW); } /* fin de loop */
// ****************************************************** suivante void interruption_suivante() { if (millis() > timer_touche_suivante + DUREE_ANTI_REBOND) { timer_touche_suivante= millis(); action_clavier = true;
Serial.println("touche suivante");
} }
// ****************************************************** enter void interruption_enter() { if (millis() > timer_touche_enter + DUREE_ANTI_REBOND) { timer_touche_enter= millis(); action_clavier = true;
Serial.println("touche Enter");
} }
La mise en oeuvre est facilitée avec l'utilisation des pull-up internes de l'Aduino et l'interruption mysterieuse n'est plus ! Merci beaucoup
|
|
|
|
|
14
|
International / Français / [Resolu] L'interruption mystérieuse ...
|
on: January 30, 2013, 02:11:58 pm
|
Bonjour à tous. J'ai cablé les deux interruptions de mon Arduino Uno comme suit :  Lorsque "j'interruptise" un seul bp avec une frequence de qques Hz, parfois, ce n'est pas la bonne interruption qui s'enclenche. C'est un grand mystere .... const int DUREE_ANTI_REBOND = 300; // milli secpondes antirebond pour les switchs boolean action_clavier = false; unsigned long timer_touche_suivante; unsigned long timer_touche_enter;
void setup() { Serial.begin(9600); activer_interruptions(); }
/* loop */ void loop() { // allumer le voyant de la carte digitalWrite(13, HIGH);
// delay for(int i = 0;i <= 1000; i++) { if(action_clavier) continue; delay(1); }
// eteindre digitalWrite(13, LOW); } /* fin de loop */
// activer les interruptions void activer_interruptions() { attachInterrupt(0, interruption_suivante, RISING); attachInterrupt(1, interruption_enter, RISING); }
// desactiver les interruptions void desactiver_interruptions() { detachInterrupt(0); detachInterrupt(1); } // ****************************************************** suivante void interruption_suivante() { desactiver_interruptions();
if (millis() > timer_touche_suivante + DUREE_ANTI_REBOND) { timer_touche_suivante= millis(); action_clavier = true;
Serial.println("touche suivante"); }
activer_interruptions(); }
// ****************************************************** enter void interruption_enter() { desactiver_interruptions();
if (millis() > timer_touche_enter + DUREE_ANTI_REBOND) { timer_touche_enter= millis(); action_clavier = true;
Serial.println("touche Enter");
}
activer_interruptions(); }
En utilisant seulement le bouton poussoir "touche suivante" par exemple voici ce que j'obtiens dans le moniteur serie. touche suivante touche suivante touche Enter -> aie aie aie  touche suivante touche suivante touche suivante touche suivante touche suivante etc ........ Ca fait la même chose quelque soit l'interruption utilisée, et la frequence d'apparition de l'interruption mystere n'est pas fixe. parfois il faut 2 ou trois actions sur le BP, parfois il en faut 50 ou plus. Je me demande si j'ai bien cablé, si 10k est suffisant comme resistance de pulldown. Bref, encore une fois beaucoup de questions et le forum Arduino pour vos réponses. Je vous remercie d'avance.
|
|
|
|
|
15
|
International / Français / Re: modifier un code
|
on: January 29, 2013, 04:37:58 pm
|
quand il va de 0° à 180°, angleMin vaut 0 et angleMax vaut 180 si je veux aller de 45° à 90° qu'est-ce que je pourrais bien mettre...... lol x 1000 essaie int angleMin = 45; int angleMax = 90;
|
|
|
|
|