Aan de slag met Rust op Raspberry Pi
Advertentie
Als je geïnteresseerd bent in programmeren, heb je waarschijnlijk gehoord van Rust 7 Redenen Rust is de meest opwindende nieuwe programmeertaal 7 Redenen Rust is de meest opwindende nieuwe programmeertaal Wil je beginnen met programmeren? Dit is de reden waarom Rust de meest opwindende en toegankelijke nieuwe programmeertaal is. Lees verder . De taal, ontworpen door Mozilla, is zeer geliefd bij ontwikkelaars en blijft groeien in toegewijden.
De Raspberry Pi is het Zwitserse zakmes van kleine computers en is perfect voor het leren van code. Laten we de twee combineren en Rust op een Raspberry Pi installeren.
Uw Raspberry Pi instellen
Voor dit project heb je nodig:
- Raspberry Pi.
- LED.
- 220-1k Ohm weerstand.
- Breadboard en aansluitdraden.
Stel uw circuit in met GPIO 18 verbonden met de positieve poot van de LED en de negatieve poot van de LED met de weerstand en terug naar een GND-pin op de Pi.
Deze tutorial is gemaakt met een Raspberry Pi 3B + met Raspbian Stretch in desktopmodus. Het zou ook prima werken via een externe SSH-verbinding, hoewel verschillende Pi-modellen en verschillende besturingssystemen verschillende resultaten kunnen hebben.
Hoe Rust op Raspberry Pi te installeren
Om roest te installeren, ga je naar de rust-lang installatiepagina en kopieer je de installatieopdracht naar je terminal. Kies een standaardinstallatie wanneer u hierom wordt gevraagd.
Het installatieprogramma laat u weten wanneer het is voltooid, hoewel de installatie enige tijd kan duren, afhankelijk van uw verbinding.
Na installatie
De installatie is geslaagd, maar u kunt deze nog niet helemaal gebruiken. Als u per versie op Rust en Cargo probeert te controleren, krijgt u een foutmelding. Gewoonlijk moet u een taal aan uw PATH toevoegen om ze op de opdrachtregel te gebruiken.
Gelukkig doet Rust dit voor je en hoef je alleen maar je Pi opnieuw op te starten of uit te loggen en opnieuw in te loggen. Nu zou het controleren op Rust en Cargo moeten werken.
Je gaat al je scripts compileren en bouwen vanuit de terminal, maar je hebt ook een code-editor nodig. In dit project zal ik Code-OSS gebruiken, een community build van VS Code die je op de Pi kunt installeren, maar het is niet essentieel. Elke code-editor is voldoende.
Een roestproject maken
Als u een Rust-project wilt maken, maakt u een nieuwe map en voert u deze in door te typen
mkdir YourFolder cd YourFolder
Gebruik Cargo om een nieuw Rust-project te maken.
cargo new YourProject
U krijgt een bevestiging dat het nieuwe project is gemaakt.
Voer de nieuwe projectmap in en geef de inhoud weer.
cd YourProject ls
U ziet een map met de naam src en een bestand met de naam Cargo.toml . Deze twee elementen vormen de basis van elk Rust-project.
Een eenvoudig roestproject, uitgelegd
Laten we eerst de src-directory openen en main.rs openen in een code-editor. Je zult zien dat het nieuwe project wordt geleverd met een "Hello World" -script om je op weg te helpen.
Rust-syntaxis zal bekend zijn bij degenen die eerder C-talen of Java hebben gebruikt. Dit verschilt van Python dat witruimte, puntkomma's en accolades gebruikt om codeblokken aan te duiden. Rust-code moet compileren en bouwen voordat deze wordt uitgevoerd.
Terug in de bovenliggende map van het project, open Cargo.toml in een code-editor. Iedereen die in JavaScript of Ruby heeft gecodeerd, zal dit waarschijnlijk bekend vinden. Projectinformatie, bouwinstructies en afhankelijkheden worden allemaal in dit bestand vermeld. Pakketten worden Crates in Rust genoemd en we zullen er later een gebruiken om toegang te krijgen tot de GPIO-pinnen van de Raspberry Pi.
Het voorbeeldproject bouwen
Terug in het terminalvenster, zorg ervoor dat u zich in uw projectmap bevindt en bouw het project.
cargo build
Hiermee maakt u een andere map binnen uw project aan met de naam target . U zult ook een nieuw bestand met de naam Cargo.lock opmerken . Wanneer u met een team werkt of iets codeert om op een server te implementeren, vergrendelt dit bestand het project naar een versie die eerder is gecompileerd en gebouwd. Tijdens het leren kunt u dit bestand veilig negeren.
In de doelmap bevindt zich een submap met de naam debug . Hier bevindt zich uw uitvoerbare bestand. Voer uw project op Mac en Linux uit door te typen:
./YourProject
In Windows hebt u een nieuw EXE- bestand dat u kunt uitvoeren door erop te dubbelklikken.
Succes! Laten we dit project omzetten in iets dat de GPIO-pinnen gebruikt.
GPIO-pins instellen
Voor dit project zullen we de rust_gpiozero krat van Rahul Thakdoor gebruiken. Hoewel het niet de enige manier is om toegang te krijgen tot GPIO-pinnen, is deze krat ontworpen om vergelijkbaar te zijn met de Python GPIO Zero-bibliotheek.
In plaats van de krat handmatig te downloaden, plak je de naam onder afhankelijkheden in het bestand Cargo.toml.
[dependencies] rust_gpiozero = "0.2.0"
Sla het op en open uw terminal. In dit stadium heeft het geen zin om het project opnieuw op te bouwen, omdat er geen code is gewijzigd. Cargo biedt een functie die controleert of de code wordt gecompileerd en of alle afhankelijkheden aanwezig zijn.
cargo check
Afhankelijk van uw verbinding kan dit enkele minuten duren, maar u hoeft dit slechts één keer te doen wanneer u items in het Cargo.toml-bestand toevoegt of wijzigt.
Hallo knipperend
Nu zul je je hallo world script veranderen in een knipperend script. Begin met het openen van main.rs in uw editor. Als je codering wilt overslaan, kun je het voltooide script vinden op Github Gist.
Je moet de compiler laten weten dat je de bibliotheek rust_gpiozero gebruikt, dus voeg bovenaan het script een verwijzing naar de bibliotheek toe.
use rust_gpiozero::*;
Net als de normale op Python gebaseerde knipper-schets, hebben we een manier nodig om een vertraging toe te voegen tussen het in- en uitschakelen van de LED. In Rust gebruiken we twee elementen van de standaardbibliotheek om dit te doen:
use std::thread::sleep; use std::time::Duration; // note the capital D!
Voeg nu in uw hoofdfunctie een variabele toe voor uw LED-pin en een lus om de knipperinstructies te bevatten.
let led = LED::new(18); // sets a variable for the led pin loop{ // starts a loop led.on(); sleep(Duration::from_secs(1)); // creates a 1 second pause led.off(); sleep(Duration::from_secs(1)); }
Dat is het! Sla uw script op en keer terug naar de terminal.
Test het uit
Bouw het project opnieuw om het uitvoerbare bestand bij te werken. Als alternatief wordt met de opdracht run het script in één stap opgebouwd en uitgevoerd:
cargo run
U zou een knipperende LED moeten zien. Goed gedaan! Je hebt zojuist je eerste hardwareprogramma met Rust gemaakt. Druk op Ctrl-C om terug te gaan naar de terminal. Als je fouten hebt, controleer je code dan grondig op eventuele gemiste dubbele punten, dubbele punten of haakjes.
Een spannende toekomst met roest op Raspberry Pi
Momenteel loopt Python geen enkel gevaar om door Rust te worden vervangen. Het is gemakkelijk te leren en Python zal nog vele jaren toepassingen hebben.
Dat gezegd hebbende, Rust heeft nogal een buzz eromheen, en er zijn veel redenen waarom je de taal zou moeten leren 7 Redenen Rust is de meest opwindende nieuwe programmeertaal 7 Redenen Rust is de meest opwindende nieuwe programmeertaal Wil je beginnen met programmeren? Dit is de reden waarom Rust de meest opwindende en toegankelijke nieuwe programmeertaal is. Lees verder !
Ontdek meer over: Raspberry Pi, Rust.