Go Down

Topic: Libraire de contrôle pour PCF8574 et question sur le playground (Read 4518 times) previous topic - next topic

skywodd

Apr 21, 2011, 08:30 pm Last Edit: Apr 27, 2011, 09:47 pm by skywodd Reason: 1
*** Màj version 1.1 ***
* gestion des interruptions
* gestion des résistances de pull-up / pull-down software
* correction de petit bug
* fonction i2c disponible depuis les interruptions

Bonjours,

Alors voila depuis deux jours je me suis lancer dans la fabrication de deux librairies, une pour piloter un NS73M (puce émetteur fm) et plus récemment une pour piloter un PCF8574 (expanseur I/O I2C 8 bits).

La libraire pour le NS73M étant terminé j'ai attaqué (et finit) celle pour le PCF8574.
Elle permet d'utiliser les fonctions classique (pinMode, digitalWrite, digitalRead,blink,toggle,set,clear) en utilisant un expanseur I2C comme des I/O normales.
La librairie est en pièce jointe au post ;)

Seulement je me posai une question comment faire si je veux ajouter mes deux libraires au playground ? (et dans quelle sections ?)

C'est ma deuxième libraire donc comme pour la première tout avis ou conseil sera le bienvenue.
Pour rappel la 1er librairie était ici.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

B@tto

Ohoh PCF8574  :D je comptais justement faire un tuto sur une extension relais commandé en i2c basée sur ce CI (et peut-être faire une librairie pour l'occaz), du coup ça risque d'être pas mal la :)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

skywodd

#2
Apr 22, 2011, 06:58 pm Last Edit: Apr 22, 2011, 09:53 pm by skywodd Reason: 1
Et bien heureux que ce soit utile à quelqu'un  :) d'ici peu j'attaque une librairie pour la shield Tellymate.

Sinon ma question sur comment ajouter une librairie au playground tient toujours ^^
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

karistouf

bonjour. pour ceux qui ne sont pas très doués ( comme moi  :smiley-mr-green: )
- que permet de faire cette librairie ? ( rajouter 2 analogues et 8 IO sur une arduino ?)
- peut on chainer des PCF8574 entre eux ?
- peux tu joindre à celle ci un schema breadboard issu de fritzing , de façon à visualiser le branchement à l arduino ?

voilà et merci !

skywodd

#4
Apr 23, 2011, 04:42 pm Last Edit: Apr 27, 2011, 02:25 pm by skywodd Reason: 1
Bonjours karitouf,

Alors déjà le PCF8574 est un périphérique d'entré/sortie I2C donc oui plusieurs PCF peuvent être chainé en utilisant le même bus I2C.
Il permet d'avoir accès à 8 entrées (ou sorties) LOGIQUE (uniquement) en utilisant seulement les pin A4 et A5 (port I2C des cartes arduino) comme bus de contrôle.

Pour le schémas fritzing j'ai jamais réussi à faire un truc propre, en réalité c'est le même qu' ICI sans les résistances de pull-up.

Ma librairie fourni les fonctions suivantes :
pinMode(int pin, int mode) -> Configure une patte en entrée ou en sortie.
digitalWrite(int pin,int value) -> Écrit un niveau logique <value> sur la patte <pin>.
int digitalRead(int pin) -> Lit un niveau logique sur la patte <pin>.
write(int value) -> Écrit une valeur <value> (int 8 bits) sur le port entier du PCF (les pâtes en entrée ne sont pas affectées) .
int read() -> Lit la valeur du port entier du PCF (sortie et entrée).
clear() -> Met toute les pattes en sortie à "0" logique.
set() -> Met toute les pattes en sortie à "1" logique.
toggle(int pin) -> Inverse l'état logique de la pattes <pin> (uniquement si <pin> est configuré en sortie).
blink(int pin,int time,int wait) -> Fait clignoter la patte <pin> pour <time> fois en attendant <wait> ms entre chaque bascullement.

Remarque importante pour le PCF8574 (P) l'adresse de base (A0~2 à la masse) est 0x20 MAIS pour le PCF8574A (P) elle est 0x38 .
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

karistouf

#5
Apr 23, 2011, 07:35 pm Last Edit: Apr 23, 2011, 07:37 pm by karistouf Reason: 1
bonjour a toi.

LOGIQUE c a dire booleen ?

à ton avis est ce que c'est bien pour utiliser sur des matrices de leds en niveau 0 / Full ?
je voudrais me faire une surface de controle avec rotatif et éclairage par leds des positions des rotos .

Bonsoir

C super ta librairies, je pences quel a de l'avenir.
Cordialment
Windows Certif MCSA. Electronicien.
Arduino Mega 2560.
68hc11F1, 68705U3, 68705P3.
Perl,Java,ABAP,VB,VBS,VBnet,Php,Asp,Css,C,C++,C#,MySql,S

skywodd


bonjour a toi.

LOGIQUE c a dire booleen ?

à ton avis est ce que c'est bien pour utiliser sur des matrices de leds en niveau 0 / Full ?
je voudrais me faire une surface de controle avec rotatif et éclairage par leds des positions des rotos .



bonjours,
Par logique j'entends 0 volts ou 5 volts en sortie du pcf8574 ou 0 volts = "0" logique et 5 volts = "1" logique.
Ensuite le pcf8574 ne permet d'avoir un courant important (50mA) qu'avec un courant ENTRANT (courant sortant = 50µA).

Pour la suite de ton post j'ai pas tout compris  :) si le but est d'utiliser un encodeur rotatif avec un retour lumineux de la position voila un exemple de montage:
Montage led:
[5V]---[LED (A -|>|- K)]---[330 ohm]---[I/O PCF8574]
Montage encodeur (seulement d'une sortie):
                 [I/O PCF8574]
                        |
[5V]---[10K]---+---[ENCODEUR]---[0V]
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

karistouf

merci à toi, c est exactement ca !!! et merci pour l info 0-5v logique

skywodd

#9
Apr 25, 2011, 11:20 am Last Edit: Apr 27, 2011, 02:24 pm by skywodd Reason: 1
Bonjours,

Heureux de t'avoir était utile karistouf.  :)
Juste un petit détail au passage pour ceux qui viendrai fouiller ma librairie la déclaration de function_pointer est dans la source car au début j'avais en tête de pouvoir utiliser chaque pattes pour déclenchez une interruption chose que le PCF8574 n'est pas arrivé à gérer ;) (fallait mettre toute les pattes en sortie c'était pas viable).

EDIT: j'ai fait une petite vidéo vite fait pour montrer le résultat (c'est un peu crade mais bon :P).
http://www.youtube.com/watch?v=wGJF7Oz1NZw
(Visitez ma chaine youtube si vous voulez voir d'autre de mes projets ;))
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

B@tto

Quote
Juste un petit détail au passage pour ceux qui viendrai fouiller ma librairie la déclaration de function_pointer est dans la source car au début j'avais en tête de pouvoir utiliser chaque pâtes pour déclenchez une interruption chose que le PCF8574 n'est pas arrivé à gérer  (fallait mettre toute les pâtes en sortie c'était pas viable).


Euuu je comprends pas : tu n'es pas arrivé à gérer les interruptions du tout ou juste dans ta librairie ?
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

skywodd

#11
Apr 26, 2011, 10:10 pm Last Edit: Apr 27, 2011, 02:23 pm by skywodd Reason: 1
Bonjours,
En fait j'avais deux solutions soit utiliser l'interruption du pcf8574 pour m'annoncer un changement d'état d'une patte ou vérifier avec un timer l'état des pâtes à un intervalle précis.
Le problème est que dans la première je n'est réussi à obtenir une interruption de la part du pcf8574 qu'en passant toute les pattes à 0 ce qui pose problème pour le reste.
Dans la seconde solution l'utilisation d'un timer me sembler trop lourde donc j'ai abandonné l'idée des interruptions.

Après si quelqu'un connais la méthode pour avoir une interruption sur INT je modifierai mon code pour permettre les fonctions attachInterrupt et detachInterrupt ;)
http://focus.ti.com/lit/an/scpa032/scpa032.pdf (page 8 et montage avec résistance pull-up au 5V)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

B@tto

je ne me souviens pas avoir eu spécialement de problème, mais en relisant la datasheet je ne vois pas trop où tu peux bloquer : l'interruption est générée quand ce que tu as "écrit" n'est pas ce qui est réellement (ex : tu as forcé à 0100000 et en réalité tu as 0000000). Mais dans tout les cas tu dois forcement jouer avec les pull-up et les pull-down. Après j'ai jamais fait de librairie donc je ne visualise pas totalement non plus le problème peut-être ...
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Jean-François


état d'une pâte


Aldente... probablement avec cet orthographe   XD

Tu veux probablement parler de pattes  ;)
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

skywodd

#14
Apr 27, 2011, 02:22 pm Last Edit: Apr 27, 2011, 04:05 pm by skywodd Reason: 1
/facepalm, epik fail j'avais pourtant regardé si c'était patte ou pâte faut croire que j'avais une chance sur deux ^_^

B@tto: je vais regarder pour cette broche INT j'ai du faire une erreur dans mon pcb ;)
Je posterai si j'ai des nouvelles.

EDIT: Bon alors comment dire ...
epik fail #2 j'ai effectivement les interruptions, seul petit soucis j'avais ... oublié de souder la patte INT  :smiley-sweat: oups !
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up