#眉標=Java #副標=智慧型樂高機器人與Java程式開發(4) #大標=開發leJOS NXJ應用程式 #作者=文/圖 何致億 ==<灰>=========== LCD.drawString("Program Started.", 0, 4); LCD.refresh(); Thread.sleep(5000); LCD.clear(); ================ ==<灰>=========== if (Button.LEFT.isPressed()) { LCD.drawString("Press LEFT", 0, 4); LCD.refresh(); } ================ ==<灰>=========== int mv = Battery.getVoltageMilliVolt(); LCD.drawInt(mv, 0, 1); LCD.refresh(); ================ ==<灰>=========== Motor.A.setPower(100); A.forward(); Thread.sleep(2000); A.backward(); ================ ==注意 =========== 為了說明方便,筆者將Motor.forward()方法稱為順時針轉動,Motor.backward()方法稱為逆時針轉動。然而,馬達實際轉動方向與組裝時擺放位置有關。 ================ 1. 宣告一個String陣列,內含文字選單的所有選項,例如: ==<灰>=========== String[] list = { "System", "Programs", "View", "Exit" }; ================ 2. 利用TextMenu類別的建構式建立一個TextMenu物件: ==<灰>=========== TextMenu menu = new TextMenu(list, 4, "Main menu:"); ================ 3. 利用TextMenu類別的select()方法,將使用者選取的項目存入int變數: ==<灰>=========== int choice = menu.select(); ================ ============= 程式1 TestButtons.java 01. import lejos.nxt.*; 02. 03. public class TestButtons { 04. public static void main(String[] args) throws Exception { 05. LCD.drawString("Press ENTER.", 0, 0); 06. LCD.refresh(); 07. while (true) { 08. if (Button.ENTER.isPressed()) { 09. LCD.drawString("ENTER pressed.", 0, 4); 10. LCD.refresh(); 11. Thread.sleep(1000); 12. LCD.clear(); 13. break; 14. } 15. } 16. 17. LCD.drawString("Press LEFT.", 0, 0); 18. LCD.refresh(); 19. 20. while (true) { 21. if (Button.LEFT.isPressed()) { 22. LCD.drawString("LEFT pressed.", 0, 4); 23. LCD.refresh(); 24. Thread.sleep(1000); 25. LCD.clear(); 26. break; 27. } 28. } 29. 30. LCD.drawString("Press ESCAPE to", 0, 0); 31. LCD.drawString("exit.", 0, 1); 32. LCD.refresh(); 33. 34. while (true) { 35. if (Button.ESCAPE.isPressed()) { 36. LCD.drawString("ESCAPE pressed.", 0, 4); 37. LCD.drawString("Exiting...", 0, 6); 38. LCD.refresh(); 39. Thread.sleep(1000); 40. break; 41. } 42. } 43. } 44. } ================ ============= 程式2 Calculator.java 01. import lejos.nxt.*; 02. 03. public class Calculator { 04. public static void main(String[] args) throws Exception { 05. String[] numbers = { "0", "1", "2", "3", "4", 06. "5", "6", "7", "8", "9" }; 07. String[] operation = { "+", "-", "*", "/" }; 08. TextMenu menu1 = new TextMenu(numbers, 7, 09. "Input 1st number:"); 10. int first = menu1.select(); 11. LCD.clear(); 12. 13. TextMenu menu2 = new TextMenu(numbers, 7, 14. "Input 2nd number:"); 15. int second = menu2.select(); 16. LCD.clear(); 17. 18. TextMenu menu3 = new TextMenu(operation, 4, 19. "Select operation:"); 20. int op = menu3.select(); 21. LCD.clear(); 22. 23. int result = 0; 24. 25. if (op == 0) { 26. result = first + second; 27. } 28. if (op == 1) { 29. result = first - second; 30. } 31. 32. if (op == 2) { 33. result = first * second; 34. } 35. 36. if (op == 3) { 37. result = first / second; 38. } 39. 40. LCD.drawString("Result is:", 0, 4); 41. LCD.drawInt(result, 11, 4); 42. LCD.refresh(); 43. Thread.sleep(3000); 44. } 45. } ================ ============= 程式3 TestMotor.java 1. import lejos.nxt.*; 2. 3. public class TestMotor { 4. public static void main(String[] args) { 5. Motor.A.setPower(100); 6. Motor.C.setPower(100); 7. LCD.drawString("Motor Power: 100", 0, 1); 8. LCD.drawString("Motor A: LEFT", 0, 3); 9. LCD.drawString("Motor C: RIGHT", 0, 4); 10. LCD.refresh(); 11. while (true) { 12. if (Button.RIGHT.isPressed()) { 13. Motor.C.forward(); 14. Motor.A.stop(); 15. LCD.clear(); 16. LCD.drawString("Turn on Motor C.", 0, 4); 17. LCD.refresh(); 18. } 19. if (Button.LEFT.isPressed()) { 20. Motor.A.forward(); 21. Motor.C.stop(); 22. LCD.clear(); 23. LCD.drawString("Turn on Motor A.", 0, 4); 24. LCD.refresh(); 25. } 26. if (Button.ESCAPE.isPressed()) { 27. Motor.A.stop(); 28. Motor.C.stop(); 29. LCD.clear(); 30. break; 31. } 32. } 33. } 34. } ================ ============= 程式4 TestLightSensor.java 1. import lejos.nxt.*; 2. 3. public class TestLightSensor { 4. public static void main(String[] args) { 5. int value = 0; 6. LightSensor ls = new LightSensor(SensorPort.S2); 7. LCD.drawString("Port 2: Light", 0, 2); 8. LCD.drawString("Value : ", 0, 4); 9. LCD.refresh(); 10. while (true){ 11. value = ls.readValue(); 12. LCD.drawInt(value, 9, 4); 13. LCD.refresh(); 14. if (Button.ESCAPE.isPressed()) { 15. LCD.clear(); 16. break; 17. } 18. } 19. } 20. } ================