Étape 4: Connaissez vos limites de mcu et connecter le bouton record
ATTENTION!: avant d’aller plus loin il faut savoir que tous les mcu est limités par combien courant qu’ils peuvent fournir et évier. Courant d’alimentation est combien courant quitte l’axe et il va dans certains appareils externes. Récepteur courant signifie que le courant passe dans l’axe et à travers le mcu à la terre (Vss dans ce cas). Les limites de la BS2 sont comme suit (Vérifiez le « Basic Stamp syntaxe et manuel de référence » page 14, tableau 1.2): chaque broche peut sombrer 25 et source de 20 mA. Chaque groupe de pins, P0 - P7 et P8 - P15 doivent collectivement s’y enfonce pas plus de 50 mA ou mA source 40 si vous utilisez un régulateur externe de V 5. Ces chiffres sont évier 50 mA ou source 40 mA pour toutes les broches e/s si vous utilisez le régulateur de V 5 à bord.
SI VOUS DÉPASSEZ CES LIMITES, VOUS ENDOMMAGEREZ VOTRE MCU!!! Parfois vous perdez juste une tige de I/O, mais le pires choses pourraient arriver. Cela signifie que vous devrez utiliser votre loi d’Ohm, V = IR.
Vous avez sans doute remarqué à ce point que les boutons d’enregistrement et le pot de tempo sont sur P15 et P14, respectivement et le reste des broches d’e/s. Cela est dû à l’information fournie dans l’avertissement ci-dessus.
Sur le spectacle :
Le bouton d’enregistrement doit être connecté. Connectez un fil de pontage de P15 à PB0 dans la section bouton si vous utilisez un fichier PDB. Si ce n’est pas le cas, puis connectez un NOPB comme le montre le schéma ci-dessous. Cela arrive aussi d’être comme l’APB a ses touches filaires sauf n’importe quoi peut être raccordé sur l’avant-projet de budget, pas seulement P15.
Regardez la photo pour voir :
Vous pouvez voir le fil vert car elle forme un arc à travers le montage d’essai sans soudure de P15 à PB0 sur l’APB.
Afin d’obtenir le bouton-poussoir fonctionne, vous utiliserez probablement la commande de bouton. Mon instruction ressemble à ce qui suit :
BOUTON recBtn, 0, 255, 0, btnData, 1, enregistrer
Vérifier le « Basic Stamp syntaxe et Reference Manual » pour une explication approfondie. Ici, recBtn est le code pin #, 0 est le Downstate, 255 est le retard, 0 est le taux, btnData est l’espace de travail, 1 TargetSate, et enregistrement correspond à l’adresse. Le recBtn est de 15 pour P15 et 255 est utilisé parce que je ne veux pas d’une répétition automatique mais veulent encore la debounce. Taux est de 0 car je ne veux pas tout indicateur de cycles. J’ai donné btnData seulement un octet d’espace variable, car les numéros doivent être faibles en tout cas. Le TargetState est 1 parce que je veux le bouton pour déclencher la BS2 en mode d’enregistrement quand il est toujours pressé. Mise à 0 forcerait ce dernier aller au dossier quand il est sorti. L’adresse est Record. Record est la sous-routine qui est déclenchée lorsque le bouton est enfoncé.
Voici un premier spot pour la pratique des techniques de programmation. Vous n’avez pas à écrire tout le code fini à la fois ici. Votre sous-routine Record pourrait être juste une ou deux instructions de débogage. Ce faisant vous dira que votre instruction bouton travaillé et envoyé la BS2 en mode enregistrement. Si vous essayez d’écrire tout le code à la fois, alors vous êtes souvent frustré à cause des problèmes qui doivent être triés d’abord.
Point un) écrire une instruction de débogage telles que :
DEBUG « Vous sont en Mode d’enregistrement »
Le point b) ajouter un deuxième et peut-être une troisième déclaration comme suit :
DÉBOGUER ? potFreqVal
DÉBOGUER ? potTempoVal
Le point c) quand vous voyez les mots apparaissent dans votre Terminal de débogage, vous savez que vous êtes en mode d’enregistrement mais vous savez aussi que le programme utilise les variables des deux pots, vous avez pour la fréquence et le tempo. Maintenant vous pouvez travailler sur l’obtention du reste du mode d’enregistrement pour travailler, en s’assurant que les fréquences placés dans votre tableau.
Pour cette étape, j’ai décidé d’utiliser une série d’instructions IF ELSEIF. La partie la plus délicate est d’obtenir une bonne gamme mis en place et de faire assurer vous expressions booléennes portent les numéros de droite pour chaque note. J’ai décidé d’utiliser juste une comparaison pour chaque expression au lieu d’utiliser deux.
Un comparateur : <>, qui représentent moins supérieurs et inférieurs respectivement
Deux comparateurs : < =, > = qui stand pour moins ou égal à et supérieur ou égal à respectivement
J’ai utilisé l’un comparateur que j’ai pensé que cela prendrait un peu plus de temps pour évaluer l’expression avec deux comparateurs par opposition à un comparateur.
Notez que dans la version finale du programme autant qu’il y a trois gammes de notes contenues dans trois sous-programmes. Vous aurez besoin du code nécessaire après les déclarations de IF ELSEIF pour prendre la valeur de fréquence triée et lisez-le afin que vous pouvez entendre les notes que vous sélectionnez en tournant le potentiomètre. Si vous attendez d’inclure ces déclarations je doute que la sous-routine enregistrement fonctionne comme prévu. Pour les deux premières tranches d’instructions IF ELSEIF, la dernière instruction ELSEIF contienne une instruction d’aller à la plage suivante des notes en utilisant la commande GOSUB Subroutine_Name.
Notez que l’instruction de bouton est utilisée dans la seconde (de trois) fois ici. Cela permet à la personne à appuyer sur le bouton à tout moment et a la sortie du programme le mode d’enregistrement et le commutateur en mode de lecture. En fait, la BS2 effectivement traversera tout le code séquentiel avant de venir sur l’ordre de bouton, alors vous devrez attendre brièvement avant que le changement se produit.
Conseil IMPORTANT : Il y a quelques fonctions disponibles avec l’IDE éditeur de timbre de base que vous devriez vous familiariser avec l’utilisation. Deux exemples très utiles sont la vérification de syntaxe et de la carte mémoire. Je dis cela ici, parce que quand j’ai écrit l’IF imbriqué instruction ElseIf, que j’ai découvert que vous ne pouvez avoir 16 instructions ELSEIF en plus de l’ouverture d’instruction IF. À l’aide de la carte mémoire cela a porté à mon attention. La syntaxe de Check fera la même chose. Si vous avez plus alors il sera affiché lorsque vous utilisez ces fonctions. Mémoire carte nous est utile pour savoir combien il vous reste variable d’espace. Il vous permet également de savoir combien d’espace vous devez écrire du code. Vérification de la syntaxe est bonne à exécuter avant que vous essayez d’exécuter votre programme. Il vous permettra de savoir très rapidement si toute syntaxe est hors d’usage sans le temps supplémentaire passé tente d’accéder le mcu. Une fois que vous dépensez suffisamment temps programmation mcu, vous apprécierez les deux fonctions.