If you are interested in programming, you’ve probably heard of Rust. The language, designed by Mozilla, is widely loved by developers and continues to grow in devotees.
The Raspberry Pi is the swiss army knife of small computers, and it’s perfect for learning code. Let’s combine the two and install Rust on a Raspberry Pi.
Setting Up Your Raspberry Pi
For this project you will need:
- Raspberry Pi.
- LED.
- 220-1k Ohm resistor.
- Breadboard and hookup wires.
Set up your circuit with GPIO 18 connected to the positive leg of the LED, and the negative leg of the LED to the resistor, and back to a GND pin on the Pi.
This tutorial was made using a Raspberry Pi 3B+ with Raspbian Stretch in desktop mode. It would work perfectly fine through a remote SSH connection too, though different models of Pi and different operating systems might have varying results.
How to Install Rust on Raspberry Pi
To install rust, head to the rust-lang install page and copy the install command into your terminal. When prompted, choose a default installation.
The installer will notify you when it is complete, though installation can take some time depending on your connection.
After Installation
The installation is successful, but you can’t start using it quite yet. If you try to check for Rust and Cargo by version, you will get an error. Usually, you must add a language to your PATH to use them on the command line.
Luckily Rust does this for you, and all you need to do is reboot your Pi, or log out and in again. Now checking for Rust and Cargo should work.
You’ll be compiling and building all of your scripts from the terminal, but you’ll also need a code editor. In this project I’ll be using Code-OSS, a community build of VS Code which you can install on the Pi, but it’s not essential. Any code editor will do.
Creating a Rust Project
To create a Rust project, make a new directory and enter it by typing
mkdir YourFolder
cd YourFolder
Use Cargo to create a new Rust project.
cargo new YourProject
You’ll get a confirmation that the new project has been created.
Enter the new project folder and list its contents.
cd YourProject
ls
You’ll see a folder named src and a file called Cargo.toml. These two elements make up the basis of every Rust project.
A Simple Rust Project, Explained
First, lets open up the src directory, and open main.rs in a code editor. You’ll see that the new project comes complete with a “Hello World” script to get you started.
Rust syntax will be familiar to those who have used C languages or Java before. This differs from Python which uses whitespace, semi-colons and braces to denote code blocks. Rust code must compile and build before it runs.
Back in the project’s parent folder, open up Cargo.toml in a code editor. Anyone who has coded in JavaScript or Ruby will likely find this familiar. Project information, build instructions, and dependencies are all listed in this file. Packages are called Crates in Rust, and we’ll be using one later to access the Raspberry Pi’s GPIO pins.
Building the Sample Project
Back in the terminal window, make sure you are in your project directory and build the project.
cargo build
This creates another folder within your project called target. You will also notice a new file called Cargo.lock. When working with a team or coding something to deploy to a server, this file locks the project to a version that has previously compiled and built successfully. While learning, you can safely ignore this file.
Within the target folder is a subfolder called debug, and this is where your executable file will be. On Mac and Linux, run your project by typing:
./YourProject
On Windows, you will have a new EXE file which you can run by double-clicking.
Success! Let’s convert this project into something that uses the GPIO pins.
Setting Up GPIO Pins
We will be using the rust_gpiozero crate by Rahul Thakdoor for this project. While it is not the only way to access GPIO pins, this crate is designed to be similar to the Python GPIO Zero library.
Instead of manually downloading the crate, paste its name under dependencies in the Cargo.toml file.
[dependencies]
rust_gpiozero = "0.2.0"
Save it, and open your terminal. At this stage, there is no point in rebuilding the project as no code has changed. Cargo provides a function which will check that the code will compile and that all dependencies are present.
cargo check
Depending on your connection this can take a few minutes, but you only need to do it once, when you add or change items in the Cargo.toml file.
Hello Blink
Now you will change your hello world script into a blinking light script. Begin by opening main.rs in your editor. If you want to skip coding, you can find the finished script on Github Gist.
You need to let the compiler know you are using the rust_gpiozero library, so at the very top of the script add a reference to the library.
use rust_gpiozero::*;
Much like the regular Python based blink sketch, we need a way to add a delay between turning the LED on and off. In Rust, we use two elements of the standard library to do this:
use std::thread::sleep;
use std::time::Duration; // note the capital D!
Now in your main function, add a variable for your LED pin, and a loop to contain the blinking instructions.
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));
}
That’s it! Save your script, and return to the terminal.
Test It Out
Build the project again to update the executable. Alternatively, the run command builds and runs the script in a single step:
cargo run
You should see a blinking LED. Well done! You’ve just made your first hardware program with Rust. Press Ctrl-C to exit back to the terminal. If you have any errors, check over your code thoroughly for any missed colons, semi-colons or brackets.
An Exciting Future With Rust on Raspberry Pi
Currently, Python isn’t in any danger of being replaced by Rust. It is easy to learn and Python will have many applications for years to come.
That said, Rust has quite a buzz around it, and there are many reasons why you should learn the language!
Read the full article: How to Get Started With Rust on Raspberry Pi
from MakeUseOf http://bit.ly/2I7b64H
via IFTTT
0 comments:
Post a Comment