Votre premier programme
Vous avez préparé le Pi. Créons un projet, tirons le package matériel, et faisons clignoter une LED.
Câbler une LED
GPIO17 ──▶│── 330Ω ──┐
LED │
GND
La patte longue de la LED (anode) va sur GPIO17 (numérotation BCM), la patte courte (cathode) passe par une résistance 330 Ω jusqu'à n'importe quelle broche GND.
Numérotation BCM. Amalgame utilise les numéros GPIO Broadcom (les mêmes que
gpiozeroet la plupart des tutoriels), pas les positions physiques des broches. GPIO17 = broche physique 11.
Créer un projet
mkdir blink && cd blink
amc new . # génère amalgame.toml + main.am
Ajouter le package matériel
amc package add hardware-gpio
Cela écrit la dépendance dans amalgame.toml, la résout, et
enregistre la révision exacte dans amalgame.lock :
[dependencies.hardware-gpio]
git = "https://github.com/amalgame-lang/amalgame-hardware-gpio"
tag = "v0.6.0"
Nécessite amc ≥ 0.8.72. Lancez
amc --version; s'il est plus ancien, relancez la commande d'installation pour le mettre à jour.
L'écrire
Mettez ceci dans main.am :
namespace Demo
import Amalgame.Hardware
import Amalgame.DateTime // pour la pause entre deux bascules
public class Program {
public static void Main(string[] args) {
Console.WriteLine("backend libgpiod : " + Gpio.Backend())
let led: int = 17
if (!Gpio.PinMode(led, PinMode.Output)) {
Console.WriteLine("impossible d'ouvrir GPIO17 — vérifiez les permissions")
return
}
var i: int = 0
while (i < 20) {
Gpio.Toggle(led)
DateTime.SleepMillis(500)
i = i + 1
}
Gpio.Close()
}
}
DateTime.SleepMillisvient du packageamalgame-datetime— ajoutez-le aussi :amc package add datetime. (Aucun C inline : le sleep vit dans le package, écrit en Amalgame par-dessus un unique appel FFInanosleep.)
Compiler et lancer
amc build main.am -o blink
./blink # ou : sudo ./blink (si vous n'êtes pas dans le groupe 'gpio')
La LED clignote dix fois sur dix secondes, puis le programme se termine et le noyau récupère la ligne.
Si vous voyez impossible d'ouvrir GPIO17, c'est presque toujours une
question de permissions — relisez
l'étape 5 de la préparation
ou lancez simplement avec sudo.
Et voilà — vous pilotez du vrai matériel depuis Amalgame. Parcourez maintenant les exemples : un bouton anti-rebond côté noyau, un scan de capteurs I²C et un chenillard multi-LEDs.