Artikel top billede

(Foto: Computerworld)

Guide: Kontroller LED’er og motorer med din Raspberry Pi

Vi har samlet en kvartet af 10 minutters projekter, som du kan lave ved hjælp af Explorer HAT Pro til Raspberry Pi. Man kan blande disse fire projekter, og vi vil bruge analoge inputs med potentiometre og digitale input/outputs med LED’er og knapper. Vi skal også bruge en H Bridge-controller til at køre vekselstrømsmotorer med kortet.

Af Torben Okholm, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Før vi tænder for Raspberry Pi, skal vi forbinde Explorer HAT Pro til alle de 40 GPIO-pins. Kortet bør sidde oven på Raspberry Pi og matche Pis udstrækning. Tænd nu din Raspberry Pi, og boot til Pixel-miljøet. Når den er klar, åbner du en Terminal og skriver den følgende kommando for at installere Explorer HAT Pro-bibliotekerne:
$ curl https://get.pimoroni.com/explorerhat | bash

Følg installationsanvisningerne. Hvis du bliver bedt om at genstarte, skal du gøre det og vende tilbage til Pixel-miljøet. Gå nu til hovedmenuen, og begiv dig til “Programming”-menuen. Klik “Python 3” for at åbne editoren, og klik så “File > New” for at komme i gang.

1 Tænd for led’en

Her vil vi bruge de kapacitive touchknapper (1-4) på Explorer HAT Pro til at udløse de indbyggede LED’er. Idet vores tomme dokument er åbent, klikker vi “File > Save” og gemmer filen som “Project1-LED-Toggle.py”, før vi fortsætter. Husk at gemme ofte.

» Vi indleder koden ved at importere biblioteket “Explorer HAT Python3”, hvorefter vi omdøber det til “eh”, så det bliver nemmere at arbejde med. Vi importerer også “sleep”-funktionen fra “time”-biblioteket: import explorerhat as eh from time import sleep

» Opret nu en endeløs løkke, der skal rumme kodens hoveddel:
while True:

» Så arrangerer vi en række betingelsestest for at se, om de kapacitive touchknapper (1-4) er blevet aktiveret. For hver knap tildeler vi en LED-farve, der bliver slået til/fra ved tryk på knappen. Derefter tilføjer vi en forsinkelse for at forebygge et uønsket dobbelttryk:

if eh.touch.one.is_pressed():
eh.light.blue.toggle()
sleep(0.1)

» Resten af koden følger det samme mønster, men den bruger “elif” til at repræsentere de andre vilkår, der skal testes:

elif eh.touch.two.is_pressed():
eh.light.yellow.toggle()
sleep(0.1)
elif eh.touch.three.is_pressed():
eh.light.red.toggle()
sleep(0.1)
elif eh.touch.four.is_pressed():
eh.light.green.toggle()
sleep(0.1)

» Klik “Run > Run Module” for at afvikle koden. Tryk nu 1-4-tasterne på Explorer HAT Pro for at tænde LED’erne.

2 Et blink i øjet

 

Billede A

 

Til dette projekt skal du bruge potentiometeret og tre jumperkabler. Forbind dem som på diagrammet [Billede A]. Vores potentiometer er tilsluttet pin’en ANALOG1, og det sender spændingen igennem den variable resistor, når der bliver drejet på knappen. Ved fuld spænding er den lige over 5 V.

» Opret en ny tom fil ved navn “Project2-Analog-Blink.py”, og importer “Explorer HAT”-biblioteket:

import explorerhat as eh

» I en “while True”-løkke opretter vi nu to variabler, der skal aflæse spændingen på ANALOG1 og gemme den til senere brug:
while True:

on = eh.analog.one.read()
off = eh.analog.one.read()

» Dernæst opretter vi et lille hack, der forhindrer Python-koden i at crashe på grund af en divide by zero-fejl, der bygger på de analoge aflæsninger. Hvis værdien af vores variabler “on” og “off” nogensinde når nul, ændrer vi værdierne til at være 0,01:

if on == 0 and off == 0:
on = 0.01
off = 0.01

» Vores sidste kodelinje tænder de indbyggede LED’er med en tænd/sluk-tid, som svarer til den spænding, der bliver læst ved ANALOG1. Det betyder, at lav spænding får LED’erne til at blinke hurtigere, mens høj spænding får dem til at blinke langsommere.

eh.light.blink(on,off)

» Klik “Run > Run Module” for at køre koden. Drej nu potentiometerets knap og indstil, hvor hurtigt LED’erne skal blinke.

3 Tryk på knappen

Dette projekt viser, hvordan input og output fra Explorer HAT Pro fungerer med eksterne komponenter, idet man med en trykknap skifter mellem de indbyggede lED’er og et standard-LED.

» Dette projekt omfatter trykknappen, en LED, en resistor på 220 Ohm og fire jumperkabler. Kredsløbet bliver bygget på breadboardet som vist på diagrammet [Billede B], idet knappen er forbundet med 5 V og INPUT1, det lange ben på LED’en er forbundet med 5 V-pin’en, og det korte ben er forbundet med OUTPUT1 via resistoren. Explorer HAT OUTPUT pin’ene er en sti til jordforbindelsen, og de er kun aktive, når der er tændt.

» Opret en ny tom fil ved navn “Project3-Input-Output.py,” importer “Explorer HAT”-biblioteket, og importer derefter “sleep”funktionen fra “time”-biblioteket:

import explorerhat as eh from time import sleep

» Nu skal vi oprette en løkke, der rummer en betingelsestest, som undersøger, om der er trykket på de kapacitive touchknapper (1-4). Den ser sådan ud for knap 1:

while True:
if eh.touch.one.is_pressed():

» Hvis der er blevet trykket på den knap, sætter vi den blå LED under knap 1 til at slå til/fra. Vi tilføjer også en kort slumring for at forebygge utilsigtede dobbelttryk:

eh.light.blue.toggle()
sleep(0.1)

» Dernæst opretter vi yderligere “else if”-test, der tjekker, om knapperne 2-4 er blevet brugt. Den aktiverer LED’en under hver knap:
elif eh.touch.two.is_pressed():
eh.light.yellow.toggle()
sleep(0.1)
elif eh.touch.three.is_pressed():
eh.light.red.toggle()
sleep(0.1)
elif eh.touch.four.is_pressed():
eh.light.green.toggle()
sleep(0.1)

» Klik “Run > Run Module” for at afvikle koden. Tryk nu på de kapacitive knapper 1-4 for at slå LED’erne til og fra.

Billede B

 

4 Styr på motoren

Til vores sidste projekt skal vi igen tilslutte potentiometeret og føje en vekselstrømsmotor til MOTOR1 + og -. Vi tilføjer en simpel fartcontroller til en vekselstrømsmotor med potentiometeret fra Projekt 2 som input. Explorer HAT Pro omfatter en DRV8833-motorcontroller, som har to motorkanaler plus styring af fremad/tilbage [Billede C].

» Opret en fil ved navn “Project4-Analog-Motor.py”, før du går i gang med dette projekt og importerer “Explorer HAT”-biblioteket:
import explorerhat as eh

» Nu opretter vi en endeløs løkke:
while True:

» I løkken opretter vi en variabel ved navn “speed”, og i den gemmer vi aflæsningen fra ANALOG1, men vi afrunder for nemheds skyld værdien med en decimal. Dernæst ganger vi værdien med 20 for at få en procentværdi, og den overfører vi til den sidste linje kode, der styrer motoren fremad, og tager en procentdel, der repræsenterer dens hastighed:

speed = (round(eh.analog.one.read()) * 20)
eh.motor.one.forward(speed)

» Når koden er færdig, klikker du “Run > Run Module” for at afvikle koden. Drej nu potentiometerets knap for at ændre motorens hastighed. Og dermed har du afsluttet fire projekter med Explorer HAT Pro. 

Billede C

Flere versioner af Explorer

I denne guide fokuserer vi på Explorer HAT Pro, der er det bedste kort. Det omfatter otte kapacitive touchknapper, fire analoge inputs, fire digitale inputs og fire outputs. Vi har en DRV8833-motorcontroller og pins til I2C/SPI og serielle forbindelser. Og vi får et breadboard til vores prototype. De kapacitive inputs 1-4 håndteres bedst med hænderne, men hvis du vil afprøve en banans ledningsevne eller bruge aluminiumfolie eller kobbertråd til at lave større kredsløb, kan du bruge inputs 5-8 med krokodilleclips og forvandle hvad som helst til en sjov form for input.

Det foregår i høj grad ligesom Makey Makey, der er en enhed, som emulerer et tastatur eller en mus, og som kan omdanne ledende genstande til forskellige former for input. Den næste funktion er Explorer pHAT, der er udviklet til Pi Zero, men som kan fungere sammen med alle 40-pin-GPIO-Raspberry Pi’er. Explorer pHAT mangler den kapacitive touch-grænseflade, breadboard, LED’er og et breakout til I2C – men den koster kun det halve af Pro-versionens pris. Hvis du har brug for en alt i en-løsning til robotter og analoge sensorer, er pHAT-kortet alt, hvad du skal bruge. Men hvis du vil have alle de tilgængelige funktioner til et eller andet projekt, er du måske bedre faren med Pro-kortet.