You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							42 lines
						
					
					
						
							965 B
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							42 lines
						
					
					
						
							965 B
						
					
					
				| /* | |
|   Morse.cpp - Library for flashing Morse code. | |
|   Created by David A. Mellis, November 2, 2007. | |
|   Released into the public domain. | |
| */ | |
| 
 | |
| #include "Arduino.h" | |
| #include "input_4051.h" | |
|  | |
| const int tolerance = 4; | |
| 
 | |
| input_4051::input_4051(int analogPin, int s0Pin, int s1Pin, int s2Pin, void (*valueChangeCallback(int,int))) | |
| { | |
| 	_analog = analogPin; | |
| 	_s0 = s0Pin; | |
| 	_s1 = s1Pin; | |
| 	_s2 = s2Pin; | |
| 	pinMode(_analog,INPUT); | |
| 	pinMode(_s0,OUTPUT); | |
| 	pinMode(_s1,OUTPUT); | |
| 	pinMode(_s2,OUTPUT); | |
| 	_valueChangeCallback = valueChangeCallback; | |
| 	_value = {-1,-1,-1,-1,-1,-1,-1,-1}; | |
| } | |
| 
 | |
| void input_4051::loop() | |
| { | |
| 	for (count=0; count<=7; count++) { | |
| 		r0 = bitRead(count,0);      | |
| 		r1 = bitRead(count,1); | |
| 		r2 = bitRead(count,2);    | |
| 		digitalWrite(_s0, r0); | |
| 		digitalWrite(_s1, r1); | |
| 		digitalWrite(_s2, r2); | |
| 		int read = analogRead(_analog); | |
| 		if (value[count] < read - tolerance || value[count] > read + tolerance) { | |
| 			value[count] = read; | |
| 			_valueChangeCallback(count, read); | |
| 		} | |
| 	}  	 | |
| } | |
| 
 |