Weak IR signal for infrared RC toy

You have to see pulse trains of 38 kHz if you continue sending a code. The level should switch between GND and Vcc.

I explicitly set it to OUTPUT in the setup() function

This is the test code I am using:

#define IR_SEND_PIN 3
//#define SEND_PWM_BY_TIMER

#include <IRremote.hpp>

uint16_t data[33] = {1980, 370, 980,370, 530,370, 480,370, 530,320, 530,320, 580,320, 530,320, 530,320, 1030,320, 530,370, 1030,320, 530,320, 530,320, 580,320, 480,370, 480};

void setup()
{
  pinMode(IR_SEND_PIN, OUTPUT);

  IrSender.begin();
  // digitalWrite(IR_SEND_PIN, HIGH);
}

void loop() {
  IrSender.sendRaw(data, sizeof(data) / sizeof(data[0]), 38);
  // delay(40);
}

And this is the basic test setup. I only have the oscilloscope probe connected to pin 3 and the oscilloscope ground connected to the Arduino ground.



Arghh! I don't think I was sampling fast enough!

Right.

I cannot interpret the numbers on your screenshog but I see that your signal has 5 Vpp.

First, your code tries to repeat the transmission every 40ms, which is 25 times per second. Perhaps the receiver is confused by that. You might try moving the transmission up into Setup so it only runs once, at least until you get this working.

Do we know 38KHz is the right frequency?

The raw data looks a bit ragged to me. Does anyone know what the protocol is supposed to be?

There exists any number of protocols.