MotorAansturing.java 2.5 KB

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