mirror of
				https://github.com/esp8266/Arduino.git
				synced 2025-11-03 14:33:37 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
  Conditionals - while statement
 | 
						|
 
 | 
						|
 This example demonstrates the use of  while() statements.
 | 
						|
 
 | 
						|
 While the pushbutton is pressed, the sketch runs the calibration routine.
 | 
						|
 The  sensor readings during the while loop define the minimum and maximum 
 | 
						|
 of expected values from the photo resistor.
 | 
						|
 
 | 
						|
 This is a variation on the calibrate example.
 | 
						|
 
 | 
						|
 The circuit:
 | 
						|
 * photo resistor connected from +5V to analog in pin 0
 | 
						|
 * 10K resistor connected from ground to analog in pin 0
 | 
						|
 * LED connected from digital pin 9 to ground through 220 ohm resistor
 | 
						|
 * pushbutton attached from pin 2 to +5V
 | 
						|
 * 10K resistor attached from pin 2 to ground
 | 
						|
 
 | 
						|
 created 17 Jan 2009
 | 
						|
 modified 30 Aug 2011
 | 
						|
 by Tom Igoe
 | 
						|
 
 | 
						|
 This example code is in the public domain.
 | 
						|
 | 
						|
 http://arduino.cc/en/Tutorial/WhileLoop
 | 
						|
 
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
// These constants won't change:
 | 
						|
const int sensorPin = A2;       // pin that the sensor is attached to
 | 
						|
const int ledPin = 9;           // pin that the LED is attached to
 | 
						|
const int indicatorLedPin = 13; // pin that the built-in LED is attached to
 | 
						|
const int buttonPin = 2;        // pin that the button is attached to
 | 
						|
 | 
						|
 | 
						|
// These variables will change:
 | 
						|
int sensorMin = 1023;  // minimum sensor value
 | 
						|
int sensorMax = 0;     // maximum sensor value
 | 
						|
int sensorValue = 0;         // the sensor value
 | 
						|
 | 
						|
 | 
						|
void setup() {
 | 
						|
  // set the LED pins as outputs and the switch pin as input:
 | 
						|
  pinMode(indicatorLedPin, OUTPUT);
 | 
						|
  pinMode (ledPin, OUTPUT);
 | 
						|
  pinMode (buttonPin, INPUT);
 | 
						|
}
 | 
						|
 | 
						|
void loop() {
 | 
						|
  // while the button is pressed, take calibration readings:
 | 
						|
  while (digitalRead(buttonPin) == HIGH) {
 | 
						|
    calibrate(); 
 | 
						|
  }
 | 
						|
  // signal the end of the calibration period
 | 
						|
  digitalWrite(indicatorLedPin, LOW);  
 | 
						|
 | 
						|
  // read the sensor:
 | 
						|
  sensorValue = analogRead(sensorPin);
 | 
						|
 | 
						|
  // apply the calibration to the sensor reading
 | 
						|
  sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
 | 
						|
 | 
						|
  // in case the sensor value is outside the range seen during calibration
 | 
						|
  sensorValue = constrain(sensorValue, 0, 255);
 | 
						|
 | 
						|
  // fade the LED using the calibrated value:
 | 
						|
  analogWrite(ledPin, sensorValue);
 | 
						|
}
 | 
						|
 | 
						|
void calibrate() {
 | 
						|
  // turn on the indicator LED to indicate that calibration is happening:
 | 
						|
  digitalWrite(indicatorLedPin, HIGH);
 | 
						|
  // read the sensor:
 | 
						|
  sensorValue = analogRead(sensorPin);
 | 
						|
 | 
						|
  // record the maximum sensor value
 | 
						|
  if (sensorValue > sensorMax) {
 | 
						|
    sensorMax = sensorValue;
 | 
						|
  }
 | 
						|
 | 
						|
  // record the minimum sensor value
 | 
						|
  if (sensorValue < sensorMin) {
 | 
						|
    sensorMin = sensorValue;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 |