Der Jockel
Ensign
- Registriert
- Nov. 2016
- Beiträge
- 150
Hallo zusammen,
ich bastel gerade an einem Arduino Projekt, welches IR Signale von Fernbedienungen aufnehmen soll um diese später mit dem Arduino zu senden. Die Schaltung funktioniert schon (siehe im Bild unten). Es hängt nurnoch am Programm. Meine Idee, wie es Funktionieren soll sieht man oben im Bild und hier ist mein Programm welches leider nicht funktioniert. Schonmal Danke für Tipps und Anregungen!
ich bastel gerade an einem Arduino Projekt, welches IR Signale von Fernbedienungen aufnehmen soll um diese später mit dem Arduino zu senden. Die Schaltung funktioniert schon (siehe im Bild unten). Es hängt nurnoch am Programm. Meine Idee, wie es Funktionieren soll sieht man oben im Bild und hier ist mein Programm welches leider nicht funktioniert. Schonmal Danke für Tipps und Anregungen!
C++:
#define MAXPULSE 65000
#define SAMPLERATE 26 //kehrwert der Trägerfrequenz in Microsekunden hier 38kHZ
#define DIODEPIN 8
unsigned int pulses[100][2];
unsigned short currentpulse = 0;
bool running = true;
bool lastVal = 1;
bool currentVal = 0;
bool inPulse = true;
void setup() {
pinMode(DIODEPIN, INPUT);
digitalWrite(DIODEPIN, HIGH);
Serial.begin(9600);
Serial.println("Ready to decode IR!");
}
void loop() {
if( !(PINB & 1) && running){
unsigned long previousMicros = micros();
++pulses[currentpulse][inPulse];
while(running){
unsigned long currentMicros = micros();
if( currentMicros - previousMicros >= SAMPLERATE ){
currentVal = !(PINB & 1);
if(currentVal == lastVal){
++pulses[currentpulse][inPulse];
if(pulses[currentpulse][inPulse] > MAXPULSE){
printpulses();
}
}
else{
++currentpulse;
inPulse = !inPulse;
++pulses[currentpulse][inPulse];
}
previousMicros = currentMicros;
lastVal = currentVal;
}
}
}
}
void printpulses() {
running = false;
for(short i = 0; i < currentpulse-1; i++){
Serial.print(pulses[i][0] * SAMPLERATE, DEC);
Serial.print(", ");
Serial.print(pulses[i][1] * SAMPLERATE, DEC);
Serial.print(", ");
}
}
Ergänzung ()