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

ATtiny2313 Musique_8bits



  1. #1
    Hack-off

    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
    freepicbasic

    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);
    A+, pat

  3. #3
    Hack-off

    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
    freepicbasic

    Re : ATtiny2313 Musique_8bits

    Et reste les calculs...
    ou un tableau !
    A+, pat

  5. A voir en vidéo sur Futura
  6. #5
    Hack-off

    Re : ATtiny2313 Musique_8bits

    Je suis preneur.

  7. #6
    freepicbasic

    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);
    }
    }

    A+, pat

Discussions similaires

  1. Programmeur USB pour microcontrôleur attiny2313
    Par YuGiOhJCJ dans le forum Électronique
    Réponses: 23
    Dernier message: 01/05/2014, 20h15
  2. attiny2313 sur port parallèle
    Par YuGiOhJCJ dans le forum Électronique
    Réponses: 24
    Dernier message: 02/06/2012, 15h54
  3. I2C/TWI avec ATtiny2313
    Par gimli_51 dans le forum Électronique
    Réponses: 0
    Dernier message: 01/02/2012, 10h37
  4. programmation d'un attiny2313
    Par jo-electrons dans le forum Électronique
    Réponses: 0
    Dernier message: 08/03/2010, 10h26
  5. microcontroleur ATtiny2313 tro besoin daide
    Par projetbtsE7 dans le forum Électronique
    Réponses: 1
    Dernier message: 07/05/2009, 14h22
Découvrez nos comparatifs produits sur l'informatique et les technologies.