Pages: [1] 2   Go Down
Author Topic: Lire un fichier text  (Read 2412 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
Je suis étudiant en science et j'ai fait récemment l'acquisition d'un arduino uno pour mon travail  smiley-lol
J'aimerais calculer à partir d'un fichier text l'intensité d'une LED.
ce fichier contient des un pourcentage d'intensité lumineuse du temps 0 au temps final.
Existe t-il une commande capable d'assigner à une variable les valeurs de ce fichier text ???

Merci beaucoup pour votre aide smiley smiley smiley
Logged

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

Il viendrai de où le fichier texte ?
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut B@tto,
Le fichier text est un fichier que j'ai crée à partir de Matlab par exemple.
Il contient un vecteur de % d'intensité :
[0 100 40 20 40 50 100 ... ]

il est localisé dans le même dossier que le code arduino dans l'ordinateur
« Last Edit: March 05, 2013, 12:38:00 pm by bobijack » Logged

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

Oula oui c'est large comme idée, il va falloir préciser parce que la on peut imaginer plusieurs solutions : texte envoyé par un soft sur pc puis envoyé à l'arduino, lecture par l'arduino d'une carte sd ...
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En gros l'idée est de générer un vecteur d'intensité lumineuse (en pourcentage d'intensité) avec un soft tel que matlab.
J'enregistre donc ce vecteur dans un fichier text.
Puis mon but est d'importer ce fichier text dans l'arduino et lui faire lire à chaque pas de temps l'intensité lumineuse correspondante afin que ma led s'allume avec telle % d'intensité.

exemple :
[100 0 50 100]
si je prends comme pas de temps toutes les 5 secondes par exemples :
100 % d'intensité pendant 5 secondes puis 0 % d'intensité pendant 5 secondes puis 50 % d'intensité etc.

Peut être qu'il existe une solution plus simple sans passer par un fichier text à importer mais j'avoue que mes connaissance en arduino et en C sont vraiment très limités. smiley-cry

Merci beaucoup  smiley
Logged

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

Si on s'en tiens à un principe simple : http://www.earthshineelectronics.com/files/ASKManualRev5.pdf  ==> p58  il y a le programme côté arduino : on envoi une chaine par le port série contenant trois valeurs et l'Arduino allume une LED RGB en conséquence.

A toi après côté PC de créer un programme capable de lire ton fichier texte et d'envoyer la chaine à l'Arduino via le port série.

Logged


Offline Offline
Sr. Member
****
Karma: 3
Posts: 362
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

 une solution si tu utilise une SD consisterai a ajouter des séparateur genre "; "éventuellement transformer tes valeurs en float ex: 50.0 , 100.0....etc
et utilisé la fonction :
Code:
ma_valeur=file.parseFloat ();
qui recherche directement des float dans un fichier text
et te décaler dans ton fichier au fur est a mesure avec:
Code:
file.position()+1
au dépars c'est la solution que j'ai utiliser car vraiment plus simple a faire que d’analyser des suites de chaîne de caractère, la c'est les fonction de la lib SD.h qui le font pour toi !
mais il existe plein d'autre possibilité!
« Last Edit: March 06, 2013, 11:13:50 am by Heloderma-kris » Logged

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

Bonjour,

Il existe une solution pour ce genre de probléme : le format CSV.
http://fr.wikipedia.org/wiki/Comma-separated_values

Voici un exemple de code pour parser une ligne de texte en provenance du port série :
http://skyduino.wordpress.com/2012/03/22/arduino-parser-une-chaine-de-caracteres/

Le principe est le même avec un fichier sur une carte SD.
Logged

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

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Merci pour vos messages et désolé de mon temps de réponse ...
je ne compte pas utiliser de carte SD mais directement passer par l'ordinateur.
Skywodd merci pour ta réponse mais dans ton cas il faut que je passe une ligne de texte en provenance d'un port série et j'avoue que je sais pas trop comment le faire ... aurais tu un lien qui explique comment faire ?

Merci à vous
Logged

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

Skywodd merci pour ta réponse mais dans ton cas il faut que je passe une ligne de texte en provenance d'un port série et j'avoue que je sais pas trop comment le faire ... aurais tu un lien qui explique comment faire ?
Bon attend remet les choses au clair, qu'est-ce que tu veut faire exactement et comment ?
Logged

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

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok Je vais essayé d'être le plus clair possible ...

Donc j'ai un fichier texte de pourcentage d'intensité :
Code:
I = [100 50 20 30 40 90 80 30 ...]

Je veux faire lire ce fichier à l'arduino pour que toutes les 2 mins par exemple il réduise ou augmente l'intensité de 4 leds (les 4 leds se comportent de la même manière)
Donc avec l'exemple que j'ai donné les leds s'allumeront à 100% - puis 2 mins plus tard - 50 % - puis 2 mins plus tard 20 % ... etc.

J'ai un arduino uno mais je peux éventuellement acheter un shield pour carte SD si le problème se résout plus simplement comme ça smiley

Merci infiniment de ton Aide smiley-wink smiley
Logged

Offline Offline
Sr. Member
****
Karma: 3
Posts: 362
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Moi je suis curieux de voir comment on fait pour lire un fichier text ou csv sur l'ordinateur et balancer tout sa sur le port serie ?
pour moi on peut pas sans un soft qui tourne coté PC , c'est peut'etre ça qui te pose probléme non?
avec processing sa doit pouvoir ce faire des truc comme ça mais j'ai jamais tester perso!
Logged

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

Ok Je vais essayé d'être le plus clair possible ...

Donc j'ai un fichier texte de pourcentage d'intensité :
Code:
I = [100 50 20 30 40 90 80 30 ...]

Je veux faire lire ce fichier à l'arduino pour que toutes les 2 mins par exemple il réduise ou augmente l'intensité de 4 leds (les 4 leds se comportent de la même manière)
Donc avec l'exemple que j'ai donné les leds s'allumeront à 100% - puis 2 mins plus tard - 50 % - puis 2 mins plus tard 20 % ... etc.

J'ai un arduino uno mais je peux éventuellement acheter un shield pour carte SD si le problème se résout plus simplement comme ça smiley

Merci infiniment de ton Aide smiley-wink smiley

Oui donc il faut "streamer" le texte par le port série. Une Arduino ne lit pas directement des textes comme un PC. Par contre par le port série tu peux lui transmettre des données, comme dans le lien que je t'ai donné. Donc il faut un soft sur le PC qui va pouvoir lire le texte et transmettre les données par le port série. Ou deuxième solution : utiliser une carte SD sur laquel tu auras préalablement copier ton fichier texte, et la avec la librairie adéquat on peut lire le fichier texte ou csv avec l'Arduino.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ta réponse smiley

J'ai essayé ce tuto :

http://arduinobasics.blogspot.co.uk/2012/05/reading-from-text-file-and-sending-to.html

Son exemple marche bien mais malheureusement j'ai du mal à comprendre le fichier processing ...
du coup j'ai du mal à modifier le code pour lire mon fichier texte et du coup modifier l'intensité de mes leds.

J'aimerai essayé les deux possibilité pour voir quelle solution est la plus simple pour mes expériences.

B@tto : j'ai en effet suivis ton exemple mais malheureusement ce qui me pause problème c'est le code pour envoyer les données à l'arduino via le port serie.
« Last Edit: March 21, 2013, 03:46:34 am by bobijack » Logged

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

Bonjour,

Regarde du côté de Python et de PySerial smiley-wink
C'est un langage de programmation très simple et rapide à mettre en œuvre.

Ensuite ce qu'il faut que tu fasses c'est mettre en place un protocole de communication entre ton ordinateur et ton arduino.
C'est via ce protocole de communication que ton ordinateur va (au moment qui va bien) envoyer les ordres pour faire ceci ou cela à l'arduino.
Regarde dans la partie tutoriel du forum, Barbudor a fait un très bon tuto sur ce sujet smiley-wink
Logged

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

Pages: [1] 2   Go Up
Jump to: