Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   FRC Control System (http://www.chiefdelphi.com/forums/forumdisplay.php?f=176)
-   -   Driver Station Usb (http://www.chiefdelphi.com/forums/showthread.php?t=77903)

biojae 04-08-2009 02:37

Re: Driver Station Usb
 
simple test program for arduino which i am using for the pots right now

Code:

#include <Wire.h>

void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
}

byte value = 0;
byte ch1 = 0x28;
byte ch2 = 0x29;
byte pot1 = 0xA9;
byte pot2 = 0xAA;

void loop()
{
 writePot(ch1, pot1, value);
 writePot(ch1, pot2, value);
 writePot(ch2, pot1, value);
 writePot(ch2, pot2, value);

  value++;        // increment value
  if(value == 256)
  {
    value = 0;    // start over from lowest value
  }
  delay(100);
}

void writePot(int chip, int pot, int val)
{
  Wire.beginTransmission(chip); // transmit to device 0x28)
  Wire.send(pot);            // sends instruction byte,
                              // write to potentiometer-0
  Wire.send(val);            // sends potentiometer value byte
  Wire.endTransmission();    // stop transmitting
}


biojae 04-08-2009 19:18

Re: Driver Station Usb
 
here is the code for the arduino, the touchscreen has its own processor that talks over ttl serial to the arduino
the arduino takes the output from the screen to the DS io pins

Code:

#include <Wire.h>
#include <AFSoftSerial.h>
#define rxPin 3
#define txPin 2

AFSoftSerial touchscreen = AFSoftSerial(rxPin, txPin);

byte ch1 = 0x28;
byte ch2 = 0x29;
byte pot1 = 0xA9;
byte pot2 = 0xAA;

int stopPin = 4, newData = 5, validRx = 6;

void setup()
{
  pinMode(rxPin, INPUT);//set recieve as an input
  pinMode(txPin, OUTPUT);//set transmit as an output
  pinMode(stopPin, OUTPUT);
  pinMode(newData, OUTPUT);
  pinMode(validRx, INPUT);
  touchscreen.begin(9600);
  Wire.begin(); // join i2c bus (address optional for master)
}

int points = 0;
bool stop = false;

void loop()
{
  int x = 0, y = 0;
  boolean recieved = digitalRead(validRx);
  boolean changePoint = touchscreen.available() >= 2
              && (recieved || points == 0)
              && !stop;
 
  if(stop){
    digitalWrite(newData, LOW);
    digitalWrite(stopPin, HIGH);
  }           
 
  if(recieved){
      digitalWrite(newData, LOW);
      delay(100);
  }
 
  if(changePoint)
  {
    x = touchscreen.read();
    y = touchscreen.read();
    if(touchscreen.available() == 1 && touchscreen.read() == 's')
          stop = true;
         
    points++;
   
    if(points >= 50)
          stop = true;
     
    writePot(ch1, pot1, x * 2);
    writePot(ch1, pot2, y * 2); //
    writePot(ch2, pot1, points * 5); // point num
    digitalWrite(newData, HIGH);
  } 
 
}

void writePot(int chip, int pot, int val)
{
  Wire.beginTransmission(chip); // transmit to device 0x28)
  Wire.send(pot);            // sends instruction byte,
                              // write to potentiometer-0
  Wire.send(val);            // sends potentiometer value byte
  Wire.endTransmission();    // stop transmitting
}


biojae 05-08-2009 20:50

Re: Driver Station Usb
 
1 Attachment(s)
digi pots on breadboard, just waiting to be soldered

biojae 12-08-2009 01:32

Re: Driver Station Usb
 
1 Attachment(s)
now all thats missing is the screen and prototyping shield

The Pwm wires plug into the drivers station, which go to a db9 connector. the db9 is used so that the drivers dont have to unplug the PWMs to take it out of the box for strategy planning. because i would imagine that the pwms could get plugged in incorrectly and fry the screen :(

biojae 12-08-2009 18:45

Re: Driver Station Usb
 
The Pwm cords go to the driverstation, the serial port to the screen

(and i just noticed how far away from USB I've gotten, the title is definatly incorrect)

The parts are definatly shipped :D


All times are GMT -5. The time now is 02:41.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi