Rikta praktiken med Arduino och laserpekare (3 / 4 steg)
Steg 3: Ladda upp koden till din Arduino
Koden:
<p>/*<br> * =====================================================================================
*
* Filnamn: TargetPractice_photoresistor.ino
*
* Beskrivning: Använder en fotomotstånd att upptäcka hur lång tid det tar en spelare
* att träffa ett mål med en laserpekare efter en nedräkning.
* http://www.ardusat.com
*
* I detta exempel används många tredje part bibliotek tillgängliga från
* Adafruit (https://github.com/adafruit). Dessa bibliotek är
* oftast under ett Apache License, Version 2.0.
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Version: 1.0
* Skapat: 2/24/2016
* Översyn: ingen
* Compiler: Arduino
*
* Författare: Chris Hoffman (chris
* Organisation: Ardusat
*
* =====================================================================================
*</p><p>*-----------------------------------------------------------------------------
* Inkluderar
*-----------------------------------------------------------------------------*/
#include < arduino.h >
#include < wire.h >< /wire.h >< /arduino.h >< /p >< p > / *---
* Konstant definitioner
*-----------------------------------------------------------------------------*/</p><p>long top = 38;
booleska win = false;
booleska gameOn = sant;
booleska igång = false;
booleska timer = false;
lång starttid;
långa endTime;
långa randomTime;
float elapsedTime;
int ledPin2 = 2;
int ledPin3 = 3;
int ledPin4 = 4;
int ledPin5 = 5;
CONST int sensorPin = 0;
int lightLevel, hög = 0, låg = 1023; < /p >< p > / *
* === FUNCTION ======================================================================
* Namn: setup
* Beskrivning: Den här funktionen körs när Arduino först slås på / återställer. Detta är
* vår chans att ta hand om alla engångs konfigurationsåtgärder att få
* programmet redo att börja spelet.
* =====================================================================================
*/
void setup(void) {
Serial.BEGIN(9600);
pinMode(ledPin2,OUTPUT); Röd LED
pinMode(ledPin3,OUTPUT); gul lysdiod
pinMode(ledPin4,OUTPUT); Grön LED
pinMode(ledPin5,OUTPUT); "gå" tecken
Serial.println ("alla system går. Se för nedräkningen.");
} < /p >< p > / *
* === FUNCTION ======================================================================
* Namn: loop
* Beskrivning: När installationsprogrammet har körts denna loop funktion körs tills Arduino förlorar
* power eller återställs. Vi går igenom och uppdatera alla bifogade
* sensorer, skriva ut de uppdaterade värdena i JSON-format, sedan fördröja
* innan du upprepar loopen igen.
* =====================================================================================
*/
void loop(void) {
Serial.Print ("lightLevel:");
Serial.println(lightLevel); < /p >< p > lightLevel = analogRead(sensorPin);
lightLevel = karta (lightLevel, 0, 1023, 0, 255);
lightLevel = begränsa (lightLevel, 0, 255);
manualTune(); manuellt ändra intervallet från ljus till mörk
om (gameOn == true) {
digitalWrite(ledPin2,HIGH);
Delay(2000);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,HIGH);
Delay(2000);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,HIGH);
Delay(2000);
digitalWrite(ledPin4,LOW);
Random();
digitalWrite(ledPin5,HIGH);
Serial.println("Fire!");
gameOn = false;
}
om (lightLevel > = topp) {
vinna = sant;
}
om (vinna == true) {
Stop();
int jag = 0;
medan (jag < = 9) {
digitalWrite(ledPin2,HIGH);
digitalWrite(ledPin3,HIGH);
digitalWrite(ledPin4,HIGH);
digitalWrite(ledPin5,HIGH);
fördröjning (200);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
digitalWrite(ledPin4,LOW);
digitalWrite(ledPin5,LOW);
fördröjning (200);
i ++;
}
Delay(3000);
vinna = false;
gameOn = sant;
} < /p >< p > delay(10);
} < /p >< p > / *
* === FUNCTION ======================================================================
* Namn: Random
* Beskrivning: Förseningar tid emellan första nedräkningen och upptäcka den
* laserpekare.
* =====================================================================================
* / < /p >< p > annullera Random()
{
randomTime = random(4,10);
randomTime = randomTime * 1000;
Delay(randomTime);
Start();
} < /p >< p > / *
* === FUNCTION ======================================================================
* Namn: starta
* Beskrivning: Börjar en timer så att vi kan rapportera till spelaren hur snabbt de
* hit ljussensorn med en laserpekare. Beräknas i millis.
* =====================================================================================
* / < /p >< p > void Start() {
startTime = millis();
} < /p >< p > / *
* === FUNCTION ======================================================================
* Namn: stoppa
* Beskrivning: Stoppar timern och rapporterar spelarens tid som förflutit mellan den
* gå ljus och träffar sensorn.
* =====================================================================================
*/
void Stop() {
endTime = millis();
elapsedTime = (endTime - startTime) + 5;
elapsedTime = elapsedTime/1000;
Serial.println ("direkt Hit!");
Serial.Print ("tid, sekunder:");
Serial.println(elapsedTime);
} < /p >< p > void manualTune()
{
lightLevel = karta (lightLevel, 0, 1023, 0, 255);
lightLevel = begränsa (lightLevel, 0, 255);
} < /p >
Nästa