|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
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_BOARD
#include "API.h"
#include "BuiltIns.h"
#define UltraOnePing 1
#define UltraOneEcho 1
int sonicValue;
void main(void){
StartUltrasonic(UltraOneEcho, UltraOnePing);
PrintToScreen("Start");
while(1==1)
{
sonicValue = GetUltrasonic(UltraOneEcho, UltraOnePing);
PrintToScreen("Ultra returns %d. \n", sonicValue);
}
}
Do 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. Last edited by DanielR. : 17-06-2008 at 12:59. |
|
#2
|
||||
|
||||
|
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. |
|
#3
|
|||
|
|||
|
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. |
|
#4
|
||||
|
||||
|
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. |
|
#5
|
||||
|
||||
|
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. |
|
#6
|
|||
|
|||
|
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. |
|
#7
|
||||
|
||||
|
Re: WPILib and Ultrasonic sensors
Try this.
Code:
#define _VEX_BOARD
#include "API.h"
#include "BuiltIns.h"
#define UltraOnePing 11
#define UltraOneEcho 1
int sonicValue;
void main(void){
DefineControllerIO ( 4, 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ) ;
StartUltrasonic(UltraOneEcho, UltraOnePing);
PrintToScreen("Start");
while(1==1)
{
sonicValue = GetUltrasonic(UltraOneEcho, UltraOnePing);
Wait(1);
PrintToScreen("Ultra returns %d. \n", sonicValue);
}
}
DefineControllerIO ( 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 Last edited by Kingofl337 : 18-06-2008 at 16:47. |
|
#8
|
|||
|
|||
|
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. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Parallax and Maxbotix ultrasonic sensors | Lucretius | Programming | 5 | 20-02-2008 14:34 |
| Ultrasonic sensors on digital ports 3-6 problems | wt200999 | Programming | 14 | 13-02-2008 08:13 |
| Ultrasonic range sensors for Vex Robot | OneCoolDude | Programming | 1 | 01-12-2007 09:22 |
| can we use ultrasonic sensors? | GMKlenklen | Electrical | 20 | 15-01-2007 14:34 |
| Gryo, Camera, Accelorometer, Ultrasonic, and Gear Tooth Sensors in one program | EHaskins | Programming | 8 | 22-05-2006 12:08 |