Go Down

Topic: Arduino, Attiny85 et SD player d'ELM Chan via I2C (Read 6 times) previous topic - next topic

al1fch

#25
Dec 25, 2011, 08:43 pm Last Edit: Dec 25, 2011, 08:51 pm by al1fch Reason: 1
Arioch, as-tu tenté  (juste pour voir ce que ça donne un reset du Tiny85 par bouton poussoir sur sa broche 1)  .....ça serait juste un lever de doute ......

L'entrée Reset est un peu particulière vu qu'elle sert aussi à détecter la 'haute tension' de programmation? C'est spécifié =12V pour une alimentation de 5V mais qui sait, un Tiny85 particulièrement 'susceptible' alimenté en 3,3V réagit peut être avec 5V sur son Reset ?

Si le reset par BP fonctionne bien il suffirait (si l'hypothèse du passage involontaire en HVSP est valide) soit :
-d'abaisser le niveau haut envoyé par l'Arduino sur le reset du Tiny85 (pont diviseur par exemple.....)
-ou ou de séparer les niveaux hauts (5V et 3,3V) en mettant une diode (cathode en sortie Arduino et anode en pin 1 du Tiny85. )


Arioch

#26
Jan 16, 2012, 07:45 pm Last Edit: Jan 16, 2012, 11:58 pm by Arioch Reason: 1
Salut, bon je reviens sur ce montage, d'une part parce que ça m'intrigue, et d'une autre part parce que j'aimerais vraiment intégrer un lecteur SD à mon projet, et j'ai un peu matter sur la toile mais y'a rien de comparable au lecteur d'ELM Chan transformé par ELO-WEB....enfin si mais trop cher.

Alors déja @al1fch j'ai cablé le reset en direct sur un pin arduino pour faire un reset, et en direct sur l'arduino ça marche pas, je suis passé par un 2N3904, et le reset se fait nickel, faut mettre un temps de latence entre l'appuis du reset et le lachage virtuel, et aussi un petit temps de démarrage pour envoyer une commande, donc merci à toi :

Code: [Select]
#include <Wire.h>
const int reset = 2;
int count = 0;

void setup()
{
 pinMode(reset, OUTPUT);
 digitalWrite(reset,1);
 Wire.begin();

}


void loop()
{

 if(count < 3){
 Wire.beginTransmission(85);
 Wire.send(2);
 Wire.endTransmission();
 delay(2000);
 digitalWrite(reset,0);
 delay(10);
 digitalWrite(reset,1);
 delay(100);
 Wire.beginTransmission(85);
 Wire.send(3);
 Wire.endTransmission();
 delay(2000);
 digitalWrite(reset,0);
 delay(10);
   digitalWrite(reset,1);
     count ++;
 }


Aprés vu que méme avec les convertisseurs de niveaux logique le fait de lancer un morceaux plante complétement le déroulement du prog (dû au passage du bus I2C vers SPI) j'ai pensé à un truc, et je ne sais pas si c'est faisable, j'attends donc que vous m'éclairiez.

J'ai testé le voltage entre la ligne SDA et SCL sur l'ATtiny85 pendant tout le cycle de lecture d'une piste, j'obtiens donc:
-Au repos : 1V
-Lecture : 1.5V
-Aprés fin lecture : pique à 3.3V
-Repos : 1 V
........

Serait t'il possible de rajouter un Attiny85 qui lui serait là pour faire office de "relais" d'ouverture et de fermeture pour couper la ligne SDA/SCL le temps de la lecture, en gros l'arduino envois la commande à l'ATtiny qui lit la musique, l'autre ATtiny compare la tension entre SDA et SCL et si celle ci dépasse 1V coupe la liaison SDA/SCL entre l'arduino et le lecteur audio, et l'a réouvre une fois que la tension reviens à 1V?

C'est possible ou pas?

Merci de vos réponses, A+

Go Up