IR Phototransistor Serial read failing. Worked then failed. Need help!

I am currently working on a small project to copy a IR signal so that i can replicate it in my own equipment.

My problem is that i have this code that i found, it was working just fine at first but now i cant get it to work at all.

I have tried to change out all the HW but nothing seems to work. Also i did a check with the built in IRrecvDumpV2 which actually worked.

/* Raw IR decoder sketch!
This sketch/program uses the Arduno and a PNA4602 to
decode IR received. This can be used to make a IR receiver
(by looking for a particular code)
or transmitter (by pulsing an IR LED at ~38KHz for the
durations detected
Code is public domain, check out and
for more tutorials!

// We need to use the 'raw' pin reading methods
// because timing is very important here and the digitalRead()
// procedure is slower!
//uint8_t IRpin = 2;
// Digital pin #2 is the same as Pin D2 see
// for the 'raw' pin mapping
#define IRpin_PIN PIND
#define IRpin 2
// for MEGA use these!
//#define IRpin_PIN PINE
//#define IRpin 4

// the maximum pulse we'll listen for - 65 milliseconds is a long time
#define MAXPULSE 65000

// what our timing resolution should be, larger is better
// as its more 'precise' - but too large and you wont get
// accurate timing
#define RESOLUTION 20

// we will store up to 100 pulse pairs (this is -a lot-)
uint16_t pulses[100][2]; // pair is high and low pulse
uint8_t currentpulse = 0; // index for pulses we're storing

void setup(void) {
  Serial.println("Ready to decode IR!");

void loop(void) {
  uint16_t highpulse, lowpulse; // temporary storage timing
  highpulse = lowpulse = 0; // start out with no pulse length
// while (digitalRead(IRpin)) { // this is too slow!
    while (IRpin_PIN & (1 << IRpin)) {
     // pin is still HIGH

     // count off another few microseconds

     // If the pulse is too long, we 'timed out' - either nothing
     // was received or the code is finished, so print what
     // we've grabbed so far, and then reset
     if ((highpulse >= MAXPULSE) && (currentpulse != 0)) {
  // we didn't time out so lets stash the reading
  pulses[currentpulse][0] = highpulse;
  // same as above
  while (! (IRpin_PIN & _BV(IRpin))) {
     // pin is still LOW
     if ((lowpulse >= MAXPULSE) && (currentpulse != 0)) {
  pulses[currentpulse][1] = lowpulse;

  // we read one high-low pulse successfully, continue!

void printpulses(void) {
  Serial.println("\n\r\n\rReceived: \n\rOFF \tON");
  for (uint8_t i = 0; i < currentpulse; i++) {
    Serial.print(pulses[i][0] * RESOLUTION, DEC);
    Serial.print(" usec, ");
    Serial.print(pulses[i][1] * RESOLUTION, DEC);
    Serial.println(" usec");
  // print it in a 'array' format
  Serial.println("int IRsignal[] = {");
  Serial.println("// ON, OFF (in 10's of microseconds)");
  for (uint8_t i = 0; i < currentpulse-1; i++) {
    Serial.print("\t"); // tab
    Serial.print(pulses[i][1] * RESOLUTION / 10, DEC);
    Serial.print(", ");
    Serial.print(pulses[i+1][0] * RESOLUTION / 10, DEC);
  Serial.print("\t"); // tab
  Serial.print(pulses[currentpulse-1][1] * RESOLUTION / 10, DEC);
  Serial.print(", 0};");

Post a link to the phototransistor data sheet and a photo of a hand-drawn sketch of how you wired everything, being careful to label the leads of the phototransistor properly.

Describe what you mean by “nothing seems to work”. What actually happens when you run the program?

Questions? Read the “How to use this forum” post and follow the directions.

The IR Receiver is VS 1838B. Wire: Red 5V, Black GND, Brown Signal.

When i run the program and open the serial monitor i only get the message "Ready to decode IR!" At this point im using a tv remote to check the read, but i dont get any read!

Using the same setup and the built in example in Arduino, and i get a read.

Well Good news. It works again.

I dont know exactly what it was but when i started playing with the RESOLUTION value it started working for me again, even when i set it back to the original resolution.