Arduino Pinewood Derby Timer (2 / 3 stap)

Stap 2: De Timer schets


Wat betreft de aandacht op de schets van de PinewoodTimer, zijn eerst enkele belangrijke parameters gedefinieerd...

#define IR_THRESHOLD 200 / / auto detect drempel

#define STARTER_PIN / / vanaf poort schakelaar = pin 2

#define QTI_PIN_OFFSET 5 / / 0-2 rijstroken = pinnen 5-7

#define NUM_LANES 3 / / het aantal rijstroken

#define TRACK_LENGTH 50 / / voeten

#define schaal 25 / / schaal van 1:25

#define TIMEOUT 6000 / / ms voor race timeout/herstarten

De IR_THRESHOLD moet worden ingesteld binnen het venster gedefinieerd door omgevingsomstandigheden IR en QTI reactie zoals bepaald met de schets van de PinewoodCalibrate. STARTER_PIN Hiermee geeft u de PIN-code gebruikt voor de beginnende poort switch (de andere kant van de schakelaar is aangesloten op de grond) terwijl QTI_PIN_OFFSET de pin aansluitingen voor de QTI sensoren bepaalt. Diverse configuraties bijhouden en auto-maten worden ondersteund met NUM_LANES, TRACK_LENGTH en schaal. Tot slot eindigt een time-out van de race als, bijvoorbeeld, een auto eindigt niet of slechts twee auto's zijn racing, enz.

De installatieroutine gewoon kunt de seriële terminal en Hiermee stelt u de pin-modus voor de starter poort switch.

VOID Setup {}

Serial.begin(9600);

pinMode(STARTER_PIN,INPUT_PULLUP);

}

De hoofdlus wordt gestart door het definiëren van de variabelen die worden gebruikt. De start_time is de basis voor de lopende et (verstreken tijd) met de array finish_et [] de tijd voor elke rijstrook op te slaan. De variabele race_over wordt geteld hoeveel auto's de finish hebben gekruist.

Na verrekening van de [finish_et] voor elke rijstrook, "Klaar..." wordt weergegeven op de terminal en de schets wacht op de race te beginnen. Wanneer de start schakelaar opent de schets "Go" drukt en vervolgens verschijnt ook de belangrijkste timing lus. Binnen de lus wordt elke rijstrook gecontroleerd op de aanwezigheid van een finisher door het vergelijken van de sensor van de QTI lezen met de drempel. Zodra een auto wordt ontdekt dat de verstreken tijd voor die rijstrook is opgeslagen. De timing lus wordt uitgevoerd totdat de wedstrijd voorbij is (dat wil zeggen NUM_LANEs wagens de finishlijn of de time-out is overschreden).

Ik neem een verklaring (hier commentaar) als u wilt weergeven van de benodigde tijd voor het controleren van alle de rijstroken, die beurtelings bepaalt van hoeveel rijstroken de schets aankan. Ik heb waargenomen de tijd van de lus voor een 3-baans-setup te zijn 9-10 milliseconden, of ongeveer 3 milliseconden per rijstrook. Als bijvoorbeeld de tijd per rijstrook 3ms is en een auto 30 milliseconden duurt om de finishlijn, kon de schets theoretisch maximaal tien rijstroken steunen. Echter, sommige marge dienen om aan te passen, bijvoorbeeld, een bijzonder snelle (of korte) auto. U kunt als u wilt eigenlijk het testen van de lane-capaciteit verhogen NUM_LANES en uitvoeren van herhaalde proeven om te bepalen op welk punt de timer begint te 'missen' een snelle auto kruising van de afwerkingslijn. Merk op dat u kunt doen dit testen voor elke NUM_LANES met behulp van slechts een enkele auto/baan.

void loop {}

lange start_time, et = 0, finish_et [NUM_LANES];

int race_over = 0;

int i;

voor (ik = 0; ik < NUM_LANES; i ++) {}

finish_et [i] = 0;

}

Serial.println("Ready...");

terwijl (digitalRead(STARTER_PIN)==0) {}

}

Serial.println("Go!");

start_time = millis();

terwijl ((race_over < NUM_LANES) & & (et < TIMEOUT)) {}

et = millis ()-start_time;

voor (ik = 0; i

Als (RCTime (I + QTI_PIN_OFFSET) < IR_THRESHOLD) {}

Als (finish_et [i] == 0) {}

finish_et [i] = et;

race_over ++;

}

}

}

Serial.println(Millis()-(et+start_time));

}

Na afloop van de race wordt de eindtijd voor elke rijstrook weergegeven. Met behulp van de TRACK_LENGTH en de schaal ik ook weer de gemiddelde snelheid in 'geschaald MPH' (mensen opgewonden wanneer hun auto 250 MPH gaat: =). Nadat de race resultaten worden weergegeven wacht de schets voor de beginnende poort te sluiten in voorbereiding voor de volgende race. De verklaring van de vertraging verzekert starting poort switch bounce niet ten onrechte leiden tot een onmiddellijke herstart.

Serial.println();

voor (ik = 0; i

Serial.Print ("Lane");

Serial.println(i+1);

Serial.Print ("Time");

Serial.println(float(finish_et[i]/1000.0));

Serial.Print ("snelheid");

zweven fps = TRACK_LENGTH/(finish_et[i]/1000.0);

zweven mph = ((fps * 3600.0) / 5280.0) * schaal;

Serial.Print(int(mph));

Serial.println ("MPH");

Serial.println();

}

terwijl (digitalRead(STARTER_PIN)! = 0) {}

delay(50);

}

All that's left is de RCTime-routine hoffelijkheid van Parallax (http://learn.parallax.com/KickStart/555-27401), die de sensorgegevens QTI verwerft. Het werkt door het meten van de tijd van de geen kwijting van een condensator via een weerstand van de variabele (afhankelijk van de hoeveelheid teruggekaatste IR).

lange RCTime (int sensorIn) {}

lange duur = 0;

pinMode (sensorIn, OUTPUT); Maken van pin OUTPUT

digitalWrite (sensorIn, hoge); PIN HIGH (geen kwijting condensator)

delay(1); Wachten van 1ms

pinMode (sensorIn, INPUT); Maken van pin INPUT

digitalWrite (sensorIn, laag); Uitschakelen interne pullups

while(digitalRead(sensorIn)) {/ / pin te laag gaan wachten

duur ++;

}

retourneren van duur;

}

Gerelateerde Artikelen

Hoe maak je een Pinewood Derby Car

Hoe maak je een Pinewood Derby Car

Nou, hier is het Pinewood Derby time, nogmaals, voor onze roedel.  We houden de Derby in januari en de carkits van November Pack vergadering uitdelen.  Elk jaar de Cubs wilt maken van een nieuwe auto.  Ze niet eerder ervaren auto van vorig jaar gebru
Ducted Fan Pinewood Derby Car

Ducted Fan Pinewood Derby Car

Wanneer mijn werkplek (Adobe) Pinewood Derby concurrentie aangekondigd besloten heb ik om deel te nemen in de outlaw/onbeperkte categorie. Een flink aantal jaren geleden maakte ik een auto met behulp van een propeller & elektromotor opnieuw beoogde d
Pinewood Derby Race

Pinewood Derby Race

Hier in Nederland weten we niet echt de Pinewood Derby. Ik dacht dat het zou leuk om te doen een jaarlijkse Nederlandse versie.Om dit te maken gebeuren, moet ik de Amerikaanse afmetingen en regels te vertalen in iets dat voor ons werken zou. Het eers
Pinewood Derby politie auto

Pinewood Derby politie auto

het is Pinewood Derby seizoen!  Dit jaar bouw ik een met een arduino-chip binnen.  Deze auto heeft geleid kop en staart lichten.  Het heeft ook rood en blauw knipperende lichten die worden beheerd door de arduino-chip.Ik zal u laten zien hoe een te b
Pinewood Derby met programmeerbare LEDs

Pinewood Derby met programmeerbare LEDs

Een ander te nemen over een auto van de Pinewood Derby met verlichting, dit keer met een Atmel ATtiny2313microcontroller binnen (samen met een puinhoop van draden). Ik heb niet gecontroleerd, maar een ruweberekening suggereert dat de lichten voor ong
Pinewood Derby Car Detailing ideeën

Pinewood Derby Car Detailing ideeën

Sommige kinderen (of ouders) kon minder zorg over een snelle auto. Voor hen 's it all about stijl...In dit instructable, zal ik de trucs die ik gebruikte tijdens mijn eerste ervaring met het verfraaien van pinewood derby auto's met mijn jongens delen
Pinewood Derby trofee staan

Pinewood Derby trofee staan

It's getting te zijn die tijd van het jaar waar we beginnen te werken op onze Pinewood Derby-auto's voor onze Cub Scouts.Echter, na al het werk in de bouw en uw auto racing, hoe bent u van plan om uw gemiddelde machine weer te geven? Sommige mensen d
Pinewood Derby Car op Shopbot

Pinewood Derby Car op Shopbot

waar mijn zoon in de Pinewood Derby concurreert, ze hebben vrij strikte regels op wat voor werk de jongens op hun eigen auto doet.  De jongens afdelingen hebben strenge regels over wat wel en niet kan worden gedaan.Maar dan is er een papa's divisie! 
Gewicht toevoegen aan een auto Pinewood Derby, snel en goedkoop.

Gewicht toevoegen aan een auto Pinewood Derby, snel en goedkoop.

ik was op zoek naar een snelle en gemakkelijke manier om gewicht toe te voegen aan een Pinewood Derby-auto. U kunt de overlappings- of wolfraam, maar ze zijn relatief duur (1-2 dollar per ounce), komen in vreemde vormen, en je moet bedenken een manie
Pinewood Derby Car geïnspireerd door LEGO Ninjago

Pinewood Derby Car geïnspireerd door LEGO Ninjago

onze jaarlijkse Cub Scout Pinewood Derby (http://en.wikipedia.org/wiki/Pinewood_derby) was een kans voor mijn zes-jaar-oude te combineren twee van zijn favoriete dingen: maken van dingen en LEGO, in het bijzonder de verhaal gebaseerde wereld van LEGO
Hoe het bouwen van een onovertroffen Pinewood Derby Racer

Hoe het bouwen van een onovertroffen Pinewood Derby Racer

In deze video ik u tonen hoe te bouwen van een onovertroffen Pinewood Derby Racer.Wij tonen u de tips en trucs die we gebruikten om de lokale Pinewood Derby Race te winnen.Voel je vrij om gebruik te maken van deze snelheid geheimen om uw pinewood der
HMMWV (Humvee) Pinewood Derby Car

HMMWV (Humvee) Pinewood Derby Car

het is Pinewood derby seizoen voor de Cub Scouts. Als een vader van een Weblo en een leider van Den hoop ik te geven je enkele ideeën over het bouwen van uw auto. Vergeet niet, de auto is bedoeld als een vader-zoon-project. Help uw jongen doen zo vee
Pinewood Derby Car met LEDs en Jimmy Neutron

Pinewood Derby Car met LEDs en Jimmy Neutron

U weet uw in problemen wanneer u zorgen te maken over de software in uw zoon Pinewood Derby car!Dit jaar heb ik besloten te geven proberen te concurreren met de "Gear-Heads" in onze Cub Scout-Pack. Er zijn gewoon te veel variabelen wanneer het p
Capaciteit meter met arduino en 555 timer

Capaciteit meter met arduino en 555 timer

CAPACITEIT METER MET ARDUINO EN 555 TIMER CHIPDit project heeft tot doel om te bouwen van een eenvoudige capaciteit meter, een apparaat voor het meten van de capaciteit in nanoFarads en microFarad, met een bereik van ongeveer 1 nanoFarad tot honderde