Hi Jeff
One possibility that comes to mind is port configuration, if you haven't done it -
From the Bpod console window, open the settings menu and choose the port icon to configure ports.
Make sure the ports you have connected are checked, and the ports you don't have connected are unchecked.
I'm planning to upload a bench-testing video to the wiki in the near future, to make the procedure as clear as possible. I will also add a much more rigorous (albeit complicated) routine, that asserts robustness of each event (thousands of trials) with a data acquisition board.
For the time being, do the following:
[b]Setup
- - Connect a BNC to bare-wire breakout (or a probe on 1X) to an oscilloscope, and view the channel with DC coupling, 1ms per div, 5V per div. Set the trigger to "Normal", and the threshold to ~2.5V.
- - Connect a Bpod shield to an Arduino Leonardo and upload the "Blink-server" sketch in /Bpod/Firmware/SerialBlinkServer. Then unplug the Leonardo and put it aside.
- - Connect a Bpod mouse port and solenoid valve to a port interface board. All three should be known-good.
- Connect the interface board + valve + port to Bpod with a known-good Ethernet cable.
- - Run Bpod
- - From the Settings menu, select the "Port" icon, and check the port that is plugged in. All other channels should be unchecked.
[b]Ports
- - From the Bpod console, click the "H2O" button, corresponding to the connected port. The valve should open each time the button is pressed, and close when depressed. (with your mouse, click to press and click again to depress).
-From the Bpod console, click the "LED" button. The port light should turn on with each press, and off with each depress.
-Run the "operant" protocol from the console, using "dummy subject" and "default settings". Break the port photogate with an opaque object, and observe the "poke" icon on the console. It should turn green when the object is inside the port, and red when it is outside. The "Last Event" should display "Port1In" when the object enters, and "Port1Out" when it leaves. There should be no spurious pokes on any of the ports.
- - Repeat this process for the next 7 ports. Each time, update Settings > Port to make sure only the connected poke is checked. If you have more than 1 port, proceed in parallel.
[b]Sync port
-Connect the oscilloscope BNC wire ground to the right-most spring terminal ground.
-Run /Bpod/Functions/Example Matrices/Cycle_128_States.m. This will generate a state matrix with 128 states.
-Upload the state matrix: SendStateMatrix(sma);
-Run the state matrix: RunStateMatrix;
-Each time you run the state matrix, the system passes through 128 states for 1ms each.
-Touch the signal pin of the BNC probe to each pin on the RJ45 connector, accessed from the top. The left-most pin is ground, and should have no signal when you run the matrix. The next pin is bit 1, which should go high every 2ms. The next is bit 2; 4ms... and so forth until the right most pin, bit 7. If all pins have the correct signal reliably, the sync port is working.
[b]Hardware serial ports
-Connect Arduino Leonardo to power, and connect an Ethernet cable between the Bpod Arduino shield and Serial port 1. Reboot Leonardo with the "reset" button.
-Run /Bpod/Functions/Example Matrices/TriggerSerialDevice.m
-Run SendStateMatrix(sma);
-When you run the state matrix, you should see the LED on Arduino Leonardo flash twice, indicating that byte "2" was received.
-Plug Leonardo into Serial port 2. When you run the state matrix, it should flash 4 times, indicating that byte "4" was received.
[b]BNC and wire terminal outputs
-Connect the BNC outputs to the oscilloscope, and toggle them with the BNC Override > Out buttons on the Bpod console. You should see 5V when high, and 0V when low.
-Connect each wire terminal output (spring terminals 2-5 from the left) to the oscilloscope and override them from the console. You should see 3.3V when high and 0V when low.
[b]BNC and wire terminal inputs
-Connect a TTL source (we use Pulse Pal) to Bpod's BNC input channel 1.
-Run the Operant protocol.
-You should see the BNC 1 icon turn green each time the BNC line is high, and "Last Event" should display "BNC1High".
-Repeat for BNC input 2.
-To test the wire input channels (also 5V tolerant), select each one from Console > Settings > Port, and un-check all others. Then repeat the BNC input channel test.
I hope this helps. It isn't ideal by any means, but it should at least verify that everything is soldered correctly. If you continue to have trouble, please post here and we'll figure it out!