diff --git a/Makefile b/Makefile index f821564..bd347bf 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ OUTPUT=$(MAIN:.ml=.bin) all: $(OBJECTS) $(CC) $(OPT) -cclib -lwiringPi unix.cma $(SOURCES) $(MAIN) -o $(OUTPUT) + $(CC) $(OPT) -cclib -lwiringPi unix.cma $(SOURCES) test_led.ml -o test_led.bin clean: rm -f *.cmo *.cmi *.cmx diff --git a/sapin_noel.bin b/sapin_noel.bin index 1336651..d28e796 100755 Binary files a/sapin_noel.bin and b/sapin_noel.bin differ diff --git a/sapin_noel.ml b/sapin_noel.ml index 61bf295..9f6c3f9 100644 --- a/sapin_noel.ml +++ b/sapin_noel.ml @@ -28,18 +28,37 @@ let anim_01 reg leds n = clearLeds leds; for k = 0 to (Array.length leds) - 1 do leds.(k) <- true; - applyReg reg leds 0.1; + 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.1; + applyReg reg leds 0.2; leds.(k) <- false done; lightLeds leds; 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 + let _ = (* On choisit le mode d'affichage Phys *) ignore(setupPhys ()); @@ -47,9 +66,9 @@ let _ = (* On crée le register *) (* En mode pulse : *) (* let reg = genReg 11 13 15 ~pulse:true in *) - let reg = genReg 11 13 15 in + let reg = genReg 11 13 15 ~invert:false in (* On initialise *) - let leds = initReg reg ~nb_reg:1 in + let leds = initReg reg ~nb_reg:2 in let t = true and f = false in Printf.printf "Début\n%!"; diff --git a/test_led.ml b/test_led.ml new file mode 100644 index 0000000..fec2304 --- /dev/null +++ b/test_led.ml @@ -0,0 +1,80 @@ +open WiringPiOcaml;; +open ShiftReg;; + +let test reg leds = + lightLeds leds; + (* Pour montrer la différence entre les deux modes *) + Printf.printf "The pulse mode...\n%!"; + applyRegPulse reg leds 2.; + + Printf.printf "The classic mode...\n%!"; + applyRegAll reg leds; + Unix.sleep 2; + + Printf.printf "Only one led :\n%!"; + clearLeds leds; + leds.(1) <- true; + Printf.printf "The pulse mode...\n%!"; + applyRegPulse reg leds 2.; + + Printf.printf "The classic mode...\n%!"; + applyRegAll reg leds; + Unix.sleep 2 + +let _ = + let what = Sys.argv.(1) in + Printf.printf "%s\n" Sys.argv.(1); + ignore(setupPhys ()); + let reg = genReg 11 13 15 ~invert:false in + let leds = initReg reg ~nb_reg:2 in + let t = true + and f = false in + clearLeds leds; + if what = "g" then begin + let make_t n k = + clearLeds leds; + for k = 0 to Array.length leds - 1 do + if k mod 3 = 0 then + leds.(k) <- t; + done + in + make_t 3 0; + let t1 = Array.copy leds in + make_t 3 1; + let t2 = Array.copy leds in + make_t 3 2; + let t3 = Array.copy leds in + let t = [|t1;t2;t3|] in + while true do + applyReg reg t1 0.5; + applyReg reg t2 0.5; + applyReg reg t3 0.5; + done + end + else if what = "a" then begin + lightLeds leds; + while true do + applyReg reg leds 10.; + done; + end + else if what = "e" then begin + clearLeds leds; + while true do + applyReg reg leds 10.; + done; + end + else if what = "f" then begin + findLedNumber reg leds; + end + else if what = "obo" then begin + clearLeds leds; + leds.(int_of_string Sys.argv.(2)) <- t; + applyReg reg leds 10.; + end + + + +(* + 9 -> saute la 7e (première du nvx) + 15 --> réagit légèrement +*)