Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. package varintunnistus;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5.  
  6. import lejos.hardware.ev3.LocalEV3;
  7. import lejos.hardware.port.Port;
  8. import lejos.hardware.sensor.EV3ColorSensor;
  9. import lejos.hardware.sensor.EV3IRSensor;
  10. import lejos.hardware.sensor.EV3TouchSensor;
  11. import lejos.hardware.sensor.SensorModes;
  12. import lejos.robotics.SampleProvider;
  13. import lejos.utility.Delay;
  14.  
  15. public class Ohjelma {
  16.  
  17. private final static String VARIANTURI_PORTTI = "S2";
  18. private final static String KOSKETUSANTURI_PORTTI = "S1";
  19. private final static String INFRAPUNA_PORTTI = "S4";
  20. private final static String HAETTU_VARI = "punainen";
  21.  
  22. private static Aja aja;
  23. private static ArrayList<Vari> varit;
  24.  
  25. public static void main(String[] args) {
  26. aja = new Aja();
  27. varit = new ArrayList<>();
  28.  
  29. Port colorPort = LocalEV3.get().getPort(VARIANTURI_PORTTI);
  30. SensorModes colorSensor = new EV3ColorSensor(colorPort);
  31. EV3ColorSensor cs = (EV3ColorSensor) colorSensor;
  32. SampleProvider colorProvider = cs.getRGBMode();
  33.  
  34. Port touchPort = LocalEV3.get().getPort(KOSKETUSANTURI_PORTTI);
  35. SensorModes touchSensor = new EV3TouchSensor(touchPort);
  36. SampleProvider touch = ((EV3TouchSensor) touchSensor).getTouchMode();
  37.  
  38. Port infraPort = LocalEV3.get().getPort(INFRAPUNA_PORTTI);
  39. SensorModes infraSensor = new EV3IRSensor(infraPort);
  40. SampleProvider infra = ((EV3IRSensor) infraSensor).getDistanceMode();
  41.  
  42. kaynnistaVariKalibrointi(cs, colorProvider, touch);
  43. aja.taaksepain();
  44. infrapuna(infraSensor, infra);
  45. aja.eteenpain();
  46. varinTunnistus(colorProvider);
  47. aja.pysahdy();
  48. }
  49.  
  50. private static void varinTunnistus(SampleProvider colorProvider) {
  51. float[] sample = new float[colorProvider.sampleSize()];
  52. int i = 0;
  53. while (true) {
  54. colorProvider.fetchSample(sample, 0);
  55. Vari v = haeLahinVari(sample);
  56.  
  57. if (i == 100) {
  58. System.out.println("vari: "+v);
  59. System.out.println("sample: "+Arrays.toString(sample));
  60. System.out.println("etaisyys: "+v.etaisyys(sample));
  61. i = 0;
  62. }
  63.  
  64. if (v.toString().equals(HAETTU_VARI)) {
  65. break;
  66. }
  67. i++;
  68. }
  69. }
  70.  
  71. private static Vari haeLahinVari(float[] sample) {
  72. Vari v = varit.get(0);
  73.  
  74. for (int i = 1; i < varit.size(); ++i) {
  75. if (varit.get(i).etaisyys(sample) < v.etaisyys(sample)) {
  76. v = varit.get(i);
  77. }
  78. }
  79. return v;
  80. }
  81.  
  82. private static void infrapuna(SensorModes infraSensor, SampleProvider infra) {
  83. float[] sample = new float[infra.sampleSize()];
  84.  
  85. while (true) {
  86. infraSensor.fetchSample(sample, 0);
  87.  
  88. if (sample[0] < 0.2) {
  89. break;
  90. }
  91. }
  92. }
  93.  
  94. private static void kaynnistaVariKalibrointi(EV3ColorSensor cs, SampleProvider colorProvider,
  95. SampleProvider touch) {
  96. lisaaVari("sininen", cs, colorProvider, touch);
  97.  
  98. lisaaVari("punainen", cs, colorProvider, touch);
  99.  
  100. lisaaVari("lattia", cs, colorProvider, touch);
  101.  
  102. }
  103.  
  104. private static void lisaaVari(String nimi, EV3ColorSensor cs, SampleProvider colorProvider, SampleProvider touch) {
  105. System.out.println("aseta varin " + nimi + " kohdalle, ja paina kayttonappia.");
  106. float[] sample = new float[touch.sampleSize()];
  107.  
  108. while (true) {
  109. touch.fetchSample(sample, 0);
  110.  
  111. if (sample[0] > 0.5) {
  112. break;
  113. }
  114. }
  115.  
  116. sample = new float[colorProvider.sampleSize()];
  117.  
  118. colorProvider.fetchSample(sample, 0);
  119.  
  120. for (int i = 0; i < sample.length; ++i) {
  121. sample[i] *= 765;
  122. }
  123.  
  124. varit.add(new Vari(nimi, sample));
  125. System.out.println(nimi + " lisatty. Arvot: "+Arrays.toString(sample));
  126. Delay.msDelay(2000);
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement