GUIboard.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package weerstation;
  2. public class GUIboard {
  3. public static void writeUpperDigits(double number){
  4. writeDigits(number, 0x10, 0x18);
  5. }
  6. public static void writeLeftDigits(double number){
  7. writeDigits(number, 0x20, 0x24);
  8. }
  9. public static void writeRightDigits(double number){
  10. writeDigits(number, 0x30, 0x34);
  11. }
  12. private static void writeDigits(double number, int firstSegment, int lastSegment){
  13. //Segments
  14. int segA = 0x01;
  15. int segB = 0x02;
  16. int segC = 0x04;
  17. int segD = 0x08;
  18. int segE = 0x10;
  19. int segF = 0x20;
  20. int segG = 0x40;
  21. int segDP = 0x80;
  22. //Digits
  23. int[] digits = {
  24. segA | segB | segC | segD | segE | segF, //0
  25. segB | segC, //1
  26. segA | segB | segG | segE | segD, //2
  27. segA | segB | segC | segF | segD, //3
  28. segB | segC | segF | segG | segC, //4
  29. segA | segF | segG | segC | segD, //5
  30. segA | segF | segG | segC | segD | segE, //6
  31. segA | segB | segC, //7
  32. segDP - 1, //8
  33. segA | segF | segG | segC | segD | segB, //9
  34. };
  35. int digit = firstSegment;
  36. IO.writeShort(0x10, 0); //default value
  37. String numberString = String.valueOf(number);;
  38. char numberSplit[] = numberString.toCharArray();
  39. for(int i = numberSplit.length-1; i >= 0; i--){
  40. if(numberSplit[i] == '.'){
  41. IO.writeShort(digit, digits[(Character.getNumericValue(numberSplit[i - 1]))]|0x180); //display a . with the next number
  42. i--;
  43. }else if(numberSplit[i] == '-'){
  44. IO.writeShort(digit, 0x140); //will display a -
  45. }else{
  46. IO.writeShort(digit, Character.getNumericValue(numberSplit[i]));
  47. }
  48. digit += 2; //Next digits screen
  49. if(digit > lastSegment){ //If there are more then max digits needed, it will stop.
  50. break;
  51. }
  52. }
  53. }
  54. }