Pages: [1]   Go Down
Author Topic: Simples Lasertagsystem  (Read 267 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo liebe Community,
ich bin ein Newbie am Arduino und habe mein erstes Projekt vor, war klar dass schnell die ersten Probleme auftreten werden...

Geplant ist ein sehr simples Lasertagsystem (Betonung auf sehr).
Ich verwende:
Arduino Leonardo
Vishay TSOP 38kh 950nm
IR LED 950nm
Drucktaster
Rote LED
Gelbe LED
kleiner Piezolautsprecher

Wenn der Taster gedrückt wird, soll von der IR LED ein Lichtstrahl "abgefeuert" werden. Der Lautsprecher soll ein kurzes Klack Geräusch verursachen und von der gelben LED soll auch ein kurzer Lichtstrahl ausgehen.
Wenn der IR Sensor getroffen wird soll die rote LED 5 Sekunden lang leuchten.
Es gibt also (vorerst) keine Munition, kein Leben und auch keine Informationen die mit der IR LED übertragen werden.

Meine Fragen sind:
Besteht der Code eigentlich nur aus 2 Abfragen, nämlich ob der Taster gedrückt ist und ob der Sensor ein Signal (Treffer) ermittelt?
Der Sensor spricht nur bei 38kh an, wie bekommt die IR LED eine solche Frequenz?
Wenn pro Knopfdruck nur ein Schuss gelöst werden soll, also der Taster für einen zweiten Schuss losgelassen und noch einmal gedrückt werden soll, wie bekommt man das hin (man muss ja wohl weg vom loop, hin zu einer einmaligen Aktion?)

Ich hoffe ihr könnt mir helfen, vielen vielen Dank im Voraus!
Lg Fred
Logged

Offline Offline
Faraday Member
**
Karma: 83
Posts: 2800
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der Sensor spricht nur bei 38kh an, wie bekommt die IR LED eine solche Frequenz?
Entweder über einen selbst programmierten Timer oder die IRRemote Lib:
https://github.com/shirriff/Arduino-IRremote
http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
http://www.righto.com/2010/03/detecting-ir-beam-break-with-arduino-ir.html

Die ist eigentlich für Fernbedienungen gedacht, aber lässt sich auch für sowas misbrauchen


Allerdings ist eine IR-LED kein Laser. Die LED strahlt in einem bestimmten Winkel ab. Sonst müsste man mit der Fernbedienung genau auf das Gerät zielen. Reflexionen können genauso erfasst werden.
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 49
Posts: 2756
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Besteht der Code eigentlich nur aus 2 Abfragen
Na ja, für das Klackgeräusch brauchst du schon mindestens 3 Anweisungen: (an, kurz warten, aus)  smiley-wink

Fang mal damit an:
 - Wenn der Taster gedrückt wird, blitzt die gelbe LED kurz auf (unabhängig von der Dauer des Tasterdrucks)  
    und der Piezo macht "klack". ( Evtl. ist ein kuzer Pieps - Ton besser )
 - Das ganze wiederholt sich erst, wenn der Taster kurz losgelassen war.
Das ist schon kein einfaches Projekt zum Start, aber machbar.
Logged

Offline Offline
Sr. Member
****
Karma: 3
Posts: 439
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Im freien Raum wird somit nahezu jeder Schuss ein Treffer. Die LED hat einen Abstrahlwinkel und der TSOP gute Augen  smiley-lol

Das kann man zuhause leicht mit der nächstbesten Fernbedienung und dem dazugehörigen Gerät ausprobieren. Es reicht die Reflexion der Wand, sofern die nicht allzu dunkel ist und schon passiert was.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wow, das ging ja schnell! Vielen Dank für all die Antworten!
Es ist mir klar dass ich den LED Strahl bündel muss, dafür hab ich auch alle Teile (Rohre, Linse).
Aber meine Probleme sind klar die des Code Schreibens...

 "Das ganze wiederholt sich erst, wenn der Taster kurz losgelassen war."
Wie genau macht man das? Und geht bei diesem Schritt nicht die IR LED unter?
Logged

Offline Offline
Sr. Member
****
Karma: 3
Posts: 439
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie genau macht man das? Und geht bei diesem Schritt nicht die IR LED unter?

Ich fürchte, Du musst Dich schon ein wenig mit der Materie beschäftigen.
Schau Dir die Beispiel-Sketches an, Blink ist schon die richtige Richtung für die LED.
Dann wie man Taster abfragt, de Zustand speichert und dann bist Du so in Fahrt dass Dich nichts mehr bremsen kann.

Ohne das geht's aber leider nicht.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich hab mich mal rangesetzt und mal angefangen zu probieren (nach dem einlesen natürlich;) ).
Die Seiten auf denen die Infrarot-Bibliothek erklärt wurden, waren gut und ich wollte das auch gleich umsetzen.
Ein kurzer Test ob der Sensor reagiert/ die Infrarot LED wirklich mit 38kh sendet:
Code:
#include <IRremote.h>

const int buttonpin = 12;
const int ledpin = 13;
const int sensorpin = 11;
const int roteledpin = 10;

int buttonstate = 0;
int sensorstate = 0;

IRsend irsend;
void setup(){
  pinMode(buttonpin, INPUT);
  pinMode(ledpin, OUTPUT);
  pinMode(sensorpin, INPUT);
  pinMode(roteledpin, OUTPUT);
  irsend.enableIROut(38);
  irsend.mark(0);
 
}

void loop(){
  buttonstate = digitalRead(buttonpin);
  if (buttonstate == HIGH){
    digitalWrite(ledpin, HIGH);
  }
  else {
    digitalWrite(ledpin, LOW);
  }
 
  sensorstate = digitalRead(sensorpin);
  if (sensorstate == HIGH) {
    digitalWrite(roteledpin, HIGH);
  }
  else {
    digitalWrite(roteledpin, LOW);
  }
 
}

Der Code wird beim Überprüfen als richtig angezeigt, und normal auf das Board übertragen.
Nach dem Bau der Schaltung ergeben sich allerdings große Probleme:
Der Infrarottransistor wird unglaublich heiß, die rote LED spielt verrückt (leuchtet, schaltet sich aus, flimmert, schaltet ein wenn Knopf gedrückt..)

Ich habe den Transistor an Ground, 5 Volt und Arduino INPUT angeschlossen; passt etwas nicht (ich bin mir recht sicher die Beinchen nicht vertauscht zu haben)?
Der Druckknopf hat keinen Widerstand bekommen, aber die Fehler waren auch noch zu sehen als der IR Transistor längst entfernt worden war. Also muss noch irgendwo der Wurm liegen?
Logged

Offline Offline
Faraday Member
**
Karma: 83
Posts: 2800
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Taster ohne Widerstand geht schon mal nicht. Am besten du machst das:
Quote
pinMode(buttonpin, INPUT_PULLUP);
Und schaltest den Taster gegen Masse. Dann ist er nicht gedrückt HIGH (durch den internen Pullup) und gedrückt LOW


Der Sensor ist im Datenblatt beschrieben:
http://www.vishay.com/docs/82459/tsop48.pdf

Gleich oben links. 1=OUT, 2=GND, 3=5V. Zumindest für die TSOP44xx und 48xx Serie. Schau vielleicht mal nach welchen Typ du genau hast. Da gibt es nämlich leicht verschiedene. Beim 22xx und 22xx ist GND und 5V anders herum!


Die IR-LED braucht auch einen Vorwiderstand. Genauso sonstige LEDs die du als Anzeige hast.


« Last Edit: March 28, 2014, 10:36:19 am by Serenifly » Logged

Offline Offline
Sr. Member
****
Karma: 3
Posts: 439
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der Code wird beim Überprüfen als richtig angezeigt, und normal auf das Board übertragen.

Das ist schon mal gut!

Der Infrarottransistor wird unglaublich heiß, die rote LED spielt verrückt (leuchtet, schaltet sich aus, flimmert, schaltet ein wenn Knopf gedrückt..)

Ich habe den Transistor an Ground, 5 Volt und Arduino INPUT angeschlossen; passt etwas nicht (ich bin mir recht sicher die Beinchen nicht vertauscht zu haben)?

Zeig uns den tatsächlichen Aufbau, mit Text beschreiben wird das nix.
Logged

Offline Offline
Sr. Member
****
Karma: 3
Posts: 439
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Na, alles abgebrannt oder läuft's jetzt?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es hat gut funktioniert smiley-wink Musste eben den Widerstand setzen.
Sobald ich wieder ein Stündchen Zeit habe möchte ich den Lautsprecher einbinden. Da werd ich mich noch einlesen müssen.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Heiho,

lustig, ich baue gerade ebenfalls an einem Lasertagsystem und kann dir dabei auch gerne helfen  smiley
Ich würde dir aber abraten für IR die library zu nutzen, ich musste mich da durchwühlen wie das funktioniert, aber rausgekommen ist meine eigene Library die ich voll verstehe und die auch nur das macht, was ich brauche. Ist alles garnicht mal so schwer. Mir war ebenfalls wichtig das feuern und "getroffen werden" gleichzeitig möglich ist.
Logged

Pages: [1]   Go Up
Jump to: