Pico Car Bibliotheek - Functie Referentie
Dit document beschrijft alle functies en klassen in de pico_car.py bibliotheek voor de Raspberry Pi Pico Robot.
Inhoudsopgave
Klasse: pico_car
De hoofdklasse voor het besturen van de robot. Deze klasse regelt de motoren en servo’s.
Constructor
__init__()
Initialiseer de pico_car klasse.
Gebruik:
Motor = pico_car()
Wat doet het:
Stelt PWM frequenties in voor alle servo’s (100 Hz)
Stelt PWM frequenties in voor alle motoren (1000 Hz)
Maakt de robot klaar voor gebruik
Motor Functies
Car_Run(speed1, speed2)
Laat de robot vooruit rijden.
Parameters:
speed1(int): Snelheid linker motor (0-255)speed2(int): Snelheid rechter motor (0-255)
Voorbeeld:
Motor = pico_car()
Motor.Car_Run(255, 255) # Volle snelheid vooruit
Motor.Car_Run(150, 150) # Halve snelheid vooruit
Motor.Car_Run(200, 150) # Vooruit met bocht naar rechts
Uitleg:
0 = motor staat stil
255 = maximale snelheid
Verschillende snelheden voor linker en rechter motor zorgen voor bochten
Car_Stop()
Stop de robot volledig.
Parameters: Geen
Voorbeeld:
Motor.Car_Stop()
Uitleg:
Zet alle motor PWM signalen op 0
Robot stopt met bewegen
Gebruik dit altijd aan het einde van een beweging
Car_Back(speed1, speed2)
Laat de robot achteruit rijden.
Parameters:
speed1(int): Snelheid linker motor (0-255)speed2(int): Snelheid rechter motor (0-255)
Voorbeeld:
Motor.Car_Back(200, 200) # Achteruit op volle snelheid
Motor.Car_Back(100, 150) # Achteruit met bocht
Uitleg:
Werkt hetzelfde als Car_Run maar dan in achterwaartse richting
Verschillende snelheden zorgen voor bochten tijdens achteruitrijden
Car_Left(speed1, speed2)
Laat de robot op de plaats naar links draaien.
Parameters:
speed1(int): Snelheid linker motor (0-255)speed2(int): Snelheid rechter motor (0-255)
Voorbeeld:
Motor.Car_Left(150, 150) # Draai links met gemiddelde snelheid
time.sleep(0.5) # Draai een halve seconde
Motor.Car_Stop()
Uitleg:
Linker motor draait achteruit
Rechter motor draait vooruit
Robot draait linksom op zijn as (spot turn)
Hogere snelheid = snellere draaiing
Car_Right(speed1, speed2)
Laat de robot op de plaats naar rechts draaien.
Parameters:
speed1(int): Snelheid linker motor (0-255)speed2(int): Snelheid rechter motor (0-255)
Voorbeeld:
Motor.Car_Right(150, 150) # Draai rechts met gemiddelde snelheid
time.sleep(0.5) # Draai een halve seconde
Motor.Car_Stop()
Uitleg:
Linker motor draait vooruit
Rechter motor draait achteruit
Robot draait rechtsom op zijn as
De tijd bepaalt hoe ver de robot draait (bijv. 0.5s voor 90°)
Servo Functies
servo180(num, angle)
Bestuur een 180 graden servo motor.
Parameters:
num(int): Servo nummer (1, 2, 3 of 4)angle(int): Gewenste hoek (0-180 graden)
Voorbeeld:
Motor.servo180(1, 90) # Zet servo 1 naar middenpositie
Motor.servo180(2, 0) # Zet servo 2 naar uiterst links
Motor.servo180(3, 180) # Zet servo 3 naar uiterst rechts
Uitleg:
Standaard servo met 180° bereik
0° = helemaal links
90° = midden
180° = helemaal rechts
Veel gebruikt voor robotarmen, camera mounts, etc.
servo270(num, angle)
Bestuur een 270 graden servo motor.
Parameters:
num(int): Servo nummer (1, 2, 3 of 4)angle(int): Gewenste hoek (0-270 graden)
Voorbeeld:
Motor.servo270(1, 135) # Zet servo 1 naar middenpositie
Motor.servo270(2, 0) # Zet servo 2 naar uiterst links
Motor.servo270(2, 270) # Zet servo 2 naar uiterst rechts
Uitleg:
Servo met groter draaigebied (270° in plaats van 180°)
Biedt meer bewegingsvrijheid
0° = uiterst links, 135° = midden, 270° = uiterst rechts
servo360(num, speed)
Bestuur een 360 graden (continue rotatie) servo motor.
Parameters:
num(int): Servo nummer (1, 2, 3 of 4)speed(int): Rotatie snelheid/richting (0-360)
Voorbeeld:
Motor.servo360(1, 180) # Stop servo 1
Motor.servo360(2, 270) # Draai servo 2 vooruit (halve snelheid)
Motor.servo360(3, 360) # Draai servo 3 vooruit (volle snelheid)
Motor.servo360(4, 90) # Draai servo 4 achteruit (halve snelheid)
Motor.servo360(4, 0) # Draai servo 4 achteruit (volle snelheid)
Uitleg:
Dit is geen standaard servo maar een continue rotatie motor
Kan oneindig in beide richtingen draaien
0 = volle snelheid achteruit
180 = stop
360 = volle snelheid vooruit
Handig voor wielen, transportbanden, etc.
Klasse: ws2812b
Klasse voor het aansturen van WS2812B RGB LED strips (NeoPixels).
Constructor
__init__(num_leds, state_machine, delay=0.001)
Initialiseer de LED strip.
Parameters:
num_leds(int): Aantal LEDs in de stripstate_machine(int): PIO state machine nummer (0-7)delay(float): Vertragingstijd na update in seconden (standaard 0.001)
Voorbeeld:
pixels = ws2812b(8, 0) # 8 LEDs, state machine 0
LED Functies
set_pixel(pixel_num, red, green, blue)
Zet een individuele LED naar een specifieke kleur.
Parameters:
pixel_num(int): LED nummer (0 tot num_leds-1)red(int): Rood component (0-255)green(int): Groen component (0-255)blue(int): Blauw component (0-255)
Voorbeeld:
pixels.set_pixel(0, 255, 0, 0) # LED 0 helder rood
pixels.set_pixel(1, 0, 255, 0) # LED 1 helder groen
pixels.set_pixel(2, 0, 0, 255) # LED 2 helder blauw
pixels.set_pixel(3, 255, 255, 0) # LED 3 geel (rood + groen)
pixels.set_pixel(4, 255, 0, 255) # LED 4 magenta (rood + blauw)
pixels.set_pixel(5, 0, 255, 255) # LED 5 cyaan (groen + blauw)
pixels.set_pixel(6, 255, 255, 255) # LED 6 wit (alle kleuren)
pixels.show() # VERGEET NIET OM show() AAN TE ROEPEN!
Belangrijke kleuren:
(255, 0, 0)= Rood(0, 255, 0)= Groen(0, 0, 255)= Blauw(255, 255, 0)= Geel(255, 0, 255)= Magenta(0, 255, 255)= Cyaan(255, 255, 255)= Wit(0, 0, 0)= Uit
set_pixel_line(pixel1, pixel2, red, green, blue)
Zet een reeks LEDs naar dezelfde kleur.
Parameters:
pixel1(int): Start LED nummerpixel2(int): Eind LED nummer (inclusief)red, green, blue(int): RGB kleurwaarden (0-255)
Voorbeeld:
pixels.set_pixel_line(0, 3, 255, 0, 0) # LEDs 0 t/m 3 rood
pixels.set_pixel_line(4, 7, 0, 0, 255) # LEDs 4 t/m 7 blauw
pixels.show()
Handig voor:
Snel meerdere LEDs tegelijk instellen
Status indicatie met meerdere LEDs
Zones maken op de LED strip
set_pixel_line_gradient(pixel1, pixel2, left_red, left_green, left_blue, right_red, right_green, right_blue)
Maak een vloeiend kleurverloop tussen twee LEDs.
Parameters:
pixel1(int): Start LEDpixel2(int): Eind LEDleft_red, left_green, left_blue(int): Start kleur RGBright_red, right_green, right_blue(int): Eind kleur RGB
Voorbeeld:
# Gradient van rood naar blauw over alle 8 LEDs
pixels.set_pixel_line_gradient(0, 7, 255, 0, 0, 0, 0, 255)
pixels.show()
# Gradient van groen naar geel
pixels.set_pixel_line_gradient(0, 7, 0, 255, 0, 255, 255, 0)
pixels.show()
Mooie effecten:
Regenboog effect
Zonsondergang (rood → oranje → geel)
Oceaan (blauw → groen → cyaan)
fill(red, green, blue)
Zet alle LEDs naar dezelfde kleur.
Parameters:
red, green, blue(int): RGB kleurwaarden (0-255)
Voorbeeld:
pixels.fill(255, 0, 0) # Alle LEDs rood
pixels.show()
pixels.fill(0, 0, 0) # Alle LEDs uit
pixels.show()
pixels.fill(255, 255, 255) # Alle LEDs wit
pixels.show()
Gebruik:
Snel alle LEDs dezelfde kleur geven
LEDs uitzetten met (0, 0, 0)
Status indicatie (rood = fout, groen = OK)
brightness(brightness=None)
Stel de helderheid in of lees deze uit.
Parameters:
brightness(int, optioneel): Helderheid (1-255)Als None: geeft huidige helderheid terug
Als getal: stelt nieuwe helderheid in
Voorbeeld:
pixels.brightness(50) # Zet helderheid op 50/255 (dimmen)
pixels.brightness(255) # Maximale helderheid
pixels.brightness(1) # Minimale helderheid (bijna uit)
current = pixels.brightness() # Lees huidige helderheid
print("Helderheid:", current)
Tip:
Gebruik lagere helderheid om stroom te besparen
Bij heldere omgevingsverlichting: hogere helderheid
Bij gebruik in het donker: lagere helderheid is prettiger
rotate_left(num_of_pixels=1)
Roteer alle LEDs een aantal posities naar links.
Parameters:
num_of_pixels(int): Aantal posities (standaard 1)
Voorbeeld:
# Maak een lopend licht effect
while True:
pixels.rotate_left(1)
pixels.show()
time.sleep(0.1)
Effect:
LED 0 → LED 7
LED 1 → LED 0
LED 2 → LED 1
etc.
rotate_right(num_of_pixels=1)
Roteer alle LEDs een aantal posities naar rechts.
Parameters:
num_of_pixels(int): Aantal posities (standaard 1)
Voorbeeld:
# Maak een lopend licht effect (andere kant op)
while True:
pixels.rotate_right(1)
pixels.show()
time.sleep(0.1)
show()
Stuur de LED data naar de strip en toon de kleuren.
Parameters: Geen
Voorbeeld:
pixels.set_pixel(0, 255, 0, 0) # Stel kleur in
pixels.set_pixel(1, 0, 255, 0) # Stel kleur in
pixels.show() # NU pas worden kleuren zichtbaar!
BELANGRIJK:
Je MOET show() aanroepen na het instellen van kleuren
Zonder show() zie je geen veranderingen
Je kunt meerdere set_pixel() aanroepen doen en dan één keer show()
Klasse: ultrasonic
Klasse voor het uitlezen van de HC-SR04 ultrasone afstandssensor.
Constructor
__init__()
Initialiseer de ultrasone sensor.
Voorbeeld:
sensor = ultrasonic()
Hardware:
Trigger pin: GPIO 0
Echo pin: GPIO 1
Bereik: 2cm tot 400cm
Nauwkeurigheid: ±3mm
Sensor Functies
Distance()
Voer een enkele afstandsmeting uit (basis functie).
Parameters: Geen
Returns: float - Afstand in centimeters
Voorbeeld:
sensor = ultrasonic()
afstand = sensor.Distance()
print("Afstand:", afstand, "cm")
Let op:
Deze functie kan soms onbetrouwbare metingen geven
Gebruik bij voorkeur
Distance_accurate()voor betere resultatenGeeft -1 terug bij een fout
Distance_accurate()
Voer een nauwkeurige afstandsmeting uit (aanbevolen).
Parameters: Geen
Returns: int - Gemiddelde afstand in centimeters
Voorbeeld:
sensor = ultrasonic()
afstand = sensor.Distance_accurate()
if afstand < 20:
print("Obstakel dichtbij!")
Motor.Car_Stop()
elif afstand < 50:
print("Voorzichtig rijden")
Motor.Car_Run(100, 100)
else:
print("Vrij baan")
Motor.Car_Run(255, 255)
Hoe werkt het:
Voert 5 metingen uit
Filtert onbetrouwbare waarden
Neemt gemiddelde van middelste 3 metingen
Vermindert meetruis en geeft stabielere resultaten
Geeft 999 terug bij een fout of buiten bereik
Praktische toepassing:
# Obstakelvermijding
while True:
afstand = sensor.Distance_accurate()
if afstand < 15:
# Te dichtbij! Draai weg
Motor.Car_Back(150, 150)
time.sleep(0.3)
Motor.Car_Right(150, 150)
time.sleep(0.5)
else:
# Rij vooruit
Motor.Car_Run(200, 200)
time.sleep(0.1)
Klasse: SSD1306_I2C
Klasse voor het aansturen van een SSD1306 OLED display via I2C.
Constructor
__init__(width, height, i2c, addr=0x3c, external_vcc=False)
Initialiseer het OLED display.
Parameters:
width(int): Breedte in pixels (meestal 128)height(int): Hoogte in pixels (32 of 64)i2c(I2C): I2C bus objectaddr(int): I2C adres (standaard 0x3c)external_vcc(bool): Gebruik externe voeding (standaard False)
Voorbeeld:
from machine import Pin, I2C
from pico_car import SSD1306_I2C
# Initialiseer I2C
i2c = I2C(1, scl=Pin(15), sda=Pin(14), freq=100000)
# Initialiseer OLED (128x32 pixels)
oled = SSD1306_I2C(128, 32, i2c)
Display Functies
text(string, x, y, col=1)
Toon tekst op het display.
Parameters:
string(str): De tekst om te tonenx(int): X positie (0 = links)y(int): Y positie (0 = boven)col(int): Kleur (1 = wit, 0 = zwart)
Voorbeeld:
oled.text("Hello", 0, 0)
oled.text("World", 0, 10)
oled.text("Robot!", 0, 20)
oled.show() # Vergeet niet!
Tips:
Lettergrootte is 8x8 pixels
Maximum ~16 karakters per regel (bij 128 pixels breedte)
Y-coördinaten: 0, 10, 20, 30 voor 4 regels tekst
pixel(x, y, col)
Zet een enkele pixel aan of uit.
Parameters:
x(int): X positie (0-127)y(int): Y positie (0-31 of 0-63)col(int): 1 = aan, 0 = uit
Voorbeeld:
# Teken een punt
oled.pixel(64, 16, 1)
oled.show()
# Teken een lijn van pixels
for i in range(128):
oled.pixel(i, 16, 1)
oled.show()
fill(col)
Vul het hele scherm met een kleur.
Parameters:
col(int): 0 = zwart (leeg scherm), 1 = wit (vol scherm)
Voorbeeld:
# Maak scherm leeg
oled.fill(0)
oled.show()
# Vul scherm (test)
oled.fill(1)
oled.show()
Gebruik:
oled.fill(0)voor het wissen van het schermDoe dit voor je nieuwe tekst toont
show()
Toon de inhoud van de buffer op het display.
Parameters: Geen
Voorbeeld:
oled.text("Test", 0, 0)
oled.show() # NU pas verschijnt de tekst!
BELANGRIJK:
Je MOET show() aanroepen om wijzigingen te zien
Zonder show() verandert het scherm niet
Praktische Voorbeelden OLED
Voorbeeld 1: Sensor waarde tonen
from machine import Pin, I2C
from pico_car import SSD1306_I2C, ultrasonic
import time
# Initialiseer
i2c = I2C(1, scl=Pin(15), sda=Pin(14), freq=100000)
oled = SSD1306_I2C(128, 32, i2c)
sensor = ultrasonic()
while True:
afstand = sensor.Distance_accurate()
# Wis scherm
oled.fill(0)
# Toon afstand
oled.text('Afstand:', 0, 0)
oled.text(str(afstand) + ' cm', 0, 10)
oled.show()
time.sleep(0.5)
Voorbeeld 2: Status display
oled.fill(0)
oled.text('Robot Status', 0, 0)
oled.text('Batterij: 87%', 0, 10)
oled.text('Mode: Auto', 0, 20)
oled.show()
Voorbeeld 3: Scrollende tekst
tekst = "Welkom bij de Pico Robot!"
x = 128 # Start rechts buiten beeld
while x > -len(tekst) * 8: # 8 pixels per karakter
oled.fill(0)
oled.text(tekst, x, 12)
oled.show()
x -= 2 # Scroll snelheid
time.sleep(0.05)
Klasse: ir
Klasse voor het ontvangen van infrarood signalen van een afstandsbediening.
Constructor
__init__()
Initialiseer de infrarood ontvanger.
Voorbeeld:
from pico_car import ir
Ir = ir()
Hardware:
IR ontvanger pin: GPIO 7
Ondersteunt standaard NEC protocol afstandsbedieningen
IR Functies
Getir()
Lees het ontvangen IR signaal.
Parameters: Geen
Returns:
int: Knop code (0-20)None: Geen knop ingedrukt
Voorbeeld:
Ir = ir()
while True:
knop = Ir.Getir()
if knop != None:
print("Knop ingedrukt:", knop)
if knop == 1: # Up knop
Motor.Car_Run(255, 255)
elif knop == 9: # Down knop
Motor.Car_Back(255, 255)
elif knop == 4: # Left knop
Motor.Car_Left(150, 150)
elif knop == 6: # Right knop
Motor.Car_Right(150, 150)
elif knop == 5: # OK knop
Motor.Car_Stop()
time.sleep(0.01)
Knop codes:
0 = Power
1 = Up
2 = Light
4 = Left
5 = OK/Sound
6 = Right
8 = Turn Left
9 = Down
10 = Turn Right
12 = Plus (+)
13 = Zero (0)
14 = Min (-)
16 = 1
17 = 2
18 = 3
Praktisch Voorbeeld: Robot met afstandsbediening
from pico_car import pico_car, ir
import time
Motor = pico_car()
Ir = ir()
print("Robot klaar! Gebruik afstandsbediening")
while True:
knop = Ir.Getir()
if knop != None:
if knop == 1: # Up
print("Vooruit")
Motor.Car_Run(200, 200)
elif knop == 9: # Down
print("Achteruit")
Motor.Car_Back(200, 200)
elif knop == 4: # Left
print("Links")
Motor.Car_Left(150, 150)
elif knop == 6: # Right
print("Rechts")
Motor.Car_Right(150, 150)
elif knop == 5: # OK/Sound (stop)
print("Stop")
Motor.Car_Stop()
elif knop == 16: # Knop 1 (langzaam)
print("Langzaam vooruit")
Motor.Car_Run(100, 100)
elif knop == 17: # Knop 2 (gemiddeld)
print("Gemiddeld vooruit")
Motor.Car_Run(150, 150)
elif knop == 18: # Knop 3 (snel)
print("Snel vooruit")
Motor.Car_Run(255, 255)
time.sleep(0.01)
Klasse: ds
Klasse voor het uitlezen van DS18B20 temperatuursensoren via OneWire protocol.
Constructor
__init__(unit='c', resolution=12)
Initialiseer de temperatuursensor.
Parameters:
unit(str): Temperatuur eenheid (‘c’ voor Celsius, ‘f’ voor Fahrenheit)resolution(int): Meetresolutie in bits (9, 10, 11 of 12)
Voorbeeld:
from pico_car import ds
temp_sensor = ds(unit='c', resolution=12)
Hardware:
OneWire data pin: GPIO 7
Ondersteunt meerdere sensoren op één pin
Temperatuur Functies
read()
Lees de temperatuur van alle aangesloten sensoren.
Parameters: Geen
Returns: list - Lijst met temperatuurwaarden (één per sensor)
Voorbeeld:
temp_sensor = ds()
temperaturen = temp_sensor.read()
if temperaturen:
for i, temp in enumerate(temperaturen):
print(f"Sensor {i+1}: {temp}°C")
Resolutie en meettijd:
12 bit (standaard): 0.0625°C nauwkeurigheid, ~1000ms meettijd
11 bit: 0.125°C nauwkeurigheid, ~400ms meettijd
10 bit: 0.25°C nauwkeurigheid, ~200ms meettijd
9 bit: 0.5°C nauwkeurigheid, ~100ms meettijd
Complete Voorbeelden
Voorbeeld 1: Obstakelvermijding met LEDs en Display
from pico_car import pico_car, ultrasonic, ws2812b, SSD1306_I2C
from machine import Pin, I2C
import time
# Initialiseer hardware
Motor = pico_car()
sensor = ultrasonic()
pixels = ws2812b(8, 0)
i2c = I2C(1, scl=Pin(15), sda=Pin(14), freq=100000)
oled = SSD1306_I2C(128, 32, i2c)
print("Obstakelvermijding gestart!")
while True:
afstand = sensor.Distance_accurate()
# Update display
oled.fill(0)
oled.text('Afstand:', 0, 0)
oled.text(str(afstand) + ' cm', 0, 10)
if afstand < 15:
# STOP! Te dichtbij
Motor.Car_Stop()
pixels.fill(255, 0, 0) # Rood
oled.text('STOP!', 0, 20)
elif afstand < 30:
# Langzaam rijden
Motor.Car_Run(100, 100)
pixels.fill(255, 255, 0) # Geel
oled.text('Voorzichtig', 0, 20)
else:
# Normale snelheid
Motor.Car_Run(200, 200)
pixels.fill(0, 255, 0) # Groen
oled.text('Vrije baan', 0, 20)
pixels.show()
oled.show()
time.sleep(0.1)
Voorbeeld 2: Lijnvolger met Feedback
from pico_car import pico_car, ws2812b
from machine import Pin
import time
# Initialiseer
Motor = pico_car()
pixels = ws2812b(8, 0)
# Lijnvolg sensoren (GPIO 2-5)
sensor_L = Pin(2, Pin.IN)
sensor_ML = Pin(3, Pin.IN)
sensor_MR = Pin(4, Pin.IN)
sensor_R = Pin(5, Pin.IN)
# Snelheden
SNELHEID = 150
BOCHT_SNELHEID = 100
while True:
# Lees sensoren (0 = zwart/lijn, 1 = wit/grond)
links = sensor_L.value()
midden_links = sensor_ML.value()
midden_rechts = sensor_MR.value()
rechts = sensor_R.value()
# Logica voor lijnvolgen
if midden_links == 0 and midden_rechts == 0:
# Recht vooruit
Motor.Car_Run(SNELHEID, SNELHEID)
pixels.fill(0, 255, 0) # Groen = goed
elif midden_links == 0:
# Draai iets naar links
Motor.Car_Run(BOCHT_SNELHEID, SNELHEID)
pixels.fill(0, 0, 255) # Blauw = links
elif midden_rechts == 0:
# Draai iets naar rechts
Motor.Car_Run(SNELHEID, BOCHT_SNELHEID)
pixels.fill(255, 0, 255) # Magenta = rechts
elif links == 0:
# Scherpe bocht links
Motor.Car_Left(BOCHT_SNELHEID, BOCHT_SNELHEID)
pixels.fill(0, 255, 255) # Cyaan = scherp links
elif rechts == 0:
# Scherpe bocht rechts
Motor.Car_Right(BOCHT_SNELHEID, BOCHT_SNELHEID)
pixels.fill(255, 255, 0) # Geel = scherp rechts
else:
# Lijn kwijt!
Motor.Car_Stop()
pixels.fill(255, 0, 0) # Rood = fout
pixels.show()
time.sleep(0.01)
Voorbeeld 3: Dashboard met alle sensoren
from pico_car import ultrasonic, SSD1306_I2C, ds
from machine import Pin, I2C, ADC
import time
# Initialiseer hardware
i2c = I2C(1, scl=Pin(15), sda=Pin(14), freq=100000)
oled = SSD1306_I2C(128, 32, i2c)
ultrasone = ultrasonic()
temp_sensor = ds()
batterij = ADC(28)
while True:
# Lees alle sensoren
afstand = ultrasone.Distance_accurate()
temp = temp_sensor.read()
bat_waarde = batterij.read_u16()
bat_procent = int((bat_waarde / 65535) * 100)
# Toon op display
oled.fill(0)
oled.text('Dashboard', 0, 0)
oled.text(f'Afst:{afstand}cm', 0, 10)
if temp:
oled.text(f'Temp:{temp[0]:.1f}C', 0, 20)
oled.text(f'Bat:{bat_procent}%', 70, 20)
oled.show()
time.sleep(0.5)
Tips en Trucs
Motorbesturing
Start altijd met lagere snelheden (100-150) om te testen
Gebruik Car_Stop() na elke beweging voor controle
Experimenteer met tijd - elke robot is anders
Kalibreer je motoren - pas snelheden aan als robot scheef rijdt
LED Strip
Vergeet show() niet - zonder show() zie je niets!
Gebruik lagere helderheid om stroom te besparen
Wis oude kleuren met fill(0,0,0) voor schone effecten
OLED Display
fill(0) voor nieuwe tekst om oude tekst te wissen
Tekst past niet? Gebruik kortere strings of kleinere font
Update niet te snel - 0.1s pauze is prima
Test zonder robot eerst om snelheid te controleren
Ultrasone Sensor
Gebruik Distance_accurate() voor betrouwbare metingen
Controleer op 999 (foutcode) in je code
15cm minimum afstand voor veilige stop
Meet niet sneller dan 10x per seconde
Algemeen
Test per onderdeel - eerst motor, dan sensoren, dan combinatie
Gebruik print() om waarden te debuggen
Voeg pauzes toe met time.sleep() voor stabiele werking
Documenteer je code met comments voor later
Troubleshooting
Motor draait niet
Controleer batterijen
Controleer of PWM frequentie is ingesteld (gebeurt automatisch in init)
Test met lagere snelheid (50-100)
LEDs werken niet
Heb je show() aangeroepen?
Controleer GPIO 6 aansluiting
Test met eenvoudige code eerst
OLED toont niets
Controleer I2C verbinding (GPIO 14 en 15)
Heb je show() aangeroepen?
Test met oled.fill(1) voor vol wit scherm
Ultrasone sensor geeft 999
Obstakel te dichtbij (< 2cm) of te ver (> 400cm)
Controleer GPIO 0 en 1 verbindingen
Test met Distance() eerst
IR werkt niet
Richt afstandsbediening recht op sensor
Verwijder obstakels tussen zender en ontvanger
Controleer batterijen in afstandsbediening
Print knop waarde om te testen:
print(Ir.Getir())
Snelle Referentie Tabel
Functie |
Gebruik |
Voorbeeld |
|---|---|---|
|
Rij vooruit |
|
|
Stop robot |
|
|
Rij achteruit |
|
|
Draai links |
|
|
Draai rechts |
|
|
Bestuur servo |
|
|
Zet LED kleur |
|
|
Alle LEDs |
|
|
Toon LEDs |
|
|
Meet afstand |
|
|
Toon tekst |
|
|
Lees IR knop |
|
Veel succes met programmeren van je Pico Robot! 🤖