Forum: Mikrocontroller und Digitale Elektronik Hilfe mit IR!


von Jakob W. (sible09)


Lesenswert?

Hallo erst Mal! Meine Frage ist eigendlich eh sehr simpel: Wieso kann
ich bei dem folgenden Sketch wenn ich einmal gesendet habe nichts mehr
empfangen?? (Also ich lade den sketch auf den Arduino hoch, kann dann
empfangen so viel ich will, aber sobald ich den Taster betätige also
sende kann ich gar nichts mehr empfangen??

1
#include <IRremote.h>
2
const int RECV_PIN = 10;
3
IRrecv irrecv(RECV_PIN);
4
decode_results results;
5
int inputPin = 8;
6
int val = 0;
7
class LaserTag {
8
  enum {
9
    CMD_LEN = 32,
10
    SHOOT   = 0x538BC81
11
  };
12
  
13
  IRsend tag;
14
  
15
  void send_command(const long command) {
16
    tag.sendNEC(command, CMD_LEN);
17
  }
18
  public:
19
  
20
  void shoot() { send_command(SHOOT); }
21
};
22
23
LaserTag laser_tag;
24
const unsigned int BAUD_RATE = 9600;
25
26
void setup() {
27
  Serial.begin(9600);
28
  irrecv.enableIRIn();
29
  irrecv.blink13(true),
30
  Serial.begin(BAUD_RATE);
31
  pinMode(inputPin, INPUT);
32
}
33
34
void loop() {
35
  val = digitalRead(inputPin);  {
36
  if (val == LOW) {
37
    laser_tag.shoot();
38
39
  }
40
}
41
  if (irrecv.decode(&results)) {
42
    if (results.decode_type == NEC) {
43
      Serial.print("NEC: ");
44
    } else if (results.decode_type == SONY) {
45
      Serial.print("SONY: ");
46
    } else if (results.decode_type == RC5) {
47
      Serial.print("RC5: ");
48
    } else if (results.decode_type == RC6) {
49
      Serial.print("RC6: ");
50
    } else if (results.decode_type == UNKNOWN) {
51
      Serial.print("UNKNOWN: ");
52
    }
53
    Serial.println(results.value, HEX);
54
    irrecv.resume(); 
55
  }
56
}

von scus (Gast)


Lesenswert?

Vermutlich weil du tag deklarierst, aber nicht initialisierst.

Gruß
scus

von Jakob W. (sible09)


Lesenswert?

Ich weiß das klingt komisch aber wie mache ich das??;)

Danke übrigens!!

von Jakob W. (sible09)


Lesenswert?

Kann mir niemand sagen wie ich "tag" initialisiere??

von foobar (Gast)


Lesenswert?

Ich hol mir schonmal das Popcorn.

von Amateur (Gast)


Lesenswert?

War da nicht früher mal was mit main?

Meckert Dir der Compiler nicht die Ohren voll?

Serial.begin(); wird auch beim zweiten Aufruf nicht besser.

Entweder dein Code ist unvollständig, oder Du bist zu großzügig was die 
geschweifte Klammer betrifft. Schau Dir mal an, welche zu wem gehört und 
mach das Ganze mal etwas lesbarer. Muss aber nicht sein;-)

von Jakob W. (sible09)


Lesenswert?

Ähm nein der compiler sieht alles ganz normal...


@foobar
Große Klappe nichts dahinter..Halt dich raus aus meinem Threat wenn du 
eh nichts weißt!


Also dann: Ja das mit dem Serial.begin() war ein großer Fehler aber 
nicht das Hauptproblem!Ich werd´s noch mal überprüfen...

Ach ja eines ist glaube ich noch zu sagen! Ich gehe 6. Klasse habe noch 
nie nen Elektrokurs oder so gehabt, gehe in keine HTBLA(HTL) hab das 
nicht als Beruf gelernt auch nicht studiert.....Und habe mir mit 15 mein 
eigenes Laser-tag-system gebaut! Also ich glaube maulen könnt ihr lassen 
;-)

von Timmo H. (masterfx)


Lesenswert?

Amateur schrieb:
> War da nicht früher mal was mit main?
Aber nicht bei Arduino

von jakob (Gast)


Lesenswert?

Danke mal...Scheinst dich mit dem Arduino auszukennen! Hast du nen Rat 
für mich??:-)

von scus (Gast)


Lesenswert?

Du initialisierst eine Variable, indem du ihr einen Wert zuweist. In 
deinem Fall möchtest du der Variable ein Objekt vom Typ IRsend zuweisen. 
Eine Variable vom Typ "MeinObjekt" deklariert man mittels
  MeinObjekt var;
und initialisiert es mittels
  var = new MeinObjekt(variablen, des, konstruktors);

Kurzschreibweise
  MeinObjekt var(variablen, des, konstruktors);


Allerdings ist das wohl doch nicht der Fehler, denn IRsend scheint eine 
statische Klasse zu sein, sodass der Konstruktor nicht aufgerufen werden 
muss.


Hast du die Sendeeinheit richtig angeschlossen? Die Library nutzt 
scheinbar einen festen Pin, den man nicht verändern kann.

Gruß
scus

von jakob (Gast)


Lesenswert?

Das dachte ich mir fast.
Nein man deklariert keinen Ausgang! Beim Arduino Mega ist Pin 9 als 
fixer Ausgang und beim Arduino UNO Pin 3 als Ausgang festgelegt!!

Dass ich die LED falsch angeschlossen habe kann ebenfalls nicht stimmen, 
da ich doch immer senden kann. Nur kann ich nichts mehr empfangen wenn 
ich einmal gesendet habe!


Gruß jakob

von codandus (Gast)


Lesenswert?

Du bist mit 15 in der 6.Klasse?
Wie oft bist du sitzen geblieben?
oder lügst du uns hier etwa an... ;-)

von Googleinanutshell (Gast)


Lesenswert?

Hi

Frank B
hatte doch auch schon einmal das gleiche Problem?

Beitrag "Arduino pwm Eingang reagiert nicht wenn pwm Ausgang läuft"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.