MotorAansturing.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package boebot;
  2. import stamp.core.*;
  3. public class MotorAansturing{
  4. private int snelheidL;
  5. private int snelheidR;
  6. private int driveSnelheid;
  7. private boolean richting;
  8. private PWM motorL, motorR;
  9. public MotorAansturing(){
  10. motorL = new PWM (CPU.pin13, 173, 2304); // motoren op de rem zetten
  11. motorR = new PWM (CPU.pin12, 173, 2304);
  12. }
  13. public void setSnelheidL(int snelheid){
  14. snelheidL = snelheid;
  15. }
  16. public void setSnelheidR(int snelheid){
  17. snelheidR = snelheid;
  18. }
  19. public void setSnelheid(int snelheid){
  20. driveSnelheid = snelheid;
  21. setSnelheidR(snelheid);
  22. setSnelheidL(snelheid);
  23. }
  24. public void setRichting(boolean r){
  25. richting = r;
  26. }
  27. public int getSnelheid(){
  28. return snelheidL;
  29. }
  30. public int getDriveSnelheid(){
  31. return driveSnelheid;
  32. }
  33. public void start(){
  34. int maxSnelheid = snelheidL;
  35. for (int i=0; i<=maxSnelheid; i = i + 10) {
  36. setSnelheid(i);
  37. rijden();
  38. CPU.delay (2000);
  39. }
  40. }
  41. public void stop(){
  42. int maxSnelheid = snelheidL;
  43. for (int i=maxSnelheid; i>0; i = i - 10) {
  44. setSnelheid(i);
  45. rijden();
  46. CPU.delay (2000);
  47. }
  48. motorL.update(173, 2304); // motoren op de rem zetten
  49. motorR.update(173, 2304);
  50. }
  51. public void noodStop(){
  52. motorL.update(173, 2304); // motoren op de rem zetten
  53. motorR.update(173, 2304);
  54. }
  55. public void rijden()
  56. {
  57. int motorLWaarde =0;
  58. int motorRWaarde =0;
  59. if(richting){ //vooruit
  60. motorLWaarde = 173-(23*snelheidL/100);
  61. motorRWaarde = 173+(23*snelheidR/100);
  62. }else if(!richting){ //achteruit
  63. motorLWaarde = 173+(23*snelheidL/100);
  64. motorRWaarde = 173-(23*snelheidR/100);
  65. }
  66. motorL.update(motorLWaarde, 2304); //waardes toepassen
  67. motorR.update(motorRWaarde, 2304);
  68. }
  69. public void turn(int graden)
  70. {
  71. int factor = 0;
  72. if(graden > 180 & graden <360){
  73. motorL.update(150, 2304); // Linksom is de kortste route
  74. motorR.update(150, 2304);
  75. graden -= 180;
  76. }else{
  77. motorL.update(196, 2304); // rechtsom is de kortste route
  78. motorR.update(196, 2304);
  79. }
  80. int delay =((37* graden) / 90)*10;
  81. for (int i=0; i<10; i++) { // delay berekenen voor gegeven graades en toepasen
  82. CPU.delay (delay);
  83. }
  84. motorL.update(173, 2304); // motoren afremmen en stil laten staan
  85. motorR.update(173, 2304);
  86. }
  87. }