KRITSADA

Robot Control

Oct 28th, 2019
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Write your code here :-)
  2. from microbit import *
  3. import math
  4. import neopixel
  5.  
  6. np = neopixel.NeoPixel(pin13, 12)
  7.  
  8. def funcVSpeed(var):  # Lager enklere funksjonsnavn for å lettere kunne lese koden.
  9.     pin0.write_analog(var)  # Parameteren heter "var" fordi "dir" og "speed" brukes senere
  10. def funcVDir(var):
  11.     pin8.write_digital(var)
  12. def funcHSpeed(var):
  13.     pin1.write_analog(var)
  14. def funcHDir(var):
  15.     pin12.write_digital(var)
  16.  
  17. def fill(r, g, b):  # Fyller alle pixels med en farge.
  18.     for i in range(0, len(np)):
  19.         np[i] = (r, g, b)
  20. def vFill(r, g, b):  # Fyller venstre pixels med en farge.
  21.     for i in range(0, math.floor(len(np)/2)):
  22.         np[i] = (r, g, b)
  23. def hFill(r, g, b):  # Fyller høyre pixels med en farge.
  24.     for i in range(math.floor(len(np)/2), len(np)):
  25.         np[i] = (r, g, b)
  26.  
  27.  
  28. def drive(vDir, vSpeed, hDir, hSpeed):
  29.     funcVSpeed(math.floor(vSpeed*1023))  # Vil at input speed skal være mellom 0 og 1
  30.     funcVDir(vDir)
  31.     funcHSpeed(math.floor(hSpeed*1023))
  32.     funcHDir(hDir)
  33.     fill(0, 0, 0)  # Clearer diodene
  34.     if vSpeed+vDir != 0 and vSpeed+vDir != 2 and hSpeed+hDir != 0 and hSpeed+hDir != 2 :  # Ikke stillestående
  35.         if vDir == 0:  # Framover venstre
  36.             vFill(0, 255, 0)
  37.         if hDir == 0:  # Framover høyre
  38.             hFill(0, 255, 0)
  39.         if vDir == 1:  # Bakover venstre
  40.             vFill(255, 0, 0)
  41.         if hDir == 1:  # Bakover høyre
  42.             hFill(255, 0, 0)
  43.     np.show()
  44.  
  45. def weiter(inputSpeed):  # Fremad
  46.     drive(0, inputSpeed, 0, inputSpeed)
  47. def ruckwarts(inputSpeed):  # Bakover
  48.     drive(1, 1-inputSpeed, 1, 1-inputSpeed)
  49. def links(inputSpeed):  # Venstre
  50.     drive(1, 1-inputSpeed, 0, inputSpeed)
  51. def rechts(inputSpeed):  # Høyre
  52.     drive(0, inputSpeed, 1, 1-inputSpeed)
  53. def halt():  # Stopp
  54.     drive(0, 0, 0, 0)
  55.  
  56. # Definerer funskjoner med gitt varighet
  57.  
  58. def weiterFor(inputSpeed, duration):  # Fremad
  59.     drive(0, inputSpeed, 0, inputSpeed)
  60.     sleep(duration)
  61.     drive(0, 0, 0, 0)
  62. def ruckwartsFor(inputSpeed, duration):  # Bakover
  63.     drive(1, 1-inputSpeed, 1, 1-inputSpeed)
  64.     sleep(duration)
  65.     drive(0, 0, 0, 0)
  66. def linksFor(inputSpeed, duration):  # Venstre
  67.     drive(1, 1-inputSpeed, 0, inputSpeed)
  68.     sleep(duration)
  69.     drive(0, 0, 0, 0)
  70. def rechtsFor(inputSpeed, duration):  # Høyre
  71.     drive(0, inputSpeed, 1, 1-inputSpeed)
  72.     sleep(duration)
  73.     drive(0, 0, 0, 0)
  74.  
  75. # Her begynner kjøreinstruksjoner
  76.  
  77.  
  78. weiterFor(0.2, 1000)
  79. linksFor(0.2, 1000)
  80. weiterFor(0.2, 1000)
  81. rechtsFor(0.2, 2000)
  82. ruckwartsFor(0.2, 1000)
  83. linksFor(0.2, 1000)
  84. ruckwartsFor(0.2, 1000)
  85. rechtsFor(1, 2500)
Add Comment
Please, Sign In to add comment