Att göra din egen Metronome (7 / 8 steg)
Steg 7: Koden
Som ni kan se precis under detta steg, finns det en textfil i koden används för att köra metronomen. Jag kommer inte gå någon detalj här på hur koden fungerar eller var inställd, men jag kommer att kortfattat förklara var några av matten kom ifrån för ändra tempot eftersom det är utan tvekan ett av de viktigaste delarna som gör detta går runt en metronom.
Minns att servo arm flyttar en högsta hastighet av 60 grader för varje 0.1 sekunder. Detta är likvärdigt med 6 grader för varje 10 millisekunder och samma som 200 slag per minut. Vi ville (godtyckligt) vår nedre gräns vara på 50 bpm som är 1/4 av 200 slag per minut. Eftersom 6 grader / 10 millisekunder är vår högsta hastighet, detta innebär att vår miniminivå måste vara 1/4 av max hastighet eller 1,5 grader / 10 millisekunder.
Vår spännvidd mellan våra övre och nedre gränser är alltså endast 4,5 grader. Vi vill att justera i detta intervall genom potentiometern. Analog läsning av potentiometer utdata kan variera från 0 (i huvudsak ingen ström som passerar genom potentiometern) och 1023 (den maximala mängden ström som passerar genom potentiometern.
Så, vad vi vill göra är att skapa en linjär ekvation av formen y = mx + b för att räkna ut hur mycket av en vinkel förändring servo bör göra baserat på hur mycket ström flyter genom potentiometern. "y" blir vinkeln change, är "är lutningen eller hur mycket påverkar potentiometern har på den vinkel, 'x' är värdet av potentiometern, och"b"är y-axeln eller en typ av korrektionsfaktorn för vinkel ändringen.
Vi kan få våra lutning genom att dividera spännvidd av vinkel förändringen, 4.5, med det högsta värde som potentiometern kan ha, 1023. Detta får oss "scalar" värdet du ser i koden. Vi kan sedan multiplicera våra skalvärde med vad potentiometern är och lägga till våra korrektionsfaktor som är 1,5 grad lägre gräns. Detta berättar koncist hur mycket av en vinkel (eller tempo) förändring som servo bör göra utifrån var potentiometern är placerad.