Show Posts
Pages: 1 ... 246 247 [248] 249 250 ... 357
3706  International / Français / Re: Contact entre 2 I/O ? on: March 04, 2012, 07:35:00 am
Bonjour,

Pour ton systéme tu peut même faire encore plus simple qu'un 2n2222a, prend un BC547 (c'est un petit transistor NPN qui se trouve absolument partout) et une résistance de 1K.

Tu branche ensuite le tout suivant ce principe :
Code:
télécommande point A -------+ (C)
                             BC547 (B) ----- 1K --------- Dx arduino
télécommande point B -------+ (E)
(Si ça ne marche pas inverse E et C smiley-wink)

BC547 :
3707  International / Français / Re: Keypad sur ecran LCD série (web4robot.com) on: March 04, 2012, 07:26:16 am
Bonjour,

Bon déjà pour pouvoir résoudre ton probléme il nous faudrait plus de détails sur le matériels utilisé, ainsi que le code complet.

Sinon tu dis que ton écran / keypas est à 15m de l'arduino !?
Tu doit avoir des problémes à cause de la distance, a tu fait des essai sur des distances inférieur au mètre ?
3708  International / Français / Re: diamondback douteux... Problème de compilation on: March 03, 2012, 05:18:03 pm
Salut,

Ha ouai ... quand même ! smiley-eek-blue

Même moi avec ma poêle je soude des cms avec une meilleur qualité ...

Les soudures aux niveau de la led et du résonateur sont très inquiétantes, elle vont pas tenir longtemps selon moi ...
On dirait presque une carte tout droit sortie d'un lot de pré-production, souder à la main, etc ... c'est trés bizarre !

Et les connecteurs SIL-06 et SIL-08 remplacé par de la barrette non sécable, massacré à la pince coupante ...

ça vaut plus le coup de prendre une carte arduino officiel et une shield wifi de seeedstudio (même CI wifi) !
Tu l'as acheté ou ? Tu devrais pousser une gueulante auprès du vendeur !
3709  International / Français / Re: [Projet] Montage de mesure de stabilité on: March 03, 2012, 05:08:39 pm
Sur les conseils de Skywodd (merci  smiley-wink, si tu veux bien poster ton explication),
Ouaip !

Donc voila toute l'histoire ...

J'ai tout d'abord pensé à un manque de ram, du coup j'ai fait quelques stats :
J'ai compté :
-  312 int (soit 624 octets)
- 104 float (soit 832 octets)
- 104 long (soit 416 octets)
- 193 char (soit 193 octets)
Soit un total de 1615 octets de ram utilisé statiquement.

Ajouté à cela la pile d'appel pour les fonctions, les buffers des ports séries (96 octets), les instances d'objets (LiquidCrystal, Gps, ...) et SdFat (~1.5Ko) on approche des 4Ko de ram consommé.
Mais vu que la mega2560 a 8Ko de ram ça ne devrait pas être la cause du probléme.

J'ai donc regardé de plus prés le code et j'ai remarqué que les tableaux :
AxeX[], AxeY[], AxeZ[], SpeedVal[], et timeTop[]
Pouvait être sujet à un buffer overflow, car top est incrémenté (ligne 285) dans rpm_fun() sans jamais faire le moindre test de dépassement.

En croisant ce point avec le fait que les tableaux couvrent 50% de la ram, il est trés fortement probable que le bug soit causé par un buffer overflow venant écrire dans des zones mémoires qui ne devraient jamais être bidouillées.
Quand la mémoire ram par en sucette le cpu redémarre au vecteur de reset, ça ressemble donc très fortement aux symptômes.

Quote
oui,  pas sympa skywodd de faire des cachoteries
C'est J-F qui est venu me chercher par MP smiley-mr-green
Enfin, il a bien fait, j'avais complétement décroché du topic smiley-red

Quote
ça fonctionne jusqu'à 30 et ça reset ensuite pareil ou tu ne peux pas simuler des tops qui renvoie une V > 30 Kmh ?
J'espère pas, si ça reset à V > 30Km ça voudrai dire qu'il y a encore un buffer overflow quelques pars smiley-sweat
3710  International / Français / [Résolu] Attiny85 - pb timer & I2c slave on: March 03, 2012, 03:17:37 pm
Bonjour tout le monde !

J'ai un (enfin deux) probléme avec un projet en cours, et j'arrive pas à m'en sortir smiley-confuse

Je suis en train de faire un systéme à base d'ATtiny85 qui génère deux signaux carré de fréquence défini.
Pour ceux faire j'utilise timer0 et timer1, le schéma de mon montage est en pièce jointe.



Le principe : L'ATtiny attend sur le bus I2C deux octets, un premier qui sert de commande, et un deuxième qui sert de valeur.

En gros les "paquets" I2C on cette forme (syntaxe : bus pirate) :
[ adresseI2C canal fréquence ]

"canal" peut prendre les valeurs 0, 1 ou 2.
0 étant un canal spécial qui permet d'arrêter un timer.

Les fréquences sont codé via une valeur de 0 à 127, qui correspond aux notes de musique que génère miditones à partir d'un fichier midi (http://code.google.com/p/miditones/).

Exemple :
[ 0 1 69 ] -> 440Hz sur ch1
[ 0 2 69 ] -> 440Hz sur ch2
[ 0 0 1 ] -> ch1 silence
[ 0 0 2 ] -> ch2 silence


Sauf que (se serait trop beau si tout marchait du 1er coup)

Dans mon code je défini 0x20 comme adresse d'esclave :
Code:
/* I2C Node Address */
#define I2C_NODE_ADDRESS 0x20

Puis j'utilise la librairie usiTwiSlave pour gérer les communications I2C
Code:
/* Seting up I2C Slave */
usiTwiSlaveInit(I2C_NODE_ADDRESS);
sei();

Je devrai donc pouvoir communiquer avec mon Attiny sur l'adresse 0x20, sauf que aprés avoir fait un scan rapide avec ma carte bus pirate, il s'avére que mon Attiny répond sans probléme, mais sur l'adresse 0x00 !
Comme je prévoie de faire 8 modules il faut absolument que la gestion des adresses marche smiley-confuse

Ensuite probléme plus grave, j'utilise les timer 0 & 1 en CTC (clear on timer compare) pour générer les deux signaux.
Sauf que j'ai une énorme différence de fréquence entre timer1 et timer0, pourtant je pense avoir correctement choisi mes prescaller ...

Exemple : [ 0 1 69 ] -> 440Hz sur ch1, en sortie sur mon fréquencemètre : 439Hz (Ok)
               [ 0 2 69 ] -> 440Hz sur ch2, en sortie sur mon fréquencemètre : 121.5Hz (!?)
ch1 semble donc fonctionner, mais ch2 pas pas du tout, en faite je crois que mes prescaller pour le timer2 sont complétement faux :/

Bref ... mon truc marche pas et je vois pas comment m'en sortir smiley-cry
Help ... Doit bien y avoir un mordu de datasheet et de registre dans l'assistance smiley-mr-green

Mon code :
Code:
/*
 * TinySound - Simple, I2C controled, 2 channel music generator
 * Coded by SkyWodd <skyduino.wordpress.com>
 *
 * Based on arduino-playtune (http://code.google.com/p/arduino-playtune/)
 *      and miditones (http://code.google.com/p/miditones/)
 */

/*
 * ATtiny85 Fuses :
 * PLL Clock; Start-up time PWRDWN/RESET: 1K CK/14 CK + 4 ms; [CKSEL=0001 SUT=00]
 * Brown-out detection level at VCC=4.3 V; [BODLEVEL=100]
 * Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
 * Serial program downloading (SPI) enabled; [SPIEN=0]
 */
 
 /* Includes */
#include <avr/interrupt.h> /* For Timer Interrupt */
#include <avr/pgmspace.h>  /* For PROGMEM */
#include "usiTwiSlave.h"   /* For I2C Slave */
#include <avr/io.h>        /* For I/O usage */

/* I2C Node Address */
#define I2C_NODE_ADDRESS 0x20

 /* PinMapping Definition */
#define SOUND_OUT_1_BIT 3
#define SOUND_OUT_2_BIT 4
#define WORKING_LED_BIT 1

/* Usage Macro */
#define setLedOn() PORTB |= (1 << WORKING_LED_BIT)
#define setLedOff() PORTB &= ~(1 << WORKING_LED_BIT)
#define setLedToggle() PORTB ^= (1 << WORKING_LED_BIT)

#define setChan1On() TIMSK |= (1 << OCIE0A)
#define setChan1Off() TIMSK &= ~(1 << OCIE0A); PORTB &= ~(1 << SOUND_OUT_1_BIT)

#define setChan2On() TIMSK |= (1 << OCIE1A)
#define setChan2Off() TIMSK &= ~(1 << OCIE1A); PORTB &= ~(1 << SOUND_OUT_2_BIT)

/* Chromatic Frequency Table */
const uint16_t PROGMEM tune_freq[128] =
{
    16,17,18,19,21,22,23,24,26,28,29,31,33,35,37,39,41,
    44,46,49,52,55,58,62,65,69,73,78,82,87,92,98,104,110,
    117,123,131,139,147,156,165,175,185,196,208,220,233,
    247,262,277,294,311,330,349,370,392,415,440,466,494,
    523,554,587,622,659,698,740,784,831,880,932,988,1047,
    1109,1175,1245,1319,1397,1480,1568,1661,1760,1865,1976,
    2093,2217,2349,2489,2637,2794,2960,3136,3322,3520,3729,
    3951,4186,4435,4699,4978,5274,5588,5920,6272,6645,7040,
    7459,7902,8372,8870,9397,9956,10548,11175,11840,12544,
    13290,14080,14917,15804,16744,17740,18795,19912,21096,
    22351,23680,25088
};

/* Timer0 Interrupt */
ISR(TIMER0_COMPA_vect) {
    PORTB ^= 1 << SOUND_OUT_1_BIT;
}

/* Timer1 Interrupt */
ISR(TIMER1_COMPA_vect) {
    PORTB ^= 1 << SOUND_OUT_2_BIT;
}

/* Tune Channel to frequency */
void set_channel(uint8_t channel, uint8_t note) {
uint8_t prescalarbits;
uint16_t ocr, freq2 = pgm_read_word(tune_freq + note);

// make sure the note isn't too low to be playable
if (note < 24) return;  // ignore if so

    ocr = F_CPU / freq2 - 1;
    prescalarbits = 0b001;  // ck/1
    if (ocr > 255) {

ocr = F_CPU / freq2 / 8 - 1;
prescalarbits = (channel == 1) ? 0b010 : 0b100;  // ck/8
if (ocr > 255) {

ocr = F_CPU / freq2 / 64 - 1;
prescalarbits = (channel == 1) ? 0b011 : 0b111; // ck/64
if (ocr > 255) {

ocr = F_CPU / freq2 / 256 - 1;
prescalarbits = (channel == 1) ? 0b100 : 0b1001; // ck/256
if (ocr > 255) {

ocr = F_CPU / freq2 / 1024 - 1;
prescalarbits = (channel == 1) ? 0b101 : 0b111; // ck/1024
}
}
}
}

if (channel == 1) {
TCCR0B = (TCCR0B & 0b11111000) | prescalarbits;
OCR0A = ocr & 255;
} else {
TCCR1 = (TCCR1 & 0b11110000) | prescalarbits;
OCR1A = ocr & 255;
}
}

/* Entry Point */
int main(void) {
/* Variables */
uint8_t channel;
uint8_t note;

/* Channels & Led Pin As Output */
    DDRB |= (1 << SOUND_OUT_1_BIT) | (1 << SOUND_OUT_2_BIT) | (1 << WORKING_LED_BIT);

/* Seting up Timer To CTC Mode */
/* Timer0 */
TCCR0A = 1 << WGM01;
TCCR0B = 1 << CS00;

/* Timer1 */
TCCR1 = (1 << CS10) | (1 << CTC1);

/* Stop Interrupt */
setChan1Off();
setChan2Off();
setLedOff();

/* Seting up I2C Slave */
usiTwiSlaveInit(I2C_NODE_ADDRESS);
sei();

/* Forever loop */
for(;;) {
/* If Data Sent Over I2C */
if(usiTwiDataInReceiveBuffer()) {
setLedToggle();
channel = usiTwiReceiveByte();
note = usiTwiReceiveByte();
switch(channel) {
case 0:
if(note == 1) {
setChan1Off();
} else if(note == 2) {
setChan2Off();
}
break;

case 1:
set_channel(1, note & 127);
setChan1On();
break;

case 2:
set_channel(2, note & 127);
setChan2On();
break;
}
}
}
}

Mon makefile :
Code:
DEVICE=attiny85
AVRDUDE = avrdude -c usbtiny -p $(DEVICE)

COMPILE = avr-gcc -Wall -Os -I. -mmcu=$(DEVICE) -DF_CPU=16000000 -DDEBUG_LEVEL=0
SIZE = avr-size --mcu=$(DEVICE)
OBJECTS = usiTwiSlave.c tinysound.c

all: $(OBJECTS) clean
$(COMPILE) -o main.bin $(OBJECTS)
avr-objcopy -j .text -j .data -O ihex main.bin main.hex
$(SIZE) main.hex
rm -f *.bin

flash:
$(AVRDUDE) -U flash:w:main.hex

fuse:
$(AVRDUDE) -U lfuse:w:0xc1:m -U hfuse:w:0xd4:m -U efuse:w:0xff:m

clean:
rm -f *.o *.bin *.hex
3711  International / Le bar / Re: Rédaction d'une Charte (réglement) du forum on: March 03, 2012, 01:00:38 pm
C'est marrant, tu ne parles pas d'orthographe....  smiley-lol
*sifflote* de quoooi ? smiley-kiss
3712  International / Français / Re: Projet affichage pseudo 115 led RGB on: March 03, 2012, 05:57:44 am
smiley-eek ok donc c'est une forme spécial ...

Tu veut faire des effets de lumière sur chaque led de chaque lettres, ou tu veut faire des effets sur chaque lettres (globalement).

Tu peut aussi regarder du coté des led RGB avec CI intégré :
http://www.watterott.com/de/BlinkM-miniM-I2C-RGB-LED
http://www.watterott.com/de/WS2801-Breakout
http://www.watterott.com/de/12mm-RGB-LED-Strang-WS2801
http://www.watterott.com/de/Digital-Addressable-RGB-LED
3713  International / Le bar / Re: Rédaction d'une Charte (réglement) du forum on: March 03, 2012, 05:24:28 am
Salut,

Bonne idée d'ouvrir ce topic !

Pour ma pars je verrai bien des régles du genre :
- Pas de lien ebay dans les messages, toujours utiliser des liens qui perdure dans le temps, ou fournir une capture d'écran de l'objet avec la description,
- Attacher en piéce jointe les images, ne pas utiliser d'hébergeur externe (l'hébergeur ferme -> tout les liens sont HS),
- Ne pas attacher une image en pleine résolution (sinon ça devient impossible de naviguer avec une image sur tout l'écran),
- Mettre tout code source entre balise code (non seulement parce que c'est plus propre, mais en plus ça évite les bug avec les balises BBcode),
- Expliquer en détails son probléme des le 1er post, ne pas laisser de coté des détails qui semble insignifiant,
- Lorsque qu'on parle d'un produit, mettre un lien vers le produit en question (carte arduino officiel exclu),
- Lorsque qu'on souhaite de l'aide pour un montage, fournir un schéma détaillé du montage sous format image (voir si possible fournir le fichier fritzing / proteus / eagle ...),
- Dans le cas d'un bug visuelle (un afficheur qui déconne etc ...) fournir une photo qui montre le bug et un schéma/photo montrant le résultat souhaité,
- Choisir un nom de topic concret, pas un simple "besoin d'aide",
- Respecter une typo pour le nom de topic, Donner le type de post [Astuce] [Bug] [Release] ..., le matériel principal utilisé UNO + EthShield, et le contenu du topic - Pb Exemple Webserver (ex: [Bug] UNO + EthShield - Pb Exemple Webserver),
- Ne pas écrire son post en une seul ligne, les retours lignes ça coute rien et c'est beaucoup plus clair pour tout le monde,
- Pas de sms ou de raccourci barbare, on n'est pas là pour faire de la cryptographie orthographique,
- Pas d'insultes ou de moqueries, que ce soit envers un débutant, comme envers un membres expérimenté,
- Pas de message à caractéres provocateur, raciste, etc etc ...
- On ne discutte pas les décisions d'un arbitre lors d'un match, ça vaut aussi pour les modérateurs du forum,
- Pas de MP pour poser une question à un autre membre sur un sujet pouvant intérésser d'autres membres, le principe d'une communauté c'est de partager, pas de faire son truc dans son coin par MP interposé,
- La fonction rcherche marche mal mais c'est pas pour ça qu'il faut pas l'utiliser,
- Ne pas poster de messages HS sur tout et n'importe quoi, la (futur) partie Bar est là pour ça
- 1 sujet = 1 topic, ne pas faire dériver le sujet d'origine vers un autre sujet, au risque qu'il perde toute intégrité, si un nouveau sujet se pose, ouvrir un nouveau topic.

J'en aurai encore plein d'autres à ajouter, mais si j'en ajoute encore on va me prendre pour un dictateur ^^""

Il faudrait aussi ajouter les divers régles énoncée dans le règlement en anglais, ainsi que faire un topic/message portant sur l'aspect légal des interventions (messages racistes, etc ..., disclaimer au sujets des possible dégradation matériel et physique).
Au passage pour les tutoriels il faudra mettre en place une mise en forme et quelques régles à respecter (fournir une version pdf par exemple, ce genre de truc), et mettre en place un post regroupant les différents type de licence utilisable pour la publication.

Une charte de bonne conduite concernant le vole de code (plagiat) et la citation des sources serait pas mal aussi.

Aprés ya plein d'autres chose à mettre en place si on veut faire bien ...

Tient du coup en écrivant ces lignes je me rend compte que arduino.cc serait vraiment plus sympa avec :
- un service interne comme pastebin pour les codes volumineux,
- un service interne d'hébergement d'image (même basique),
- une fonction recherche pouvant cibler une seul section du forum.

Enfin voila, my 2 cents smiley-mr-green
3714  International / Français / Re: Projet affichage pseudo 115 led RGB on: March 03, 2012, 01:09:09 am
Salut,

Bon déja avec des 74HC595 c'est réalisable MAIS tu n'aura que 7 couleurs possible (différents état logique 0/1 sur RGB).

Tu parle de 115 led rgb, ok, mais sous quel forme, ligne, colonne, matrice, ... ?

Sinon dans le principe, controler 115 led rgb, avec les CI qui vont bien c'est tout à fait possible.
Aprés faire le câblage des led c'est beaucoup plus chiant ...
3715  International / Français / Re: Montage 10 afficheurs 7 segments. on: March 02, 2012, 12:59:15 pm
grosso modo , je passe une commande de bricoles 1 fois par mois chez DX
j'ai eu 2 fois des petits loupés (dont un sur la carte led/bp : livré un rouge alors que je voulais un vert) , leur service "après-vente" est reactif et efficace (attention à bien garder tout les emballages y compris l'envellope d’expédition)  , il te demande de faire qq photos
et le probleme est réglé rapidement : dans le dernier cas après quelques échange de mail, leur réponse à été : gardez le wrong item, on vous en expédie un ok et credit de 2$ sur prochaine commande.
pour la qualité en elle même, c'est difficile à dire DX n'est qu'un agrégateur de commande, mais globalement je suis satisfait, seul bemol ne pas commander aujourd'hui pour espérer être livré lundi ou mardi, d’expérience c'est 15 jours mini.
smiley-eek Je voyais DX comme un truc trés limite, mais si ya un sav ... ralala tu viens de signer l'arrêt de mort de mon budget du mois smiley-mr-green
Pour les 15j, j'ai l'habitude, ebay en provenance de chine ça prend 15-20j donc bon ...

C'est quoi ton horloge à matrice de led ?
http://www.dealextreme.com/p/jy-mcu-3208-lattice-clock-ht1632c-driver-with-mcu-support-secondary-development-104306
J'ai trouvé le schéma de la bête, ya moyen de faire des trucs sympa moyennant quelques modif :
http://ljy99731.13.dns222.net/Download/3208_clock_new.PDF

Quote
Skywodd Merci d'avoir essayé
Pas de quoi smiley-sweat
3716  International / Français / Re: Montage 10 afficheurs 7 segments. on: March 02, 2012, 11:19:35 am
bonjour skywodd
et ...  ma photo tu l'a vu là ma photo ?  smiley-mr-green
http://arduino.cc/forum/index.php/topic,94596.msg710876.html#msg710876
... oups smiley-red j'avais pas tilté que c'était l'afficheur de DX.

tres sympa aussi du meme "fabricant"
8 7seg+dot
8 leds bicolores (mix possible)
8 BP
5 modules chainables (1 port sup par modules)
existe en rouge et vert pour les 7seg
Bin tient au passage du coup !
Je voulais me prendre un afficheur 7seg + la carte led / bp + l'horloge à matrice de led (2-3 coup de cutter et hop une matrice de led spi), ~20$ le tout, c'est tellement pas chére que j'hésite ...
Arnaque ou pas arnaque ? Qualité pas trop mal ou truc merdique ? DX fiable ou pas fiable ?
3717  International / Français / Re: Montage 10 afficheurs 7 segments. on: March 02, 2012, 09:57:16 am
Salut,

Si tu n'as pas peur de commander en chine :
http://www.dealextreme.com/p/jy-mcu-16x-digital-tube-yellow-led-module-104311

16 afficheurs 7 seg avec commande SPI

Même avec un Attiny85 on peut le controler smiley-wink
(http://hackaday.com/2012/01/24/a-simple-self-contained-7-segment-display/)
3718  International / Tutoriels et cours / Re: [Résolu] Intégration du langage Arduino dans AVR Studio 5 on: March 02, 2012, 09:46:14 am
Pour les francophones: QuercusPetraea nous avertit qu'avec la nouvelle version de Studio 5.1, Atmel a corrigé le problème du LINKER. Il n'est désormais plus nécessaire de changer le makefile pour déplacer les options -Wl,-lcore  -Wl,-lm à la fin de la ligne.

Une belle épine hors du pied.
Avr studio 5.1 ... arg! Je vais devoir encore télécharger +350Mo smiley-yell
Il faut vraiment qu'ils ajoutent une fonction de mise à jour auto dans avr studio !
Le truc "check for update" qui redirige sur la page de téléchargement c'est ch*ant ...
3719  International / Français / Re: [Résolu] Lib "VirtualWire.h" incompatible avec Lib "Servo.h" !!? on: February 29, 2012, 03:38:14 pm
Pour ceux qui auraient un probléme de compilation à cause de math.h
Code:
#undef int
#undef abs
#undef double
#undef float
#undef round
La derniére ligne suffit en général, sinon il faut faire des test pour savoir quel undef garder ou non.
3720  International / Français / Re: Lib "VirtualWire.h" incompatible avec Lib "Servo.h" !!? on: February 29, 2012, 01:01:36 pm
Mais je trouve dommage qu'il n'y ait toujours pas une sorte de "norme" qui impose de lister les ressources utilisées par une lib, histoire que l'on sache d'entrée de jeu si une lib est compatible avec une autre, et c'est un peu ce que j'attendais de la version 1.0 de l'IDE. quand on importe une lib, l'IDE devrait vérifier que les ressources utilisées par la lib importée soient encore libre...
Déja ce qui serai un minimum, ce serait d'avoir un repository (svn ou git) avec TOUTES les librairies dispo.
Au moins ça aurait l'avantage de permettre une mise à jour centralisé et facile (ça aurait même pu être intégré à l'ide).
La team arduino a tenté un truc dans le genre, mais vu comment c'est géré personne veut l'utiliser ...
Pages: 1 ... 246 247 [248] 249 250 ... 357