![]() |
WPILib and Ultrasonic sensors
Ok, I have an easy one.
I am trying to get ultrasonic sensors to work on a Vex using WPILib. This is my code: Code:
#define _VEX_BOARDDo I need to set port direction (tried that, didn't work, maybe I did it wrong)? Does it have something to do with DefineControllerIO()? Is it a conspiracy? I just don't know. |
Re: WPILib and Ultrasonic sensors
Assuming you're using the Vex Ultrasonic sensor, then the input(echo, sensor output) and output(ping, sensor input) ports should be different.
If you're using non-vex sensors you may need to use the analog input, and bypass the wpilib functions. |
Re: WPILib and Ultrasonic sensors
Thank you for the response. Using vex sensors. The echo is on (interrupt port 1), and the ping is on (analog/digital port 1). Also, I have tried it with echo=1 and ping = 1 -11.
The current configuration is the one that worked in RobotC. I have not changed the sensor's wiring. |
Re: WPILib and Ultrasonic sensors
Quote:
I don't see any obvious problems with the code. Hopefully someone who has more experiance with WPILib/RobotC can answer your question. |
Re: WPILib and Ultrasonic sensors
By default
Ports 1-4 Are Assigned to Analog Inputs Ports 5-10 Are Assigned Digital Inputs Ports 11-16 Are Assigned Digital Ouputs So you either need to re-assign that port (see documentation) or move the pulse port to I/O Port 11 or higher. |
Re: WPILib and Ultrasonic sensors
Quote:
Thanks, I guess I didn't see that in the documentation. However, I did try moving the input connection to Digital Output 11 and 16, with no change in results. Well, not exactly . . . once when I turned the Vex back on to upload a code modification it started outputting the Ultrasonic value to the terminal. It did it really fast as well, instead of the slow crawl it does when it is not working. I really wish I knew what was going on here. {End post} Umm, what ... I am now confused and mystified. It works now. Sort of. Here is what happened... 1) changed #define UltraOnePing from '1' to '11' 2) moved 'input' from port 1 to port 11 3) uploaded code 4) nuthin' ... 5) changed #define UltraPingOne from '11' to '16' 6) moved 'input' from port 11 to port 16 7) uploaded code -->terminal popped up while uploading and Vex was outputting expected values, upload completed, no more good output. 8) Wrote response on CD...had a thought. 9)changed #define UltraPingOne back to '11' 10) left 'input' plugged into port 16 11) uploaded code 12) Now it works. If I set the Ping port to 11 and plug the wire into port 16 it works. The echo (output) wire is still plugged in to interrupt port 1. I have nothing more to say about that. |
Re: WPILib and Ultrasonic sensors
Try this.
Code:
#define _VEX_BOARDDefineControllerIO ( 4, 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ) ; 4 = Number Of Analog Ports //First ports are always analog 1 = Input 0 = Output |
Re: WPILib and Ultrasonic sensors
Thanks again. I still am reading off of port 16 when port 11 is what is in the code. Also, it seems that is the only configuration I can find that works.
It is odd. |
| All times are GMT -5. The time now is 21:46. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi