ocaml-wiringpi/test/sapin_noel.ml

82 lines
2.1 KiB
OCaml
Raw Normal View History

open WiringPiOcaml;;
open ShiftReg;;
let g_invert = false
and g_pulse = false
and g_nb_reg = 2
2013-12-08 00:18:56 +01:00
(* Ici on utilise des fonctions plus souples mais moins agréables pour les tests. Pour voir les fonctions classiques, cf anim_01 *)
let test reg leds =
2013-12-07 22:52:01 +01:00
lightLeds leds;
(* Pour montrer la différence entre les deux modes *)
2013-12-08 00:18:56 +01:00
Printf.printf "The pulse mode...\n%!";
2013-12-07 22:52:01 +01:00
applyRegPulse reg leds 2.;
2013-12-08 00:18:56 +01:00
Printf.printf "The classic mode...\n%!";
applyRegAll reg leds;
2013-12-07 22:52:01 +01:00
Unix.sleep 2;
2013-12-08 00:18:56 +01:00
Printf.printf "Only one led :\n%!";
2013-12-07 22:52:01 +01:00
clearLeds leds;
leds.(1) <- true;
2013-12-08 00:18:56 +01:00
Printf.printf "The pulse mode...\n%!";
2013-12-07 22:52:01 +01:00
applyRegPulse reg leds 2.;
2013-12-08 00:18:56 +01:00
Printf.printf "The classic mode...\n%!";
applyRegAll reg leds;
Unix.sleep 2
(* S'inspirer de ce schéma pour les animations *)
let anim_01 reg leds n =
for i = 0 to n do
2013-12-07 22:52:01 +01:00
clearLeds leds;
for k = 0 to (Array.length leds) - 1 do
leds.(k) <- true;
applyReg reg leds 0.2;
leds.(k) <- false
done;
for k = (Array.length leds) - 2 downto 0 do
leds.(k) <- true;
applyReg reg leds 0.2;
leds.(k) <- false
done;
lightLeds leds;
2013-12-08 00:18:56 +01:00
applyReg reg leds 1.;
done
let anim_02 reg leds n =
let t = ref 1. in
for i = 0 to n do
clearLeds leds;
for k = 0 to (Array.length leds) - 1 do
leds.(k) <- true;
applyReg reg leds (!t /. 10.);
leds.(k) <- false
done;
for k = (Array.length leds) - 2 downto 0 do
leds.(k) <- true;
applyReg reg leds (!t /. 10.);
leds.(k) <- false
done;
lightLeds leds;
applyReg reg leds !t;
t := !t /. 1.2;
done
2013-12-08 00:18:56 +01:00
let _ =
let t = true
and f = false in
2013-12-08 00:18:56 +01:00
(* On choisit le mode d'affichage Phys *)
ignore(setupPhys ());
(* reg : pin_value = p_v, pin_shift = p_s, pin_apply = p_a *)
(* On crée le register *)
2013-12-11 23:04:49 +01:00
(* En mode pulse : *)
(* let reg = genReg 11 13 15 ~pulse:true in *)
let reg = genReg 11 13 15 ~invert:g_invert ~pulse:g_pulse in
2013-12-08 00:18:56 +01:00
(* On initialise *)
let leds = initReg reg ~nb_reg:g_nb_reg in
2013-12-08 00:18:56 +01:00
Printf.printf "Début\n%!";
(* And a pretty animation *)
anim_01 reg leds max_int;
(* findLedNumber reg leds *)