Ski Buddy: De vacht die leert je om te skiën. (4 / 6 stap)

Stap 4: De Code

U bent ofwel twee soorten mensen:

1. coders die eigenlijk willen begrijpen van de code.

2. mensen die niet een lik van codering en gewoon weten wilt het ruwe bronbestand.

Goed nieuws voor je, deze pagina omvat zowel!

Houd er rekening mee dat deze code onder de GPL v3 licentie.

Dus voor degenen onder u die wil gewoon het ruwe bronbestand, is het op Github:

** Maar voordat u klikt op die link, neem dan scroll naar beneden en lees de code settings.* *

Hele bestand

Voor degenen onder u die willen begrijpen van de code, Bedankt voor het waarderen van de tijd bracht ik het schrijven! Laten we springen rechts in:

We moeten eerst deze drie bibliotheken omvatten. Wat de laatste twee zijn in de war? That's alright. Ze verscheen in de eerdere naaien tutorial die ik heb gekoppeld. Als u al hoe u Arduino bibliotheken toevoegt aan de IDE weet, echter is hier de directe link naar de Github Repositories:

Adafruit Sensor bibliotheek

Adafruit LSM303 bibliotheek

Volgende die ik ga over de functies die ik gebruik in de code:

Flash flitsen beide LED's samen.

alternatieve wisselt beide LED's.

beide LED's knipperen knippert zodra.

toDegrees zet een paar x en y magnetische lezingen in een kop in graden.

procent neemt twee getallen en zorgt voor een procent met de eerste als 100% en de tweede als de breuk.


CODE-INSTELLINGEN ***

turnTime is de hoeveelheid tijd die u een inschatting maken dat het de gebruiker om te zetten in milliseconden zou duren. Bijvoorbeeld, kon u de turnTime om te helpen leren gekoppelde bochten vs. de beurt tijd verlengen om ruimte voor uitleg over ski vorm tussen de bochten te laten verminderen.

vertraging is in wezen hoeveel u wilt dat de gebruiker te vertragen aan het einde van elke beurt. Bijvoorbeeld, de waarde instelt op 2 wordt ervan uitgegaan dat de gebruiker zal hun snelheid alvorens halveren. Als u de gebruiker om te gaan in een geleidelijke pizza zijn onderwijs, wilt mogelijk verminderen de waarde laten we zeggen 1.3 zodat de gebruiker moet hun snelheid verminderen met 1/4 alvorens.

maxLearnCount is een aantal bochten die het apparaat gebruikt om te leren van de cursus voordat u begint te vertellen van de gebruiker waar skiën met de LED's. Dit is handig als een heuvel randen met verschillende lengtes heeft en u wilt krijgen van de gemiddelde tijd die nodig is om over te steken die verschillende lengtes.

skiPercent is het percentage van de tijd die u het apparaat wilt moet worden gewacht voordat het vertellen van de gebruiker te vertragen. Bijvoorbeeld, voorziet draaien het percentage van geleidelijker bochten, overwegende dat het tegenovergestelde meestal meer abrupt verandert.

readyTime is de algemene hoeveelheid tijd die u denk dat het duurt dat om in en uit de lift in milliseconden.

Nu laten we het initialiseren van de versnellingsmeter:

Daarna gaan we via de code van de verzoekinstellingen. Er zijn twee delen.

1. het initialiseren van de LED's op de jas.

2. Laad de versnellingsmeter. Als dit mislukt, alternatieve gewoon de LED's om te laten zien van mislukking.

Nu voor de verschillende variabelen.

learnCount wordt gebruikt om bij te houden hoeveel bochten het apparaat heeft doorgebracht leren, stoppen zodra het maximumbedrag van leren bochten set bovenstaande bereikt.

lastTurn wordt gebruikt om te herinneren de laatste keer een beurt is opgetreden, waardoor de meting van de tijd van een bocht.

lastDir wordt gebruikt om de algemene algemene richting van de gebruiker.

lastAcc wordt gebruikt om de algemene totale versnelling van de gebruiker.

dir is een matrix waarin de twee voorgestelde richtingen van elke beurt.

dirTime is de gemiddelde tijd die nodig is voor de gebruiker naar het Kruis de trail.

currentDir wordt gebruikt voor het bijhouden van welke richting de gebruiker zou moeten gaan in.

liftMode wordt gebruikt voor het opslaan van de batterij wanneer omhoog een lift of "magic carpet".

Tot slot, de loop code. Er zijn verschillende onderdelen:

1. Lees/gemiddelde gegevens van de versnellingsmeter.

De code neemt vijf lezingen en gemiddelden hen uit voor betere nauwkeurigheid.

Er zijn 3 belangrijke variabelen hier:

magAvg is de richting die de gebruiker wordt geconfronteerd in graden. Dit wordt gebruikt om te helpen de gebruiker.

accAvg is de totale versnelling van de x en y van de gebruiker. Dit wordt gebruikt om te ontdekken wanneer de gebruiker vertraagt.

liftAvg is de totale z versnelling van de gebruiker. Dit wordt gebruikt om op te sporen "lift" beweging (naar boven)

2. Controleer de gebruiker is skiën van de berg, heeft overschreden het bedrag van de maximale leren bochten (maxLearnCount) zoals hierboven als is skiën afdaling.

3. weten wat we weten, Controleer eerst als de gebruiker klaar is met het een draai gebaseerd op hoe lang het duurde om over te steken van de berg in het leerproces, vandaar de dirTime variabele. Overgebracht naar de andere turn en vertraging gebaseerd op hoe lang wij tijd tussen bochten vinden, vandaar de turnTime variabele.

4. als we niet het draaien fase nog niet, check bereikt als wij de gebruiker vertellen moeten te vertragen nadat een bepaalde tijd gebaseerd op wanneer de gebruiker starten moet, stoppen, vandaar de skiPercent variabele ingesteld boven. Als niet, dan moeten we de gebruiker leiden in welke richting moeten ze gaan. Aangezien niemand perfect is, geven we hen 10 graden vertraging aan beide zijden.

5. de enige optie links is over wat er gebeurt dat we de tijd om te vertellen van de gebruiker te vertragen hebben bereikt. We doen dit door afwisselend de lichten heen en weer totdat de gebruiker de draaien fase heeft bereikt.

6. deze instructie else is in betrekking tot dat als de gebruiker gaat bergaf, betekenis die gebruiker moet gaan omhoog op dit punt, dus we de gebruiker in de lift-modus zetten zodat we kunnen batterij besparen en vervolgens vertragen zodat de gebruiker tijd heeft om naar de lift/Indus-land.

7. deze instructie else is in betrekking tot als de gebruiker uit het verleden leren modus, wat betekent dat de gebruiker zijn moet in het leren van modus op dit punt. Dit is belangrijk omdat als de gebruiker neemt hun eerste leren schakelen, we willen niet te verknoeien de dirTime variabele, omdat uiteraard hun eerste trek over de trail duurt langer omdat zij snelheid winnen. Met dat controleren we eerst om ervoor te zorgen dat dit is niet de 1e opname van gegevens, omdat dat betekenen zou dat wij vorige gegevens voort te bouwen op zou niet moeten. Volgende we gemiddeld uit de richting van de gebruiker met hun verleden richting zo kunnen we een nauwkeurige lezing over waar we de gebruiker willen te gaan na het leren van de modus voor deze bijzondere wending.

8. om het detecteren van bochten, wachten we tot de gebruiker vergieten af snelheid tot het punt begint dat we willen dat ze, vandaar de vertraging variabele set hierboven. Toen we de richting die de gebruiker heeft al als 1 van de 2 voorgestelde richtingen die wij willen de gebruiker te gaan inch zal toewijzen (We hebben een voorgestelde richting om links te gaan over de berg en een andere voor naar rechts over). Wij moeten ook vastleggen van de hoeveelheid tijd die nodig was om de berg kruis en schrijven dat aan de variabele dirTime .

9. deze instructie else is in betrekking tot als dit de eerste registratie van de gegevens, wat betekent dat het is, zodat we gewoon de huidige gegevens aan hun respectieve variabelen toewijzen zodat op de next-lus kunnen we beginnen met het gemiddelde van de gegevens.

10. deze instructie else is in betrekking tot als de gebruiker in de lift-modus, wat betekent dat ze. Om op te slaan batterij, controleren we net voor de neerwaartse beweging slechts eenmaal per seconde en flash die de LED's om aan te geven aan de gebruiker we nog steeds in de lift-modus zijn.

11. door het uitstellen van 50 milliseconden, we niet overbelasting van de code en opslaan van de batterij, omdat zelfs bij het controleren van lezingen elke 50 milliseconden, dat komt neer op het lezen van gegevens 20 keer per seconde.

			
          

Gerelateerde Artikelen

Gegoten tin vacht slotjes

Gegoten tin vacht slotjes

ik beloofde mijn vriend een grote pimped-out nep bontjas, en hij houdt van zware metalen hardware.  Ik had het idee om te proberen het maken van enkele prachtige unieke gespen voor de jas.  Na wat testen besloten heb ik dat een gesp, met haar aparte
DIY Robe de vacht - met patroon!

DIY Robe de vacht - met patroon!

Dit is een vacht die is super comfortabel, gemakkelijk te dragen en easy(ish) te maken. Het patroon is gemodelleerd naar een gewaad, het omvat een Shawlkraag, patch zakken, het hoeft niet elke sluitingen en in plaats daarvan heeft een riem die je los
Verlicht vak

Verlicht vak

In dit instructable leert u hoe maak je een kleine houten doos met een lade dat oplicht wanneer u het opent.Stap 1: Gebouw de doos 1 Vinden een paar voeten van schroot 2 x 4 houten planken en knip twee 8 inch stukken en twee 6 inch stukken. Afbeeldin
Ruben's Tube brand Scythe Engineering Project / Prop

Ruben's Tube brand Scythe Engineering Project / Prop

Een Ruben's tube of gewoon brand buis is een set-up waarin vlammen hogere worden zullen of lagere volgens de frequentie van het geluid voor het invoeren van de buis. In wezen, de vlammen fungeren als een oscilloscoop voor het invoeren van de buis gel
Weerwolf DIY gooien kussen

Weerwolf DIY gooien kussen

Een weerwolf in uw woonkamer houden deze Halloween zonder de zorgen van onbenullige opleiding en beschadigde meubels! Als deze kleine kerel ziet er bekend uit, misschien dan je hebt gezien de aflevering van de Halloween van de kortstondige ambachteli
De Zoutwaterteelt etch proces

De Zoutwaterteelt etch proces

dit is een eenmalige proces voor de productie van een Printplaat door het verwijderen van ongewenste koper door elektrolyse in een zoutwater oplossing.Ik zal het proces illustreren door etsen en het opbouwen van een bord voor 18-pins PIC (voor de PC1
Houden opa's zag levend

Houden opa's zag levend

Ik vond deze kleine hand zag in mijn opa's workshop en wist dat ik moest slaan en weer tot leven te brengen. Het is de perfecte maat voor mijn schaal van werk en zou dat het eerste paneel zag in mijn collectie. Het feit dat dit mijn opa's is maakt he
Overleven een sneeuw noodtoestand

Overleven een sneeuw noodtoestand

Before Christmas hadden we een ijs storm snijden hydro aan de helft van de provincie waardoor mensen in het donker voor maar liefst twee weken. Vervolgens ontstaan een artic vortex waardoor de temperatuur buiten minus 46 graden Celsius thats minus 50
Geen-gloed Jar!

Geen-gloed Jar!

Gloed potten zijn een geweldige aanvulling op elke partij. U kunt ze ook gebruiken als decoratie in uw slaapkamer. Er zijn veel verschillende manieren kunt u een. Dit instructable leert u een van henStap 1: Verzamelen van de leveringenJarWrijven alco
Schilderij Tacoma Grill Surround

Schilderij Tacoma Grill Surround

Dus ik willen heb om dit te doen voor een tijdje nu, zag ik sommige u buis, sommige draden van de besprekingsgroep gelezen en dacht dat ik het een schot zou geven! Ik heb sommige problemen met het vinden van een duidelijk schrijven voor wat ik wilde,
Drievoudige kokos kip

Drievoudige kokos kip

Kokos kip is heerlijk. Ook kan het getroffen of missen---maar niet dit recept.Dit recept voor 3 soorten kokosnoot product, een kokos crème voor het marineren, geraspte kokosnoot afdekhoes en kokos olie om te frituren.Het is een beetje tijdrovend, als
Kunststof jas

Kunststof jas

Kunststofbekleding heeft honderden gebruik, water taalprogramma's van de elektronica van robots en externe gecontroleerde voertuigen die misschien het land in water of herstellen van hengels. Mix het met verf dunner dan toevoegen om te schilderen en
Automatisch sproeisysteem systeem met capacitieve sonde en Arduino op de goedkope (en ik bedoel het)

Automatisch sproeisysteem systeem met capacitieve sonde en Arduino op de goedkope (en ik bedoel het)

Disclaimer: Ik ben geen ingenieur elektronica, dus kan ik niet garantie voor het ontwerp (veel minder voor uw implementatie bieden). Ik weet alleen de gepresenteerde oplossing werkte voor mij voor ten minste ongeveer 5-6 maanden (dus ik kan niet zelf
Color Changing lichte Coat

Color Changing lichte Coat

Ik ben niet de eerste om dit te doen met alle middelen, in feite kan je dit klaar gemaakt bij verschillende online winkels, op etsy, enzovoort. Deze jas krijgt een enorme antwoord waar ik neem het wel, en ik heb zelfs het centrum van een groep 50 + p