mirror of
				https://github.com/co-dan/ocaml-wiringpi/
				synced 2025-11-03 22:23:51 +01:00 
			
		
		
		
	Add test_led with lot's of interesting test functions (not documented yet), and the file sapin_noel is for 2 reg now.
This commit is contained in:
		
							
								
								
									
										1
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
									
									
									
									
								
							@@ -11,6 +11,7 @@ OUTPUT=$(MAIN:.ml=.bin)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
all: $(OBJECTS)
 | 
					all: $(OBJECTS)
 | 
				
			||||||
	$(CC) $(OPT) -cclib -lwiringPi unix.cma $(SOURCES) $(MAIN) -o $(OUTPUT)
 | 
						$(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:
 | 
					clean:
 | 
				
			||||||
	rm -f *.cmo *.cmi *.cmx 
 | 
						rm -f *.cmo *.cmi *.cmx 
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								sapin_noel.bin
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								sapin_noel.bin
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -28,18 +28,37 @@ let anim_01 reg leds n =
 | 
				
			|||||||
    clearLeds leds;
 | 
					    clearLeds leds;
 | 
				
			||||||
    for k = 0 to (Array.length leds) - 1 do
 | 
					    for k = 0 to (Array.length leds) - 1 do
 | 
				
			||||||
      leds.(k) <- true;
 | 
					      leds.(k) <- true;
 | 
				
			||||||
      applyReg reg leds 0.1;
 | 
					      applyReg reg leds 0.2;
 | 
				
			||||||
      leds.(k) <- false
 | 
					      leds.(k) <- false
 | 
				
			||||||
    done;
 | 
					    done;
 | 
				
			||||||
    for k = (Array.length leds) - 2 downto 0 do
 | 
					    for k = (Array.length leds) - 2 downto 0 do
 | 
				
			||||||
      leds.(k) <- true;
 | 
					      leds.(k) <- true;
 | 
				
			||||||
      applyReg reg leds 0.1;
 | 
					      applyReg reg leds 0.2;
 | 
				
			||||||
      leds.(k) <- false
 | 
					      leds.(k) <- false
 | 
				
			||||||
    done;
 | 
					    done;
 | 
				
			||||||
    lightLeds leds;
 | 
					    lightLeds leds;
 | 
				
			||||||
    applyReg reg leds 1.;
 | 
					    applyReg reg leds 1.;
 | 
				
			||||||
  done
 | 
					  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 _ =
 | 
					let _ =
 | 
				
			||||||
  (* On choisit le mode d'affichage Phys *)
 | 
					  (* On choisit le mode d'affichage Phys *)
 | 
				
			||||||
  ignore(setupPhys ());
 | 
					  ignore(setupPhys ());
 | 
				
			||||||
@@ -47,9 +66,9 @@ let _ =
 | 
				
			|||||||
  (* On crée le register *)
 | 
					  (* On crée le register *)
 | 
				
			||||||
  (* En mode pulse : *)
 | 
					  (* En mode pulse : *)
 | 
				
			||||||
  (* let reg = genReg 11 13 15 ~pulse:true in *)
 | 
					  (* 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 *)
 | 
					  (* On initialise *)
 | 
				
			||||||
  let leds = initReg reg ~nb_reg:1 in
 | 
					  let leds = initReg reg ~nb_reg:2 in
 | 
				
			||||||
  let t = true
 | 
					  let t = true
 | 
				
			||||||
  and f = false in
 | 
					  and f = false in
 | 
				
			||||||
  Printf.printf "Début\n%!";
 | 
					  Printf.printf "Début\n%!";
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										80
									
								
								test_led.ml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								test_led.ml
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
 | 
					*)
 | 
				
			||||||
		Reference in New Issue
	
	Block a user