ATtiny2313 Musique_8bits
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

ATtiny2313 Musique_8bits



  1. #1
    inviteeddcde8d

    ATtiny2313 Musique_8bits


    ------

    Bonjour a tous et a toutes

    Je cherche des solutions pour faire fonctionner un ATtiny2313 avec de la BF sur les ports B.
    J'ai cette portion de code avec les librairies qui vont bien :

    #define F_CPU 4000000UL //4Mhz

    #include <avr/io.h>
    #include <util/delay.h>

    int main(void)
    {
    DDRB = 0b11111111;
    while(1)
    {
    PORTB = 0b11111111; // 1 veut dire zero V en sortie
    _delay_us(550); //
    PORTB = 0b11111110; // 0 veut dire un V en sortie
    _delay_us(550);
    }
    }

    Avec ça, sans charge, sur l'oscilloscope j'ai 240hz.
    C'est un début.

    Le but serait de maintenir cette note une seconde et d'en faire une autre, a la suite, de 480hz par exemple.

    Voila cordialement

    -----

  2. #2
    invitef86a6203

    Re : ATtiny2313 Musique_8bits

    maintenant faut compter les pulses pour faire une durée et comme les notes ont une fréquence différentes il faudra un compte différent pour chaque note d une même durée.
    Il faut donc faire une procédure note(freq,durée);

  3. #3
    inviteeddcde8d

    Re : ATtiny2313 Musique_8bits

    En utilisant une boucle for ça m'a l'air tout indiqué.
    un uint64_t pour i devrais suffire pour une seconde.
    #include<stdint.h> pour l'utiliser.
    Et reste les calculs...

  4. #4
    invitef86a6203

    Re : ATtiny2313 Musique_8bits

    Et reste les calculs...
    ou un tableau !

  5. A voir en vidéo sur Futura
  6. #5
    inviteeddcde8d

    Re : ATtiny2313 Musique_8bits

    Je suis preneur.

  7. #6
    invitef86a6203

    Re : ATtiny2313 Musique_8bits

    Aller la suite !



    // do re mi fa
    int MyNot[8] = { 131, 147, 165,175 };
    // 131/4, 147/4 etc ...
    int MyBlack[ = {32,39,41,43};

    #define F_CPU 4000000UL //4Mhz

    #include <avr/io.h>
    #include <util/delay.h>

    int main(void)
    {
    DDRB = 0b11111111;
    while(1)
    {
    note(MyNot[0],MyBlack[0]);
    _delay_ms(2); //
    note(MyNot[1],MyBlack[1]);
    _delay_ms(2); //
    note(MyNot[2],MyBlack[2]);
    _delay_ms(2); //
    note(MyNot[3],MyBlack[3]);
    _delay_ms(200); //
    }
    }

    note(int Not, int Black)
    {
    int i;

    for (i=1;i<black;i++) {
    PORTB = 0b11111111; // 1 veut dire zero V en sortie
    _delay_us(Not); //
    PORTB = 0b11111110; // 0 veut dire un V en sortie
    _delay_us(Not);
    }
    }


Discussions similaires

  1. Programmeur USB pour microcontrôleur attiny2313
    Par inviteac627aa7 dans le forum Électronique
    Réponses: 23
    Dernier message: 01/05/2014, 21h15
  2. attiny2313 sur port parallèle
    Par inviteac627aa7 dans le forum Électronique
    Réponses: 24
    Dernier message: 02/06/2012, 16h54
  3. I2C/TWI avec ATtiny2313
    Par invite32a41225 dans le forum Électronique
    Réponses: 0
    Dernier message: 01/02/2012, 11h37
  4. programmation d'un attiny2313
    Par inviteeab0141b dans le forum Électronique
    Réponses: 0
    Dernier message: 08/03/2010, 11h26
  5. microcontroleur ATtiny2313 tro besoin daide
    Par invite212c852c dans le forum Électronique
    Réponses: 1
    Dernier message: 07/05/2009, 15h22
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...