Luna Mod Looper grundläggande Stamp2 Version (4 / 7 steg)
Steg 4: Vet din mcu gränser och ansluta rekord tryckknappen
Varning!: innan du går längre du behöver veta att alla mcu har begränsningar på hur mycket ström de kan leverera och sjunka. Nuvarande är hur mycket ström avslutar den PIN-kod och det går i vissa externa enheter. Diskbänken nuvarande innebär att strömmen flödar in i stiftet och genom mcu att marken (Vss i detta fall). Gränserna för BS2 är följande (dubbelkolla de "grundläggande stämpel Syntax och Reference Manual," sidan 14, tabell 1.2): varje stift kan sjunka 25 mA och källa 20 mA. Varje grupp av pins, P0 - P7 och P8 - P15 bör inte kollektivt sjunka mer än 50 mA eller källa 40 mA om använder en extern 5 V regulator. Dessa siffror är diskbänken 50 mA eller källa 40 mA för alla I/O stift om du använder den inbyggda 5 V regulatorn.
OM DU ÖVERSKRIDER DESSA GRÄNSER KOMMER DU ATT SKADA DIN MCU! Ibland du förlorar bara en i/o pin men värre saker kan hända. Detta innebär att du behöver använda din Ohms lag, V = IR.
Du har förmodligen märkt på denna punkt som rekord knappar och tempo potten är på P15 och P14, respektive och resten av i/o-stiften. Detta beror på informationen i varningen ovan.
På med showen:
Knappen Spela in måste anslutas. Anslut en jumper tråd från P15 till PB0 i avsnittet tryckknapp om du använder en PDB. Om inte Anslut sedan en NOPB som visar i schematiskt nedan. Detta råkar också vara det sätt som det preliminära budgetförslaget har dess tryckknappar wired utom allt kan anslutas på det preliminära budgetförslaget, inte bara P15.
Titta på bilden för att se:
Du kan se den gröna ledningen som den bildar en båge över den Lödfritt set av brödunderläggen från P15 till PB0 på det preliminära budgetförslaget.
För att få tryckknapp till verk du kommer sannolikt använda kommandot knappen. Min instruktion ser ut som följande:
KNAPPEN recBtn, 0, 255, 0, btnData, 1, registrera
Kontrollera den "grundläggande stämpel Syntax och Reference Manual" för en grundlig förklaring. Här, recBtn är den PIN-kod #, 0 är Downstate, 255 är förseningen, 0 är hastigheten, btnData är arbetsytan, 1 är TargetSate och post är adressen. RecBtn är 15 för P15 och 255 används eftersom jag inte vill ha en auto-repeat men fortfarande vill ha debounce. Ränta är 0 eftersom jag inte vill ha någon mätning av cykler. Jag gav btnData bara ett Byte av variabel utrymme eftersom siffrorna bör vara låg ändå. TargetState är 1 eftersom jag vill att knappen ska utlösa BS2 in inspelningsläge när det trycks fortfarande. Ställer in det till 0 skulle orsaka att det ska gå att spela in när den släpptes. Adressen är rekord. Posten är en subrutin som utlöses när knappen trycks.
Här är en utmärkt plats att öva programmeringstekniker. Du behöver inte skriva alla färdiga koden på en gång här. Din post subrutin kan vara bara en eller två DEBUG uttalanden. Därigenom kommer att berätta att din knapp instruktioner arbetat och skickade BS2 i inspelningsläge. Om du försöker skriva all kod på en gång så är du ofta frustrerad på grund av de problem som måste sorteras först.
Item en) skriva bara ett felsökningsuttryck såsom:
FELSÖKNINGSLÄGE "du är i posten"
Punkt b) Lägg till en andra och kanske en tredje uttalande enligt följande:
FELSÖKA? potFreqVal
FELSÖKA? potTempoVal
Punkt c) när du ser rätt ord att dyka upp i din DEBUG Terminal du vet att du är i insp-läget men du vet också att programmet använder variabler från två krukor du har för frekvens och tempo. Nu kan du arbeta på att få resten av inspelningsläget att arbeta, att se till att frekvenserna placeras i matrisen.
För detta steg beslutade jag att använda en serie om ELSEIF uttryck. Den svåra biten är att få ett bra utbud ställer in och göra säker du booleska uttryck har rätt nummer för varje not. Jag beslutade att använda bara en komparator för varje uttryck i stället för två.
En komparator: <>, som står för mindre än och större än respektive
Två kontrollapparater: < =, > = som står för mindre eller lika till och större än eller lika med respektive
Jag använde en kontrollapparat som jag tänkte att det skulle ta lite längre tid att utvärdera uttrycket med två kontrollapparater i stället för en komparator.
Observera att i den slutliga versionen av programmet förutsatt att det finns tre spänner av anteckningar som finns i tre subrutiner. Du måste nödvändiga koden efter om ELSEIF uttalanden att ta sorterade frekvensvärde och spela det så kan du höra de anteckningar som du väljer genom att vrida på potentiometern. Om du väntar med dessa satser tvivlar jag post subrutinen fungerar som planerat. För det första två spänner av om ELSEIF uttalanden innehåller den sista ELSEIF uttalandet en instruktion att gå till nästa spänna av anteckningar med hjälp av kommandot GOSUB Subroutine_Name.
Observera att knappen anvisningen används i andra (av tre) tider här. Detta gör personen att trycka på knappen när som helst och har avfarten program inspelningsläge och växla till uppspelningsläge. Faktiskt, BS2 faktiskt kommer köra igenom alla sekventiella koden innan kommer på knappen anvisningen så du kan vänta kort innan ändringen sker.
Viktigt tips: Det finns några funktioner med Basic Stamp redaktör IDE att du bör bekanta dig med hjälp av. Två är mycket användbara Syntax Check och minne karta. Jag säger det här eftersom när jag skrev om ELSEIF kapslade uttalanden jag fick reda på att du bara kan ha 16 ELSEIF uttalanden Förutom öppnandet om-satsen. Med hjälp av minnet kartan tog min uppmärksamhet. Den Syntax Check kommer att göra samma sak. Om du har mer då visar det när du använder dessa funktioner. Minne karta oss bra att ta reda på hur mycket varierande utrymme du har kvar. Du kan också vet hur mycket mer utrymme du har att skriva kod. Syntaxkontrollen är bra att köra innan du försöker köra ditt program. Det kommer att låta dig veta mycket snabbt om någon syntax är i ordning utan den extra tid försökande till tillträde mcu. När du spenderar tillräckligt tid programmering mcu kommer du att uppskatta båda funktionerna.