Comment ajouter des fonctionnalités de bouton au projet de Peter Knight Auduino (3 / 4 étapes)

Étape 3: Plus de boutons !

Quels sont les autres effets pouvez-vous ajouter ? J’ai essayé a ajouté une fonction de pause et une fonction de variation, en utilisant les opérateurs bit à bit de fausser le PWM_OUTPUT à l’aide si des déclarations en bas du code. J’ai eu des ennuis avec le langage C++ qui Auduino bibliothèque semble utiliser et quels opérateurs je pourrais faire fonctionner, mais il réussit à obtenir ces cours.

La fonction de pause, que j’ai ajouté aussi a certains bruit de fond que je pense à cause de la fonctionnalité de délai. Ne pouvait pas se débarrasser de lui, mais dans les impulsions courtes que vous ne remarquez pas, ce n'est que si vous appuyez sur le bouton pause pour en savoir plus, puis un moment et se produit uniquement lorsque les potentiomètres sont dans des positions extrêmes.

J’ai utilisé ces boutons :

http://www.Adafruit.com/Products/1010

Ils sont gros, coloré et amusant à la presse. Ils souder en PCB assez agréable.

À ce stade, j’ai soudé aussi vers le haut l’ensemble du projet d’un bouclier de proto pour le rendre plus robuste et compacte.

Voici le code de Peter Knight du blog du RCArduino avec le bouton de pause et le bouton « dim » que j’ai ajouté ce genre de distorsion-y abaisse le volume lorsque vous appuyez sur. Il est un élément percussif cool à certaines fréquences. Le bouton pause est vraiment amusant de jouer avec, trop.

Auduino, la synthèse granulaire de Lo-Fi
//
par Peter Knight, Tinker.it, http://tinker.it
//
Aide : http://code.google.com/p/tinkerit/wiki/Auduino
Plus d’aide : http://groups.google.com/group/auduino
//
Analogique à 0: 1 terrain de Grain
Analogique dans 1: décomposition de Grain 2
Analogique à 2: 1 désintégration du Grain
Analogique dans 3: terrain de Grain 2
Analogique 4: fréquence de répétition des céréales
//
3 numérique : Audio (numérique 11 sur ATmega8)
//
Changelog :
19 novembre 2008: ajout du support pour les planches de l’ATMEGA8.
21 mars 2009 : ajout du support pour les planches de l’ATmega328
7 avril 2009: le vecteur d’interruption fixe pour les planches de l’ATmega328
8 avril 2009: ajout du support pour cartes ATmega1280 (Arduino Mega)

#include
#include

uint16_t syncPhaseAcc ;
syncPhaseInc uint16_t volatils ;
uint16_t grainPhaseAcc ;
grainPhaseInc uint16_t volatils ;
uint16_t grainAmp ;
grainDecay uint8_t volatils ;
uint16_t grain2PhaseAcc ;
grain2PhaseInc uint16_t volatils ;
uint16_t grain2Amp ;
grain2Decay uint8_t volatils ;

Carte des canaux analogiques
#define SYNC_CONTROL (4)
#define GRAIN_FREQ_CONTROL (0)
#define GRAIN_DECAY_CONTROL (2)
#define GRAIN2_FREQ_CONTROL (3)
#define GRAIN2_DECAY_CONTROL (1)

DB
#define SMOOTH_PIN 8

Ce changement sera exige également réécriture audioOn()

#if defined(__AVR_ATmega8__)
//
Sur les anciennes commissions ATmega8.
Sortie est sur la broche 11
//
#define LED_PIN 13
#define LED_PORT PORTB
#define LED_BIT 5
#define PWM_PIN 11
#define PWM_VALUE OCR2
#define PWM_INTERRUPT TIMER2_OVF_vect

#elif defined(__AVR_ATmega1280__)
//
Sur l’Arduino Mega
Sortie est sur la broche 3
//
#define LED_PIN 13
#define LED_PORT PORTB
#define LED_BIT 7
#define PWM_PIN 3
#define PWM_VALUE OCR3C
#define PWM_INTERRUPT TIMER3_OVF_vect
#else
//
Pour les planches de ATmega168 et ATmega328 modernes
Sortie est sur la broche 3
//
#define PWM_PIN 3
#define PWM_VALUE OCR2B
#define LED_PIN 13
#define LED_PORT PORTB
#define LED_BIT 5
#define PWM_INTERRUPT TIMER2_OVF_vect
#endif

Duane B
rcarduino.blogspot.com
15/11/2012
Retard de tampon de sonnerie très simple
Nous enregistrons la sortie dans ce tableau
et mélanger puis retour avec la sortie comme le tampon entoure
peuvent être allumés et éteints par un bouton sur DELAY_BUTTON
#define MAX_DELAY 1024
unsigned char sDelayBuffer [MAX_DELAY] ;
unsigned int nDelayCounter = 0 ;
unsigned char bDelay ;

#define DELAY_BUTTON 10

après effet de delay exemple fo, introduction variable unsigned et defingint he brochage pour l’effet de pause
unsigned char bSync ;
unsigned char bPause ;

#define PAUSE_BUTTON 12
#define SYNC_BUTTON 11

4,5,10

Cartographie logarithmique lisse
//
uint16_t antilogTable [] = {}
64830,64132,63441,62757,62081,61413,60751,60097,59449,58809,58176,57549,56929,56316,55709,55109,
54515,53928,53347,52773,52204,51642,51085,50535,49991,49452,48920,48393,47871,47356,46846,46341,
45842,45348,44859,44376,43898,43425,42958,42495,42037,41584,41136,40693,40255,39821,39392,38968,
38548,38133,37722,37316,36914,36516,36123,35734,35349,34968,34591,34219,33850,33486,33125,32768
};
uint16_t mapPhaseInc (entrée uint16_t) {}
Return (antilogTable [entrée & 0x3f]) >> (entrée >> 6) ;
}

A fait un pas de mappage chromatique
//
uint16_t midiTable [] = {}
17,18,19,20,22,23,24,26,27,29,31,32,34,36,38,41,43,46,48,51,54,58,61,65,69,73,
77,82,86,92,97,103,109,115,122,129,137,145,154,163,173,183,194,206,218,231,
244,259,274,291,308,326,346,366,388,411,435,461,489,518,549,581,616,652,691,
732,776,822,871,923,978,1036,1097,1163,1232,1305,1383,1465,1552,1644,1742,
1845,1955,2071,2195,2325,2463,2610,2765,2930,3104,3288,3484,3691,3910,4143,
4389,4650,4927,5220,5530,5859,6207,6577,6968,7382,7821,8286,8779,9301,9854,
10440,11060,11718,12415,13153,13935,14764,15642,16572,17557,18601,19708,20879,
22121,23436,24830,26306
};
uint16_t mapMidi (entrée uint16_t) {}
retour (midiTable[(1023-input) >> 3]) ;
}

Gradin cartographie pentatonique
//
uint16_t pentatonicTable [54] = {}
0,19,22,26,29,32,38,43,51,58,65,77,86,103,115,129,154,173,206,231,259,308,346,
411,461,518,616,691,822,923,1036,1232,1383,1644,1845,2071,2463,2765,3288,
3691,4143,4927,5530,6577,7382,8286,9854,11060,13153,14764,16572,19708,22121,26306
};

uint16_t mapPentatonic (entrée uint16_t) {}
uint8_t valeur = (1023-entrée) / (1024/53) ;
retour (pentatonicTable[value]) ;
}

void audioOn() {}
#if defined(__AVR_ATmega8__)
ATmega8 a différents registres
TCCR2 = _BV(WGM20) | _BV(COM21) | _BV(CS20) ;
TIMSK = _BV(TOIE2) ;
#elif defined(__AVR_ATmega1280__)
TCCR3A = _BV(COM3C1) | _BV(WGM30) ;
TCCR3B = _BV(CS30) ;
TIMSK3 = _BV(TOIE3) ;
#else
Mettre en place la PWM à 31,25 kHz, phase précise
TCCR2A = _BV(COM2B1) | _BV(WGM20) ;
TCCR2B = _BV(CS20) ;
TIMSK2 = _BV(TOIE2) ;
#endif
}

void setup() {}
pinMode(PWM_PIN,OUTPUT) ;
audioOn() ;
pinMode(LED_PIN,OUTPUT) ;

pinMode(DELAY_BUTTON,INPUT) ;

définition de mes boutons comme entrées, l’exemple suivant l’effet delay

pinMode (entrée, SYNC_BUTTON) ;
pinMode (entrée, PAUSE_BUTTON) ;

définir le mode de la broche et allumez le tirer vers le haut alors que par défaut le mode de
est pentatonique, tirer la goupille faible pour passer en douceur
pinMode(SMOOTH_PIN,INPUT) ;
digitalWrite(SMOOTH_PIN,HIGH) ;
}

void loop() {}
La boucle est assez simple - il juste met à jour les paramètres pour les oscillateurs.
//
Évitez d’utiliser toutes les fonctions qui utilisent des interruptions ou désactiver les interruptions.
Qu’ils engendreront clics et fait ses besoins dans l’audio.

par défaut, tons gradins pentatoniques, basse fréquence lisse sans tons distincts de la goupille
syncPhaseInc = mapPhaseInc(analogRead(SYNC_CONTROL)) / 4 ;

syncPhaseInc = mapPentatonic(analogRead(SYNC_CONTROL)) ;

mise à jour 29/01/2013
tirer la goupille DELAY_BUTTON élevée du retard, faible pour aucun retard
Utilisez soit un pull up/déroulant : résistance
ou une traction vers le haut de résistance avec un interrupteur à bascule entre la broche et le sol
bDelay = digitalRead(DELAY_BUTTON) ;
bSync = digitalRead(SYNC_BUTTON) ;
bPause = digitalRead(PAUSE_BUTTON) ;

A fait un pas de mappage à notes MIDI: Db, D, Eb, C, E, F....
syncPhaseInc = mapMidi(analogRead(SYNC_CONTROL)) ;

A fait un pas de mappage pentatonique: D, E, G, A, B

grainPhaseInc = mapPhaseInc(analogRead(GRAIN_FREQ_CONTROL)) / 2 ;
grainDecay = analogRead(GRAIN_DECAY_CONTROL) / 8 ;
grain2PhaseInc = mapPhaseInc(analogRead(GRAIN2_FREQ_CONTROL)) / 2 ;
grain2Decay = analogRead(GRAIN2_DECAY_CONTROL) / 4 ;
}

SIGNAL(PWM_INTERRUPT)
{
valeur d’uint8_t ;
uint16_t de sortie ;

syncPhaseAcc += syncPhaseInc ;
Si (syncPhaseAcc < syncPhaseInc) {}
Temps de commencer le prochain grain
grainPhaseAcc = 0 ;
grainAmp = 0x7fff ;
grain2PhaseAcc = 0 ;
grain2Amp = 0x7fff ;
LED_PORT ^ = 1 << LED_BIT ; Plus rapide que l’utilisation de digitalWrite
}

Incrémenter la phase des oscillateurs grain
grainPhaseAcc += grainPhaseInc ;
grain2PhaseAcc += grain2PhaseInc ;

Transformer une onde triangulaire de phase
valeur = (grainPhaseAcc >> 7) & 0xff ;
Si (grainPhaseAcc & 0 x 8000) valeur = ~ valeur ;
Multipliez par l’amplitude du courant grain pour obtenir l’échantillon
sortie = valeur * (grainAmp >> 8) ;

Répétez pour le second grain
valeur = (grain2PhaseAcc >> 7) & 0xff ;
Si (grain2PhaseAcc & 0 x 8000) valeur = ~ valeur ;
sortie valeur += * (grain2Amp >> 8) ;

Faire le grain amplitudes carie causée par un facteur de chaque échantillon (décroissance exponentielle)
grainAmp-= (grainAmp >> 8) * grainDecay ;
grain2Amp-= (grain2Amp >> 8) * grain2Decay ;

Échelle de sortie à la plage disponible, détourage si nécessaire
sortie >> = 9 ;
Si sortie (sortie > 255) = 255 ;

Duane B
rcarduino.blogspot.com
15/11/2012
Ajouter un bouton pour affecter bDelay true ou false pour activer le retard et désactiver

if(bDelay)
{
Sortie de PWM (c’est plus rapide que l’utilisation d’analogWrite)
Ici, nous ajoutons le tampon de retard à la valeur de sortie, ce qui produit
un effet d’écho subtil, le tampon de retard est efficacement rejouant le son de
1/8e de seconde il y a.

LED_PORT | = 1 << LED_BIT ; Plus rapide que l’utilisation de digitalWrite
PWM_VALUE = (sortie + (sDelayBuffer[nDelayCounter])) >> 1 ;

Ajouter la nouvelle sortie au tampon, donc nous pouvons l’utiliser lorsque la mémoire tampon entoure ensuite
sDelayBuffer [nDelayCounter] = PWM_VALUE ;
nDelayCounter ++ ;
if(nDelayCounter == MAX_DELAY)
{
nDelayCounter = 0 ;
}
}
d’autre
{
LED_PORT & = ~ (1 << LED_BIT) ; Plus rapide que l’utilisation de digitalWrite

PWM_VALUE = output ;
}

Kyle
prenant l’exemple d’en haut et en essayant d’ajouter une pause percussif et fonctionnalité dim bouton 11 et 12
ça marche et mais est difficile à obtenir le retard et la pause de travailler ensemble, parfois quand il est interrompu, il y a bruit de fond maintenant

Si (bSync)
{
en laissant ce vide, l’effet retard est permis de travailler, au lieu d’être écrasé par ce que j’avais ici

}
d’autre
{
++ apporte un effet de gradation
LED_PORT | = 1 << LED_BIT ; Plus rapide que l’utilisation de digitalWrite
PWM_VALUE = (sortie ++) >> 1 ;

}

Ajout d’un autre effet qui assombrit un peu le son

Si (bPause)
{
}
d’autre
{
décalage de bits la balance pour obtenir un bouton « pause » a bien fonctionné !
LED_PORT | = 1 << LED_BIT ; Plus rapide que l’utilisation de digitalWrite
PWM_VALUE = (sortie << 50) >> 1 ;

}
}

Articles Liés

Ajouter des fonctionnalités à une usine CnC de gravure au Laser

Ajouter des fonctionnalités à une usine CnC de gravure au Laser

Cet Instructable va vous montrer comment vous pouvez facilement ajouter des fonctionnalités à votre usine existante de CnC de gravure au laser. Après avoir suivi ce Instructable, vous aurez accès à un gravure laser ainsi qu'une broche de fraisage tra
Ajouter des fonctionnalités et de recharger votre appareil photo « Jetable »

Ajouter des fonctionnalités et de recharger votre appareil photo « Jetable »

avez-vous déjà senti coupable lorsque vous utilisez un appareil photo « jetable » ?  Eh bien pas plus !  Dans ce Instructable, nous allons ajouter des fonctionnalités à votre appareil photo jetable en ajoutant :1. une capacité à prendre des expositio
Comment ajouter des pop ups et pop unders dans votre site Web

Comment ajouter des pop ups et pop unders dans votre site Web

apprendre comment ajouter des pop ups et pop unders de popads.net dans votre site Web. Toutes les étapes mentionnées dans la vidéo sont importants que sans les codes ne peut pas être installé correctement.
Comment ajouter des bras oscillant bobine se monte sur une Honda F4i

Comment ajouter des bras oscillant bobine se monte sur une Honda F4i

Voici les instructions pour savoir comment ajouter des trous de fixation de bobine bras oscillant à un bras oscillant Honda F4i.  Bras oscillant bobines fournissent une méthode plus sûre et beaucoup plus pratique de soulever l'arrière de votre moto p
Comment ajouter des boutons de médias sociaux à votre Blog Blogger (Blogspot)

Comment ajouter des boutons de médias sociaux à votre Blog Blogger (Blogspot)

Je suis passé par le sang, sueur, larmes et beaucoup d'idées différentes pourenfin trouver la bonne façon d'ajouter des boutons de médias sociaux à mon blog. Étant donné que c'était si difficile pour moi, j'ai décidé de faire un tutoriel pour vous dé
Comment ajouter des Extensions Chrome

Comment ajouter des Extensions Chrome

Pensez Chrome extensions comme plug-ins, pour aider à ajouter des meilleures fonctionnalités à une page. Si vous avez déjà vu quelqu'un qui avait une extension Chrome, vous avez probablement souhaité il vous-même.Voici comment faire pour Télécharger
Comment ajouter des sonneries personnalisées à une sonnette sans fil

Comment ajouter des sonneries personnalisées à une sonnette sans fil

La plupart des sonnettes juste faire un ton générique simple. Mais j'ai pensé que ce serait amusant pour modifier une sonnette de la porte pour qu'elle ait une sonnerie personnalisable. De cette façon, vous pouvez définir pour jouer la musique ou les
Comment ajouter des nervures d’un manchon... Nouveau vêtement ou vieux

Comment ajouter des nervures d’un manchon... Nouveau vêtement ou vieux

Si vous faites un nouveau vêtement (chemise, veste, robe ou pantalon même) ou si je veux juste ajouter un manchon cannelé à un vêtement vous possédez déjà. Cela vous montrera comment obtenir des résultats de la recherche faciles et professionnelles.D
Comment ajouter des LEDs sewable à oreilles de lapin de Pâques

Comment ajouter des LEDs sewable à oreilles de lapin de Pâques

ajouter certains clignotant LED pour un ensemble des oreilles de lapin pour créer un amusement de Pâques du projet (voir Image 1).Un porte-cellule miniature est juste la bonne taille pour être caché sous le serre-tête avec un petit interrupteur qui v
Comment ajouter des jeux à LG-VX9900 (env) (envy) téléphone portable

Comment ajouter des jeux à LG-VX9900 (env) (envy) téléphone portable

je vais vous montrer étape par étape comment ajouter plusieurs jeux .swf sur votre téléphone d'enV LG VX9900.Étape 1: Ce que vous devez Voici une liste de choses dont vous avez besoin. Il ne devrait pas vous coûter quoi que ce soit en supposant que v
Comment ajouter des flux RSS de votre Blog à Hootsuite

Comment ajouter des flux RSS de votre Blog à Hootsuite

Blogging est plus qu'un simple écrit et en cliquant sur publier. Vous écrivez un message, ajouter une image, appuyez sur publier et puis vous avez à sortir et à promouvoir le contenu que vous avez écrit juste !C'est fastidieux mais Hootsuite peut aid
Comment ajouter des amis sur Facebook

Comment ajouter des amis sur Facebook

Étape 1: Étape 1 Connectez-vous à Facebook.Dirigez-vous vers la page « My Friends ». Vous verrez une liste de vos amis actuels avec quelques détails rapides à leur sujet.Cliquez sur l'onglet « Friend Finder » ou sur le lien « Rechercher votre carnet
YouTube : Comment ajouter des liens personnalisés et sociales

YouTube : Comment ajouter des liens personnalisés et sociales

Youtube : Custom et liens sociaux dans le canal du Soutien de l'ordinateur quantique sur Vimeo.Comment faire pour ajouter des liens personnalisés et sociales dans la chaîne youtube. Voir la vidéo et faites-le vous-même. 
Comment ajouter des filtres et lentilles à Canon SX100is

Comment ajouter des filtres et lentilles à Canon SX100is

j'ai acheté un Canon SX100is une couple d'années et toujours voulu ajouter des filtres et lentilles à elle, comme vous faites sur des appareils plus coûteux.Il y a un mois j'ai trébuché sur ce instructable et a décidé de faire quelque chose de simila