Générateur de tonalité de tissu de microcontrôleur en code C (8 / 8 étapes)

Étape 8: Code

Si vous n’avez jamais programmé une puce avant, c’est un peu déconcertant. Cela n’aide pas que les outils sont squameuse et la plupart du temps, vous devrez effectuer la même opération plusieurs fois. Les deux meilleures ressources que j’ai trouvé pour obtenir une compréhension de ce qui se passe est la page pour le USBtinyISP, http://www.ladyada.net/make/usbtinyisp/ et le cours accéléré en programmation le jouet de bruit, http://blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html , ceux-ci devraient pouvoir vous aider à démarrer.

Beaucoup de gens aiment Arduino pour ce codage, et il n’y a rien de mal à l’utiliser, sauf que je me sens qu'il ajoute beaucoup de météorisation à un programme simple normalement. Aussi, je savais que C et ne sais Arduino. Peut-être un jour, si le temps. :)

Code :
{{{
#include < avr/io.h >
Utilisez une épingle pour mettre en marche le SPK

Typedefs / / /
typedef unsigned char u8 ;

int main (void)
{
U8 btnState0 ;
U8 btnState1 ;
U8 btnState2 ;
U8 btnState3 ;
U8 btnState4 ;
U8 btnState5 ;
U8 btnState6 ;

DDRB = (1 << DDB6) ; SPK Set pour la sortie
PORTD = (1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4) ; La valeur touche haut
PORTC = (1 << PC4) | (1 << PC6) ;
TCCR2B = (1 << CS21) ; Mettre en place la minuterie

while (1)
{
btnState0 = ~ PINC & (1 << PC5) ;
btnState1 = ~ PINC & (1 << PC4) ;
btnState2 = ~ PIND & (1 << PD0) ;
btnState3 = ~ PIND & (1 << PD1) ;
btnState4 = ~ PIND & (1 << PD2) ;
btnState5 = ~ PIND & (1 << PD3) ;
btnState6 = ~ PIND & (1 << PD4) ;

Si (btnState0)
{
Si (TCNT2 > = 190)
{
PORTB ^ = (1 << PD6) ; SPK Flip Pin
TCNT2 = 0 ;
}
}
Si (btnState1)
{
Si (TCNT2 > = 179)
{
PORTB ^ = (1 << PD6) ; SPK Flip Pin
TCNT2 = 0 ;
}
}
Si (btnState2)
{
Si (TCNT2 > = 159)
{
PORTB ^ = (1 << PD6) ; SPK Flip Pin
TCNT2 = 0 ;
}
}
Si (btnState3)
{
Si (TCNT2 > = 142)
{
PORTB ^ = (1 << PD6) ; SPK Flip Pin
TCNT2 = 0 ;
}
}
Si (btnState4)
{
Si (TCNT2 > = 126)
{
PORTB ^ = (1 << PD6) ; SPK Flip Pin
TCNT2 = 0 ;
}
}
Si (btnState5)
{
Si (TCNT2 > = 119)
{
PORTB ^ = (1 << PD6) ; SPK Flip Pin
TCNT2 = 0 ;
}
}
Si (btnState6)
{
Si (TCNT2 > = 106)
{
PORTB ^ = (1 << PD6) ; SPK Flip Pin
TCNT2 = 0 ;
}
}
}
}

}}}
D'où viennent les emplacements ? Il fallait un peu de mathématiques. L’horloge sur l’atmega 168 fonctionne à 1MHz. C’est beaucoup trop rapide pour l’audio, alors il faut utiliser le Prédiviseur 8. Puisque nous avons besoin faire basculer l’axe de sortie haut puis bas afin de faire 1 cycle, nous devons diviser la réponse par 2 afin d’arriver à la bonne hauteur. La formule ressemble à ceci,
Terrain de mettre dans le code = (1000000/8) / (cible fréquence * 2)
Pour A(440), il s’agirait 125000/880 = 142.045 ou 142 pour nos besoins, étant donné que la valeur doit être un entier.
Les fréquences de cible de notes se trouvent à peu près n’importe où en ligne et sont généralement les mêmes.

Je veux encore ajouter une instruction case au lieu d’utiliser un tas d’Ifs et PWM permet de meilleur contrôle le volume et hauteur de l’enceinte, mais pour l’instant, cela fonctionne.

Articles Liés

Construire un générateur de tonalité--améliorer votre Snap Circuits en ajoutant un Timer 555 IC

Construire un générateur de tonalité--améliorer votre Snap Circuits en ajoutant un Timer 555 IC

dans cet article, vous apprendrez comment améliorer votre collection de blocs de Snap Circuits en ajoutant un Timer 555 IC. Vous apprendrez les fonctions, les broches de la puce 555. Vous apprendrez que lorsque le 555 est en mode astable, la sortie d
Tic Tac générateur de tonalité... et d’autres choses...

Tic Tac générateur de tonalité... et d’autres choses...

Voici votre prochain projet, appelé le « Tic Tac Tone Generator - and Other Things ». Il a appelé cela, parce que c'est principalement de nature différente de l'oscillateur. Ce n'est pas comme le circuit de Test Case MVB précédent : elle utilise 2 tr
Créez vous-même ATMEGA128 un générateur de tonalité simple

Créez vous-même ATMEGA128 un générateur de tonalité simple

Bonjour les gars,Dans ce projet, je veux partager mon expérience sur ATMEGA128 générant un ton simple,J'ai créé 8 tons (1 octave)Let's get started !Étape 1: Préparer les composants Nous allons préparer les composants,Nous avons besoin :1. le Présiden
Générateur de tonalité Morse (balise CW de faible puissance)

Générateur de tonalité Morse (balise CW de faible puissance)

ici, je décris comment construire un générateur de sons simples de faible puissance que j'utilise pour apprendre le code morse de mon fils.En nettoyant ma cave, j'ai trouvé mon vieux manipulateur morse de la Wehrmacht. Ce manipulateur a été utilisé p
Générateur de tonalité de l’Arduino avec affichage LED

Générateur de tonalité de l’Arduino avec affichage LED

Voici un simple Arduino sorcière de projet peut être faite avec cet affichage LED DIY et quelques autres pièces bon marchés.Étape 1: Pièces et outilsPièces nécessaires pour ce projet :(1) Arduino nano(2) les boutons de commande tactiles(2) des résist
Générateur de tonalité Arduino

Générateur de tonalité Arduino

La meilleure façon d'en savoir plus sur l'Arduino est de jouer avec les exemples de base de l'IDE Arduino. Dans ce instructable je vais vous montrer comment générer une mélodie d'un Arduino. L'Arduino pourrait ne pas avoir suffisamment de ram pour éc
Capteur de pli de tissu

Capteur de pli de tissu

à l'aide de fil conducteur, Velostat et néoprène, coudre votre propre capteur de pliage du tissu.Ce capteur coude réagit effectivement (diminution de la résistance) à pression, ne sont pas spécifiquement à plier. Mais parce qu'il est pris en sandwich
Capteur de pression de tissu conducteur

Capteur de pression de tissu conducteur

coudre tissu conducteur et plastique antistatique pour faire votre propre tissu capteur de pression !Ces instructions étape par étape vous montrera comment faire votre propre tissu capteur de pression. Il mentionne deux variantes, selon si vous utili
Manette analogique de tissu

Manette analogique de tissu

comment faire un périphérique d'entrée « analogique » de tissu et quelques autres matériaux nécessaires.« Analogique » dans la parenthèse parce que, même si elle est composée de 4 entrées analogiques, la transition uniquement analogique entre les dir
LED Cube 8 x 8 x 8

LED Cube 8 x 8 x 8

affichage 3-dimensionnelle de créer votre propre 8 x 8 x 8 LED Cube !Nous croyons que ce Instructable est le plus complet guide étape par étape pour construire un 8 x 8 x 8 que LED Cube jamais publié sur l'intertubes. Il vous apprendra tout de princi
Bracelet capteur d’inclinaison

Bracelet capteur d’inclinaison

un bracelet orné de six pétales de tissu conducteur et un fil de perles avec une bille de métal à la fin, en fait pour une simple détection d'inclinaison de six points. Il est également conçu pour que le talon métal va faire contact avec deux pétales
Des doigts sensibles

Des doigts sensibles

Un gant avec des capteurs de pression tout-tissu sur le bout de chaque doigt. L'idée est venue de quelqu'un d'autre qui voulaient utiliser cela comme professeur de piano avec les enfants de visualiser la différence entre « p » piano (doux) et forte d
Tricoter le Touchpad

Tricoter le Touchpad

cette touchpad tricot est possible en raison des propriétés des gants antistatiques, qui sont vendus pour la manipulation des composants électroniques sensibles. Le gant est en tricot de fibres extensibles qui comprennent également le fil résistif (f
Matrice de capteur de pression

Matrice de capteur de pression

quatre capteurs de pression séparé non seulement donnent vos commentaires sur où je suis urgent, mais aussi comment dur. La sensibilité est idéale pour la pression du doigt. Bien qu'il n'est pas linéaire, il est stable. Très sensible à la lumière tac