Yes, you can multithread Finch robots, but how you do it — and how well it works — depends on:
Language | Multithreading Support | Finch API Support | Notes |
---|---|---|---|
Java | Excellent (Thread , ExecutorService ) |
Official BirdBrain Java Library | Great for schools; ideal for AP CS courses |
Python | Good (threading , asyncio ) |
birdbrainrobotics Python library |
More accessible, but timing can be trickier |
C# (.NET) | Excellent (Task , Thread ) |
Supported in Finch 3 via MakeCode | Windows-centric, less common in classrooms |
Scratch / MakeCode | Limited | Supported for Finch 3 | Visual programming; not for real multithreading |
C++ | Powerful but complex | No official API | Not recommended for students; low-level work needed |
import edu.cmu.ri.createlab.terk.robot.finch.Finch;
public class MultiThreadFinch {
public static void main(String[] args) {
Finch myFinch = new Finch();
// Thread 1: Move
Thread moveThread = new Thread(() -> {
myFinch.setWheelVelocities(100, 100, 2000);
});
// Thread 2: Lights
Thread lightThread = new Thread(() -> {
myFinch.setLED(255, 0, 0, 1000);
myFinch.setLED(0, 255, 0, 1000);
myFinch.setLED(0, 0, 255, 1000);
});
moveThread.start();
lightThread.start();
}
}
sleep
or delay
methods to synchronize timing.Let me know:
I can give you custom sample code or templates for your class.