/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
int sensor = 2;
int led = 13;
int pirVal = 0;
int state = LOW;
void setup() {
Serial.begin(115200);
Serial.println("Welcome to the Serial Playground!");
Serial.println("---------------------------------");
myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(sensor, INPUT);
pinMode(led, OUTPUT);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
}
void loop() {
// Serial.print("Counter: ");
if (Serial.available()) {
Serial.write(Serial.read());
}
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val);
// sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
// PIR Sensor reading
pirVal = digitalRead(sensor); // read sensor value
if (pirVal == HIGH) { // check if the sensor is HIGH
digitalWrite(led, HIGH); // turn LED ON
delay(500); // delay 100 milliseconds
if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH; // update variable state to HIGH
}
}
else {
digitalWrite(led, LOW); // turn LED OFF
delay(500); // delay 200 milliseconds
if (state == HIGH) {
Serial.println("Motion stopped!");
state = LOW; // update variable state to LOW
}
}
}