Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. package varintunnistus;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import lejos.hardware.ev3.LocalEV3;
  6. import lejos.hardware.port.Port;
  7. import lejos.hardware.sensor.EV3ColorSensor;
  8. import lejos.hardware.sensor.EV3IRSensor;
  9. import lejos.hardware.sensor.EV3TouchSensor;
  10. import lejos.hardware.sensor.SensorModes;
  11. import lejos.robotics.SampleProvider;
  12. import lejos.utility.Delay;
  13.  
  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.  
  43. kaynnistaVariKalibrointi(cs, colorProvider, touch);
  44. aja.taaksepain();
  45. infrapuna(infraSensor, infra);
  46. aja.eteenpain();
  47. varinTunnistus(colorProvider);
  48. aja.pysahdy();
  49. }
  50.  
  51. private static void varinTunnistus(SampleProvider colorProvider) {
  52. float[] sample = new float[colorProvider.sampleSize()];
  53. int i = 0;
  54. while (true) {
  55. colorProvider.fetchSample(sample, 0);
  56. Vari v = haeLahinVari(sample);
  57.  
  58. if (i == 100) {
  59. System.out.println(v);
  60. i = 0;
  61. }
  62.  
  63. if (v.toString().equals(HAETTU_VARI)) {
  64. break;
  65. }
  66. i++;
  67. }
  68. }
  69.  
  70. private static Vari haeLahinVari(float[] sample) {
  71. Vari v = varit.get(0);
  72.  
  73. for (int i = 1; i < varit.size(); ++i) {
  74. if (varit.get(i).etaisyys(sample) < v.etaisyys(sample)) {
  75. v = varit.get(i);
  76. }
  77. }
  78. return v;
  79. }
  80.  
  81. private static void infrapuna(SensorModes infraSensor, SampleProvider infra) {
  82. float[] sample = new float[infra.sampleSize()];
  83.  
  84. while (true) {
  85. infraSensor.fetchSample(sample, 0);
  86.  
  87. if (sample[0] < 0.2) {
  88. break;
  89. }
  90. }
  91. }
  92.  
  93.  
  94. private static void kaynnistaVariKalibrointi(EV3ColorSensor cs, SampleProvider colorProvider, SampleProvider touch) {
  95. lisaaVari("sininen", cs, colorProvider, touch);
  96.  
  97. lisaaVari("punainen", cs, colorProvider, touch);
  98.  
  99. lisaaVari("lattia", cs, colorProvider, touch);
  100.  
  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.");
  126. Delay.msDelay(2000);
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement