MotorAansturing.java 2.4 KB

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