Create a complete, interactive p5.js sketch based on these detailed specifications:

```json
{
  "SIMULATION": "Lenz's Law Interactive Demonstration",
  "CONTROLS": [
    {
      "type": "Slider",
      "name": "Magnetic Field Strength (B)",
      "variable": "B_field_strength",
      "min": 0.0,
      "max": 5.0,
      "default": 1.0,
      "step": 0.1,
      "description": "Controls the strength of the external magnetic field."
    },
    {
      "type": "Slider",
      "name": "Coil Resistance (R)",
      "variable": "coil_resistance",
      "min": 0.1,
      "max": 5.0,
      "default": 1.0,
      "step": 0.1,
      "description": "Controls the electrical resistance of the conducting coil."
    },
    {
      "type": "Slider",
      "name": "Coil Inductance (L)",
      "variable": "coil_inductance",
      "min": 0.1,
      "max": 5.0,
      "default": 1.0,
      "step": 0.1,
      "description": "Controls the inductance of the conducting coil."
    },
    {
      "type": "Slider",
      "name": "Coil Area (A)",
      "variable": "coil_area",
      "min": 50.0,
      "max": 200.0,
      "default": 100.0,
      "step": 1.0,
      "description": "Controls the area of the conducting coil (radius, since it's circular)."
    },
    {
      "type": "Slider",
      "name": "B Field Change Rate (dB/dt)",
      "variable": "dB_dt",
      "min": -2.0,
      "max": 2.0,
      "default": 0.5,
      "step": 0.1,
      "description": "Controls how fast the magnetic field is changing. Positive values increase the field, negative decrease."
    },
    {
      "type": "Button",
      "label": "Reset Simulation",
      "function": "resetSimulation",
      "description": "Resets the simulation to its initial state."
    },
    {
      "type": "Button",
      "label": "Toggle Pause/Play",
      "function": "togglePause",
      "description": "Pauses or resumes the simulation."
    }
  ],
  "VISUALS": {
    "Magnetic Field": {
      "type": "Arrows",
      "color": "blue",
      "density": 15,
      "length": 15,
      "spacing": 25,
      "direction": "Up/Down (depending on B_field_strength)",
      "description": "Represent the external magnetic field. Density and length are fixed. Direction depends on the sign of B_field_strength. If B_field_strength is positive, the arrows point upwards; if negative, downwards. The arrows' starting positions should be procedurally generated, centered horizontally and vertically on the canvas. Draw these behind the coil."
    },
    "Conducting Coil": {
      "type": "Circle",
      "color": "red",
      "x": "Canvas width / 2",
      "y": "Canvas height / 2",
      "radius": "coil_area / PI",
      "strokeWeight": 3,
      "description": "Represents the conducting coil. Located at the center of the canvas. The radius is determined by the 'coil_area' control using the formula area= PI * r^2. The x and y coordinates are fixed at the center."
    },
    "Induced Current": {
      "type": "Arrows",
      "color": "yellow",
      "description": "Visualize the induced current flowing in the coil. Draw small arrows around the coil. The number of arrows should be fixed (e.g., 12). The direction of the arrows depends on the direction of the induced current (see PHYSICS section). Animate the arrows by moving them around the coil. Consider showing the direction change clearly."
    },
    "Voltmeter": {
      "type": "Text",
      "x": "50",
      "y": "30",
      "color": "black",
      "size": 16,
      "alignment": "left",
      "text": "Induced Voltage: [Value] V",
      "description": "Displays the induced voltage. The value should be dynamically updated based on the physics calculations. Two decimal places."
    },
    "Ammeter": {
      "type": "Text",
      "x": "50",
      "y": "60",
      "color": "black",
      "size": 16,
      "alignment": "left",
      "text": "Induced Current: [Value] A",
      "description": "Displays the induced current. The value should be dynamically updated based on the physics calculations. Two decimal places."
    },
    "Direction Indicator": {
        "type": "Text",
        "x": "Canvas Width - 50",
        "y": "30",
        "color": "black",
        "size": 16,
        "alignment": "right",
        "text": "B Field Increasing/Decreasing",
        "description": "Text indicator that displays whether the B field is increasing or decreasing based on dB_dt value. Make font bold."

    }
  },
  "PHYSICS": {
    "Lenz's Law": {
      "description": "Lenz's Law states that the direction of the induced current in a circuit is such that it opposes the change in magnetic flux that produces it.",
      "formulae": [
        "Induced Voltage (Emf) = -N * dΦ/dt",
        "Magnetic Flux (Φ) = B * A * cos(θ)",
        "Induced Current (I) = Emf / R",
        "Direction of current opposes change in B"
      ],
      "implementation": [
        "Assume N (number of turns in the coil) = 1 and theta (angle between B field and area vector) is 0 for simplicity.  Therefore, cos(θ) = 1.",
        "Calculate the magnetic flux: Φ = B_field_strength * coil_area.",
        "Calculate the rate of change of magnetic flux: dΦ/dt = dB_dt * coil_area.",
        "Calculate the induced voltage (Emf): Emf = -1 * dΦ/dt (use N=1 from assumption).",
        "Calculate the induced current: I = Emf / coil_resistance.",
        "Determine the direction of the induced current: If dB_dt > 0, the induced current should create a magnetic field opposing the increase in the external field (clockwise, considering the field initially pointing upwards). If dB_dt < 0, the induced current should create a magnetic field opposing the decrease in the external field (counter-clockwise). Use this to determine arrow directions in the 'Induced Current' visualization. When dB_dt == 0, I should be 0 and no induced current should be shown.",
        "The direction of the induced magnetic field is governed by the right-hand rule. If the thumb points in the direction of the induced magnetic field, the curled fingers indicate the direction of the induced current."
      ]
    }
  },
  "USER INTERACTIONS": {
    "None": "No mouse or keyboard interactions beyond the UI controls are required."
  }
}
```

Requirements:
- Include both setup() and draw() functions
- Use createCanvas(400, 400) to set canvas size
- Implement ALL specified controls (sliders, buttons) using p5.js GUI libraries or simple implementations
- Add all visual elements as described
- Implement the physics/logic accurately
- Include all specified user interactions
- Add clear comments explaining the code
- Make it educational and visually appealing
- Ensure smooth animations and responsive controls

IMPORTANT: Only output the JavaScript code, no explanations or markdown formatting. The code should be self-contained and runnable in the p5.js editor with all interactive controls working.