Pages: [1] 2 3   Go Down
Author Topic: Libraire de contrôle pour PCF8574 et question sur le playground  (Read 3933 times)
0 Members and 1 Guest are viewing this topic.
France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

*** 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 smiley-wink

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.

* PCF8574.zip (3.47 KB - downloaded 36 times.)
* PCF8574-1.1.zip (6.23 KB - downloaded 27 times.)
« Last Edit: April 27, 2011, 02:47:34 pm by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3642
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ohoh PCF8574  smiley-grin 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 smiley
Logged


France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Et bien heureux que ce soit utile à quelqu'un  smiley d'ici peu j'attaque une librairie pour la shield Tellymate.

Sinon ma question sur comment ajouter une librairie au playground tient toujours ^^
« Last Edit: April 22, 2011, 02:53:19 pm by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

FRANCE
Offline Offline
Sr. Member
****
Karma: 0
Posts: 338
Arduino rocks .... oulalalalala
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 .
« Last Edit: April 27, 2011, 07:25:08 am by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

FRANCE
Offline Offline
Sr. Member
****
Karma: 0
Posts: 338
Arduino rocks .... oulalalalala
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 .
« Last Edit: April 23, 2011, 12:37:55 pm by karistouf » Logged

bussy st george
Offline Offline
Jr. Member
**
Karma: 0
Posts: 65
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir

C super ta librairies, je pences quel a de l'avenir.
Cordialment
Logged

Windows Certif MCSA. Electronicien.
Arduino Mega 2560.
68hc11F1, 68705U3, 68705P3.
Perl,Java,ABAP,VB,VBS,VBnet,Php,Asp,Css,C,C++,C#,MySql,S

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley 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]
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

FRANCE
Offline Offline
Sr. Member
****
Karma: 0
Posts: 338
Arduino rocks .... oulalalalala
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjours,

Heureux de t'avoir était utile karistouf.  smiley
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 smiley-wink (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 smiley-razz).

(Visitez ma chaine youtube si vous voulez voir d'autre de mes projets smiley-wink)
« Last Edit: April 27, 2011, 07:24:09 am by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3642
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged


France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
http://focus.ti.com/lit/an/scpa032/scpa032.pdf (page 8 et montage avec résistance pull-up au 5V)
« Last Edit: April 27, 2011, 07:23:28 am by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3642
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ...
Logged


Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

état d'une pâte

Aldente... probablement avec cet orthographe   smiley-lol

Tu veux probablement parler de pattes  smiley-wink
Logged

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

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

/facepalm, epik fail j'avais pourtant regardé si c'était patte ou pâte faut croire que j'avais une chance sur deux smiley-kitty

B@tto: je vais regarder pour cette broche INT j'ai du faire une erreur dans mon pcb smiley-wink
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 !
« Last Edit: April 27, 2011, 09:05:02 am by skywodd » Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1] 2 3   Go Up
Jump to: