-
Notifications
You must be signed in to change notification settings - Fork 5
Limitation
- Maximum memory size of a task is 20 States for UNO based backend. You can code more States (may be 80) using Arduino Mega2560 for backend.
- ArControl could only receive and generate simple TTL signals with ± 1ms discrepancy.
- ArControl can NOT record greater than 200 Hz input signals (UNO backend). Besides, Mega2560 is much slower than UNO for backend.
- ArControl can NOT handle visual signal processes and complicated interactions with computers.
(1) Since the UNO is in the low end among the Arduino family, the maximum memory size of a behavioral task was 20 States. I've made adaptation for higher end boards, the Mega2560, that would enhance the performance of ArControl. Mega2560 has more RAM to store States, but runs slower than UNO. To simplify, I just utilize the same number of INPUTS and OUTPUTS of Mega2560 as the UNO.
(2) Since the input and the output ports are ruled as TTL signals, the ArControl could only receive and generate simple signals. If users require a complicated output pattern, a better choice would be to design an extra signal generator, which could be connected to the ArControl through TTL communications.
(3) The light DAQ module, which was a plug-in of the ArControl Level 3, was limited in that it could not record greater than 200 Hz input signals. Otherwise, users should use a professional DAQ system and then perform hardware synchronization through a ready interface of ArControl.
(4) The ArControl was incompetent for profound behavioral tasks, which required complicated interactions with computers or required visual signal processes. In this case, other toolboxes (Rose et al., 2008) were recommended.
(5) The KEEPON, BLINK, WHENTIME has the ± 1ms discrepancy. For example if you KEEPON the OUTPIN2 for 100ms, it will get 99~101ms in practice. If you do want more <1ms discrepancy, you need change the do-var, at the cost of undermining other ArControl functions.
digitalWrite(OUTPIN2, HIGH);
delayMicroseconds(100*1000); //100ms
digitalWrite(OUTPIN2, LOW);