Inhaltsverzeichnis:

IR-Remote-Farbschätzspiel - Gunook
IR-Remote-Farbschätzspiel - Gunook

Video: IR-Remote-Farbschätzspiel - Gunook

Video: IR-Remote-Farbschätzspiel - Gunook
Video: ajude seus amigos sempre ❤️ 2024, November
Anonim
IR-Remote-Farbschätzspiel
IR-Remote-Farbschätzspiel

In diesem anweisbaren zeige ich Ihnen, wie Sie eine RGB-LED mit einer IR-Fernbedienung steuern und ein lustiges Spiel daraus machen!

Schritt 1: Benötigte Teile

Benötigte Teile
Benötigte Teile

Die Teile, die Sie für dieses Projekt benötigen, sind:

- arduino one- RGB Led- IR-Sensor

(LED-Anzahl hängt vom Spiel, der Anzahl der Leben ab oder) - 2 grüne LEDs - 1 gelbe LED - 1 orangefarbene LED - 3 rote LEDs

Schritt 2: Code

#enthalten

int redPin = 10;

int grünPin = 6; int bluePin = 5;

int levensPin1 = 8;

int levensPin2 = 9; int levensPin3 = 12;

int levelPin1 = 2;

int levelPin2 = 3; int levelPin3 = 4; int levelPin4 = 7;

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN); decode_results-Ergebnisse;

// Farben eingeben

int input = {-1, -1, -1}; int color = {-1, -1, -1};

int indexNumber = 0;

int indexColor = 0;

int waarde = 0;

int rood = 0;

int grün = 0; int blauw = 0;

// Farben generieren

int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;

// Spielvariablen

int diff = 200;

int levelNumber = 1;

int level = {-1, -1, -1, -1};

intt = 0;

int level1 = 255;

int level2 = 0; int level3 = 0; int level4 = 0;

int Leben = 3;

int Ebenen1 = 255; int Ebenen2 = 255; int Ebenen3 = 255;

int roodGok = 0;

int groenGok = 0; int blauwGok = 0;

Leere Einrichtung () {

Serial.begin (9600); irrecv.enableIRIn(); // Starte den Empfänger pinMode (redPin, OUTPUT); PinMode (grünPin, AUSGANG); pinMode (bluePin, AUSGANG);

pinMode (levensPin1, AUSGANG);

pinMode (levensPin2, AUSGANG); pinMode (levensPin3, AUSGANG);

}

Leere Schleife () {

if (irrecv.decode (&results)) // Empfangen Sie die Signale von der Fernbedienung { Serial.println (results.value, DEC); // Zeigen Sie die Signale an, die von jeder gedrückten Taste empfangen wurden irrecv.resume (); // den nächsten Signalschalter empfangen (results.value) {// die Signale in die Zahlen auf den Schaltflächen umwandeln und den Schaltflächen Aktionen zuweisen

Fall 109562864:

addWaarde(1); brechen;

Fall 109562824:

addWaarde(2); brechen;

Fall 109562856:

addWaarde(3); brechen;

Fall 109562872:

addWaarde(4); brechen;

Fall 109562820:

addWaarde(5); brechen;

Fall 109562852:

addWaarde(6); brechen;

Fall 109562868:

addWaarde(7); brechen;

Fall 109562828:

addWaarde(8); brechen;

Fall 109562860:

addWaarde(9); brechen;

Fall 109562876:

addWaarde(0); brechen;

Fall 109562818: //oud ding enter/R CLK

handleInput(); brechen;

Fall 109562816: // laute Leistung

handleColor(); brechen; Fall 109562878: // Oud-Ding-Abbruch/L CLK resetColor (); brechen;

Fall 109562866: //lege knop midden

zufällige Farbe(); brechen;

Fall 109562830: // pijltje naar rechts

alles anzeigen(); brechen; case 109562838: // esc case 109562822: // AV-Quelle resetEverything(); brechen; }

// Tasten auf der Fernbedienung zur Steuerung der Farbe zuweisen: Auf diese Weise können die Spieler sehen, wie die Farben aussehen und wie sie kombiniert werden, // bevor ein Spiel gestartet wird. switch (results.value) {Fall 109562840: rood = 255; brechen;

Fall 109562844:

grün = 255; brechen;

Fall 109562850:

blauw = 255; brechen;

Fall 109562836:

Stamm = 0; grün = 0; blauw = 0; brechen; }

}

analogWrite (redPin, abs (255 - rood)); // RGB-LED steuern: umgekehrt, weil meine umgekehrt verdrahtet ist.

analogWrite(greenPin, abs(255 - grün)); analogWrite(bluePin, abs(255 - blauw));

// Live-LEDs steuern

wenn (lebt == 2) {levens1 = 0; aufrechtzuerhalten. Wenn (lebt == 1) {levens2 = 0; aufrechtzuerhalten. Wenn (lebt == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);

// Kontrollieren der Level-LEDs

if (levelNumber == 1) { level1 = 255; aufrechtzuerhalten. Wenn (levelNumber == 2){level1 = 255; Stufe2 = 255; aufrechtzuerhalten. Wenn (levelNumber == 3) {level1 = 255; Stufe2 = 255; Stufe3 = 255; aufrechtzuerhalten. Wenn (levelNumber == 4) {level1 = 255; Stufe2 = 255; Stufe3 = 255; Stufe4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);

}

Void addWaarde (int value) {// füge den gedrückten Wert zur Liste hinzu

if (indexNummer == 3) {

Rückkehr; }

if (input[indexnummer] == -1){

input[indexNumber] = Wert; Indexnummer++; } }

void handleInput() { // mach einen 'waarde'(value) aus der Liste

waarde = abs(input[0] * 100 + input[1] * 10 + input[2]); Eingabe[0] = -1; // de signalen zurücksetzen input[1] = -1; Eingabe[2] = -1;

Indexnummer = 0;

Serial.print ("waarde opgeslagen: "); Serial.println (waarde); addColor(waarde); }

void addColor(int waarde) {// füge die 3-stellige 'waarde' zu einer Liste hinzu

if (indexFarbe == 3) {

Rückkehr; }

if (Farbe[indexFarbe] == -1){

color[indexColor] = waarde; if (color[indexColor] > 255){ color[indexColor] = 255; } indexColor++; }

}

void randomColor () {// das Licht eine zufällige Farbe annehmen lassen und in Variablen speichern

roodRandom = random (0, 255);

groenRandom = random(0, 255);

blauwRandom = random(0, 255);

rood = roodRandom;

groen = groenZufällig; blauw = blauwRandom; Serial.print ("roodRandom = "); Serial.println (roodRandom); Serial.print ("groenRandom = "); Serial.println (groenRandom); Serial.print ("blauwRandom = "); Serial.println (blauwRandom);

}

void handleColor() { // wandle 'waarde' aus der Liste in 'Gok' (rate) Variablen um

roodGok = color[0]; groenGok = Farbe[1]; blauwGok = Farbe[2]; // Überprüfen Sie, ob die Gok-Variablen zu stark von der echten Zufallsfarbe abweichen: Wenn ja, zeigen Sie die Schätzung für drei Sekunden an, blinken Sie grün und ändern Sie die Farbe erneut, fügen Sie eine Stufe hinzu und verringern Sie die zulässige Differenz // wenn nicht, zeigen Sie die. an drei Sekunden raten, rot blinken und ein Leben abziehen // wenn du keine Leben mehr hast, beginnt das Spiel von vorne if (abs((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff){ analogWrite(redPin, abs(255 - roodGok)); analogWrite(greenPin, abs(255 - groenGok)); analogWrite(bluePin, abs(255 - blauwGok)); Verzögerung (3000); analogWrite (redPin, 255); analogWrite (grünPin, 0); analogWrite (bluePin, 255); Verzögerung (300); analogWrite (redPin, 255); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (300); analogWrite (redPin, 255); analogWrite (grünPin, 0); analogWrite (bluePin, 255); Verzögerung (300); analogWrite (redPin, 255); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (300);

Serial.print ("roodGok = ");

Serial.println (roodGok); Serial.print ("groenGok = "); Serial.println (groenGok); Serial.print ("blauwGok = "); Serial.println (blauwGok); resetColor(); zufällige Farbe(); levelNumber++; diff -= 50; aufrechtzuerhalten. Sonst { AnalogWrite (redPin, abs (255 - roodGok)); analogWrite(greenPin, abs(255 - groenGok)); analogWrite(bluePin, abs(255 - blauwGok)); Verzögerung (3000); analogWrite (rotPin, 0); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (300); analogWrite (redPin, 255); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (300); analogWrite (rotPin, 0); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (300); analogWrite (redPin, 255); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (300); Serial.print ("roodGok = "); Serial.println (roodGok); Serial.print ("groenGok = "); Serial.println (groenGok); Serial.print ("blauwGok = "); Serial.println (blauwGok);

resetColor();

lebt--; aufrechtzuerhalten. Wenn (lebt == 0) {AnalogWrite (redPin, 0); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (100); analogWrite (redPin, 255); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (100); analogWrite (rotPin, 0); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (100); analogWrite (redPin, 255); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (100); analogWrite (rotPin, 0); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (100); analogWrite (redPin, 255); analogWrite (grünPin, 255); analogWrite (bluePin, 255); Verzögerung (100); resetAlles(); }

}

Void resetColor () {// verwenden für Reset-Werte, für ein falsches Drücken oder jede neue Vermutung (nur zur Sicherheit)

color[0] = -1; Farbe[1] = -1; Farbe [2] = -1;

Indexnummer=0;

indexColor=0; }

Void resetEverything () {// das Spiel neu starten

color[0] = -1; Farbe[1] = -1; Farbe [2] = -1;

Indexnummer=0;

indexColor=0;

Leben = 3;

Stamm = 0; grün = 0; blauw = 0;

roodRandom = 0;

groenRandom = 0; blauwRandom = 0;

Ebenen1 = 255;

Ebenen2 = 255; Ebenen3 = 255;

Stufe1 = 255;

Stufe2 = 0; Stufe3 = 0; Stufe4 = 0;

levelNumber = 1;

t = 0;

}

Void displayEverything () {// verwenden Sie dies, um wichtige Informationen auf dem seriellen Monitor anzuzeigen

Serial.print ("roodGok = "); Serial.println (roodGok); Serial.print ("groenGok = "); Serial.println (groenGok); Serial.print ("blauwGok = "); Serial.println (blauwGok); Serial.print ("roodRandom = "); Serial.println (roodRandom); Serial.print ("groenRandom = "); Serial.println (groenRandom); Serial.print ("blauwRandom = "); Serial.println (blauwRandom);

Serial.print ("Rood = ");

Serial.println (Rood); Serial.print ("groen = "); Serial.println (grün); Serial.print ("blauw = "); Serial.println (blauw);

Serial.print ("waarde opgeslagen: ");

Serial.println (waarde); }

Schritt 3: Erstellen

Bauen
Bauen
Bauen
Bauen
Bauen
Bauen
Bauen
Bauen

Sie wollen offensichtlich einen schönen Build für dieses Projekt. Dieser Teil ist ziemlich offen für Interpretationen, aber es gibt einige Dinge, die Sie dabei beachten sollten: - Halten Sie die Frontplatte dünn, damit Sie Ihre LEDs immer noch hindurchstecken können und der IR-Empfänger weiterhin funktioniert

- Halten Sie genügend Platz im Build für das Arduino und eine Lötplatine

- Stellen Sie sicher, dass sich auf der Rückseite ein Loch für die Kraft des Arduino befindet

Ich habe ein grobes Schema für die Verkabelung hinzugefügt.

Viel Glück und hab Spaß!