SHARE
TWEET

Java code for REV Digit Board for FRC

a guest Jan 27th, 2016 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package org.usfirst.frc.team3216.robot;
  2.  
  3. import edu.wpi.first.wpilibj.I2C;
  4. import edu.wpi.first.wpilibj.Timer;
  5. import edu.wpi.first.wpilibj.I2C.Port;
  6. import edu.wpi.first.wpilibj.DigitalInput;
  7. import edu.wpi.first.wpilibj.AnalogInput;
  8.  
  9. import java.util.*;
  10.  
  11. public class REVDigitBoard {
  12.     /*
  13.      * DOCUMENTATION::
  14.      *
  15.      * REVDigitBoard() : constructor
  16.      * void display(String str) : displays the first four characters of the string (only alpha (converted to uppercase), numbers, and spaces)
  17.      * void display(double batt) : displays a decimal number (like battery voltage) in the form of 12.34 (ten-one-decimal-tenth-hundredth)
  18.      * void clear() : clears the display
  19.      * boolean getButtonA() : button A on the board
  20.      * boolean getButtonB() : button B on the board
  21.      * double getPot() : potentiometer value
  22.      */
  23.    
  24.     I2C i2c;
  25.     DigitalInput buttonA, buttonB;
  26.     AnalogInput pot;
  27.    
  28.     byte[][] charreg;
  29.     Map charmap;
  30.    
  31.     REVDigitBoard() {
  32.         i2c = new I2C(Port.kMXP, 0x70);
  33.         buttonA = new DigitalInput(19);
  34.         buttonB = new DigitalInput(20);
  35.         pot = new AnalogInput(3);
  36.        
  37.         byte[] osc = new byte[1];
  38.         byte[] blink = new byte[1];
  39.         byte[] bright = new byte[1];
  40.         osc[0] = (byte)0x21;
  41.         blink[0] = (byte)0x81;
  42.         bright[0] = (byte)0xEF;
  43.  
  44.         i2c.writeBulk(osc);
  45.         Timer.delay(.01);
  46.         i2c.writeBulk(bright);
  47.         Timer.delay(.01);
  48.         //i2c.writeBulk(blink);
  49.         Timer.delay(.01);
  50.        
  51.         charreg = new byte[37][2]; //charreg is short for character registry
  52.         charmap = new HashMap<Character, Integer>();
  53.        
  54.         charreg[0][0] = (byte)0b00111111; charreg[9][1] = (byte)0b00000000; //0
  55.         charmap.put('0',0);
  56.         charreg[1][0] = (byte)0b00000110; charreg[0][1] = (byte)0b00000000; //1
  57.         charmap.put('1',1);
  58.         charreg[2][0] = (byte)0b11011011; charreg[1][1] = (byte)0b00000000; //2
  59.         charmap.put('2',2);
  60.         charreg[3][0] = (byte)0b11001111; charreg[2][1] = (byte)0b00000000; //3
  61.         charmap.put('3',3);
  62.         charreg[4][0] = (byte)0b11100110; charreg[3][1] = (byte)0b00000000; //4
  63.         charmap.put('4',4);
  64.         charreg[5][0] = (byte)0b11101101; charreg[4][1] = (byte)0b00000000; //5
  65.         charmap.put('5',5);
  66.         charreg[6][0] = (byte)0b11111101; charreg[5][1] = (byte)0b00000000; //6
  67.         charmap.put('6',6);
  68.         charreg[7][0] = (byte)0b00000111; charreg[6][1] = (byte)0b00000000; //7
  69.         charmap.put('7',7);
  70.         charreg[8][0] = (byte)0b11111111; charreg[7][1] = (byte)0b00000000; //8
  71.         charmap.put('8',8);
  72.         charreg[9][0] = (byte)0b11101111; charreg[8][1] = (byte)0b00000000; //9
  73.         charmap.put('9',9);
  74.  
  75.         charreg[10][0] = (byte)0b11110111; charreg[10][1] = (byte)0b00000000; //A
  76.         charmap.put('A',10);
  77.         charreg[11][0] = (byte)0b10001111; charreg[11][1] = (byte)0b00010010; //B
  78.         charmap.put('B',11);
  79.         charreg[12][0] = (byte)0b00111001; charreg[12][1] = (byte)0b00000000; //C
  80.         charmap.put('C',12);
  81.         charreg[13][0] = (byte)0b00001111; charreg[13][1] = (byte)0b00010010; //D
  82.         charmap.put('D',13);
  83.         charreg[14][0] = (byte)0b11111001; charreg[14][1] = (byte)0b00000000; //E
  84.         charmap.put('E',14);
  85.         charreg[15][0] = (byte)0b11110001; charreg[15][1] = (byte)0b00000000; //F
  86.         charmap.put('F',15);
  87.         charreg[16][0] = (byte)0b10111101; charreg[16][1] = (byte)0b00000000; //G
  88.         charmap.put('G',16);
  89.         charreg[17][0] = (byte)0b11110110; charreg[17][1] = (byte)0b00000000; //H
  90.         charmap.put('H',17);
  91.         charreg[18][0] = (byte)0b00001001; charreg[18][1] = (byte)0b00010010; //I
  92.         charmap.put('I',18);
  93.         charreg[19][0] = (byte)0b00011110; charreg[19][1] = (byte)0b00000000; //J
  94.         charmap.put('J',19);
  95.         charreg[20][0] = (byte)0b01110000; charreg[20][1] = (byte)0b00001100; //K
  96.         charmap.put('K',20);
  97.         charreg[21][0] = (byte)0b00111000; charreg[21][1] = (byte)0b00000000; //L
  98.         charmap.put('L',21);
  99.         charreg[22][0] = (byte)0b00110110; charreg[22][1] = (byte)0b00000101; //M
  100.         charmap.put('M',22);
  101.         charreg[23][0] = (byte)0b00110110; charreg[23][1] = (byte)0b00001001; //N
  102.         charmap.put('N',23);
  103.         charreg[24][0] = (byte)0b00111111; charreg[24][1] = (byte)0b00000000; //O
  104.         charmap.put('O',24);
  105.         charreg[25][0] = (byte)0b11110011; charreg[25][1] = (byte)0b00000000; //P
  106.         charmap.put('P',25);
  107.         charreg[26][0] = (byte)0b00111111; charreg[26][1] = (byte)0b00001000; //Q
  108.         charmap.put('Q',26);
  109.         charreg[27][0] = (byte)0b11110011; charreg[27][1] = (byte)0b00001000; //R
  110.         charmap.put('R',27);
  111.         charreg[28][0] = (byte)0b10001101; charreg[28][1] = (byte)0b00000001; //S
  112.         charmap.put('S',28);
  113.         charreg[29][0] = (byte)0b00000001; charreg[29][1] = (byte)0b00010010; //T
  114.         charmap.put('T',29);
  115.         charreg[30][0] = (byte)0b00111110; charreg[30][1] = (byte)0b00000000; //U
  116.         charmap.put('U',30);
  117.         charreg[31][0] = (byte)0b00110000; charreg[31][1] = (byte)0b00100100; //V
  118.         charmap.put('V',31);
  119.         charreg[32][0] = (byte)0b00110110; charreg[32][1] = (byte)0b00101000; //W
  120.         charmap.put('W',32);
  121.         charreg[33][0] = (byte)0b00000000; charreg[33][1] = (byte)0b00101101; //X
  122.         charmap.put('X',33);
  123.         charreg[34][0] = (byte)0b00000000; charreg[34][1] = (byte)0b00010101; //Y
  124.         charmap.put('Y',34);
  125.         charreg[35][0] = (byte)0b00001001; charreg[35][1] = (byte)0b00100100; //Z
  126.         charmap.put('Z',35);
  127.         charreg[36][0] = (byte)0b00000000; charreg[36][1] = (byte)0b00000000; //space
  128.         charmap.put(' ',36);
  129.     }
  130.    
  131.     void display(String str) { // only displays first 4 chars
  132.         int[] charz = new int[4];
  133.         // uppercase and map it
  134.         str = repeat(' ',Math.max(0, 4-str.length())) + str.toUpperCase(); // pad it to 4 chars
  135.        
  136.         for (int i = 0; i < 4; i++) {
  137.             Integer g = (int) charmap.get(str.charAt(i));
  138.             if (g == null) {
  139.                 g = 36;
  140.             }
  141.             charz[i] = g;
  142.         }
  143.         this._display(charz);
  144.     }
  145.    
  146.     void display(double batt) { // optimized for battery voltage, needs a double like 12.34
  147.         int[] charz = {36,36,36,36};
  148.         // idk how to decimal point
  149.         int ten = (int)(batt/10);
  150.         int one = (int)(batt%10);
  151.         int tenth = (int)((batt*10)%10);
  152.         int hundredth = (int)((batt*100)%10);
  153.        
  154.         if (ten != 0) charz[0] = ten;
  155.         charz[1] = one;
  156.         charz[2] = tenth;
  157.         charz[3] = hundredth;
  158.        
  159.         this._display(charz);
  160.     }
  161.    
  162.      void clear() {
  163.          int[] charz = {36,36,36,36}; // whyy java
  164.          this._display(charz);
  165.      }
  166.      
  167.      boolean getButtonA() {
  168.          return buttonA.get();
  169.      }
  170.      boolean getButtonB() {
  171.          return buttonB.get();
  172.      }
  173.      double getPot() {
  174.          return pot.getVoltage();
  175.      }
  176.    
  177. ////// not supposed to be publicly used..
  178.    
  179.     void _display(int[] charz) {
  180.         byte[] byte1 = new byte[10];
  181.         byte1[0] = (byte)(0b0000111100001111);
  182.         byte1[2] = charreg[charz[3]][0];
  183.         byte1[3] = charreg[charz[3]][1];
  184.         byte1[4] = charreg[charz[2]][0];
  185.         byte1[5] = charreg[charz[2]][1];
  186.         byte1[6] = charreg[charz[1]][0];
  187.         byte1[7] = charreg[charz[1]][1];
  188.         byte1[8] = charreg[charz[0]][0];
  189.         byte1[9] = charreg[charz[0]][1];
  190.         //send the array to the board
  191.         i2c.writeBulk(byte1);
  192.         Timer.delay(0.01);
  193.     }
  194.    
  195.     String repeat(char c, int n) {
  196.         char[] arr = new char[n];
  197.         Arrays.fill(arr, c);
  198.         return new String(arr);
  199.     }
  200.    
  201. }
RAW Paste Data
Top