MotorAansturing.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 int getSnelheid(){
  26. return snelheidL;
  27. }
  28. public void start(){
  29. int maxSnelheid = snelheidL;
  30. for (int i=0; i<=maxSnelheid; i = i + 10) {
  31. setSnelheid(i);
  32. rijden();
  33. CPU.delay (2000);
  34. }
  35. }
  36. public void stop(){
  37. int maxSnelheid = snelheidL;
  38. for (int i=maxSnelheid; i>0; i = i - 10) {
  39. setSnelheid(i);
  40. rijden();
  41. CPU.delay (2000);
  42. }
  43. motorL.update(173, 2304); // motoren op de rem zetten
  44. motorR.update(173, 2304);
  45. }
  46. public void noodStop(){
  47. motorL.update(173, 2304); // motoren op de rem zetten
  48. motorR.update(173, 2304);
  49. }
  50. public void rijden()
  51. {
  52. int motorLWaarde =0;
  53. int motorRWaarde =0;
  54. if(richting){ //vooruit
  55. motorLWaarde = 173-(23*snelheidL/100);
  56. motorRWaarde = 173+(23*snelheidR/100);
  57. }else if(!richting){ //achteruit
  58. motorLWaarde = 173+(23*snelheidL/100);
  59. motorRWaarde = 173-(23*snelheidR/100);
  60. }
  61. motorL.update(motorLWaarde, 2304); //waardes toepassen
  62. motorR.update(motorRWaarde, 2304);
  63. }
  64. public void turn(int graden)
  65. {
  66. int factor = 0;
  67. if(graden > 180 & graden <360){
  68. motorL.update(150, 2304); // Linksom is de kortste route
  69. motorR.update(150, 2304);
  70. graden -= 180;
  71. }else{
  72. motorL.update(196, 2304); // rechtsom is de kortste route
  73. motorR.update(196, 2304);
  74. }
  75. int delay =((37* graden) / 90)*10;
  76. for (int i=0; i<10; i++) { // delay berekenen voor gegeven graades en toepasen
  77. CPU.delay (delay);
  78. }
  79. motorL.update(173, 2304); // motoren afremmen en stil laten staan
  80. motorR.update(173, 2304);
  81. }
  82. }