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.