On branch main
Your branch is up to date with 'origin/main'. Changes to be committed: modified: README.md new file: examples/SIK_Circuit_1A-Blink/SIK_Circuit_1A-Blink.ino new file: examples/SIK_Circuit_1B-Potentiometer/SIK_Circuit_1B-Potentiometer.ino new file: examples/SIK_Circuit_1C-Photoresistor/SIK_Circuit_1C-Photoresistor.ino new file: examples/SIK_Circuit_1D-RGBNightlight/SIK_Circuit_1D-RGBNightlight.ino new file: examples/SIK_Circuit_2A-Buzzer/SIK_Circuit_2A-Buzzer.ino new file: examples/SIK_Circuit_2B-DigitalTrumpet/SIK_Circuit_2B-DigitalTrumpet.ino new file: examples/SIK_Circuit_2C-SimonSays/SIK_Circuit_2C-SimonSays.ino new file: examples/SIK_Circuit_3A-Servo/SIK_Circuit_3A-Servo.ino new file: examples/SIK_Circuit_3B-DistanceSensor/SIK_Circuit_3B-DistanceSensor.ino new file: examples/SIK_Circuit_3C-MotionAlarm/SIK_Circuit_3C-MotionAlarm.ino new file: examples/SIK_Circuit_4A-LCDHelloWorld/SIK_Circuit_4A-LCDHelloWorld.ino new file: examples/SIK_Circuit_4B-TemperatureSensor/SIK_Circuit_4B-TemperatureSensor.ino new file: examples/SIK_Circuit_4C-DIYWhoAmI/SIK_Circuit_4C-DIYWhoAmI.ino new file: examples/SIK_Circuit_5A-MotorBasics/SIK_Circuit_5A-MotorBasics.ino new file: examples/SIK_Circuit_5B-RemoteControlRobot/SIK_Circuit_5B-RemoteControlRobot.ino new file: examples/SIK_Circuit_5C-AutonomousRobot/SIK_Circuit_5C-AutonomousRobot.ino new file: library.properties new file: src/SIK.h
This commit is contained in:
parent
35e1115a5c
commit
0cf48bdc8d
19 changed files with 1654 additions and 2 deletions
|
@ -0,0 +1,108 @@
|
|||
/*
|
||||
SparkFun Inventor’s Kit
|
||||
Circuit 3C-Motion Alarm
|
||||
|
||||
Control the color of an RGB LED using an ultrasonic distance sensor. When an object is close to the sensor, buzz the buzzer and wiggle the servo motor.
|
||||
|
||||
This sketch was written by SparkFun Electronics, with lots of help from the Arduino community.
|
||||
This code is completely free for any use.
|
||||
|
||||
View circuit diagram and instructions at: https://learn.sparkfun.com/tutorials/sparkfun-inventors-kit-experiment-guide---v41
|
||||
Download drawings and code at: https://github.com/sparkfun/SIK-Guide-Code
|
||||
*/
|
||||
|
||||
#include <Servo.h> //include the servo library
|
||||
|
||||
const int trigPin = 11; //connects to the trigger pin on the distance sensor
|
||||
const int echoPin = 12; //connects to the echo pin on the distance sensor
|
||||
|
||||
const int redPin = 3; //pin to control the red LED inside the RGB LED
|
||||
const int greenPin = 5; //pin to control the green LED inside the RGB LED
|
||||
const int bluePin = 6; //pin to control the blue LED inside the RGB LED
|
||||
|
||||
const int buzzerPin = 10; //pin that will drive the buzzer
|
||||
|
||||
float distance = 0; //stores the distance measured by the distance sensor
|
||||
|
||||
Servo myservo; //create a servo object
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin (9600); //set up a serial connection with the computer
|
||||
|
||||
pinMode(trigPin, OUTPUT); //the trigger pin will output pulses of electricity
|
||||
pinMode(echoPin, INPUT); //the echo pin will measure the duration of pulses coming back from the distance sensor
|
||||
|
||||
//set the RGB LED pins to output
|
||||
pinMode(redPin, OUTPUT);
|
||||
pinMode(greenPin, OUTPUT);
|
||||
pinMode(bluePin, OUTPUT);
|
||||
|
||||
pinMode(buzzerPin, OUTPUT); //set the buzzer pin to output
|
||||
|
||||
myservo.attach(9); //use pin 9 to control the servo
|
||||
|
||||
}
|
||||
|
||||
void loop() {
|
||||
distance = getDistance(); //variable to store the distance measured by the sensor
|
||||
|
||||
Serial.print(distance); //print the distance that was measured
|
||||
Serial.println(" in"); //print units after the distance
|
||||
|
||||
if (distance <= 10) { //if the object is close
|
||||
|
||||
//make the RGB LED red
|
||||
analogWrite(redPin, 255);
|
||||
analogWrite(greenPin, 0);
|
||||
analogWrite(bluePin, 0);
|
||||
|
||||
//this code wiggles the servo and beeps the buzzer
|
||||
tone(buzzerPin, 272); //buzz the buzzer pin
|
||||
myservo.write(10); //move the servo to 45 degrees
|
||||
delay(100); //wait 100 milliseconds
|
||||
|
||||
noTone(buzzerPin); //turn the buzzer off
|
||||
myservo.write(150); //move the servo to 135 degrees
|
||||
delay(100); //wait 100 milliseconds
|
||||
|
||||
|
||||
} else if (10 < distance && distance < 20) { //if the object is a medium distance
|
||||
|
||||
//make the RGB LED yellow
|
||||
analogWrite(redPin, 255);
|
||||
analogWrite(greenPin, 50);
|
||||
analogWrite(bluePin, 0);
|
||||
|
||||
} else { //if the object is far away
|
||||
|
||||
//make the RGB LED green
|
||||
analogWrite(redPin, 0);
|
||||
analogWrite(greenPin, 255);
|
||||
analogWrite(bluePin, 0);
|
||||
}
|
||||
|
||||
delay(50); //delay 50ms between each reading
|
||||
}
|
||||
|
||||
//------------------FUNCTIONS-------------------------------
|
||||
|
||||
//RETURNS THE DISTANCE MEASURED BY THE HC-SR04 DISTANCE SENSOR
|
||||
float getDistance()
|
||||
{
|
||||
float echoTime; //variable to store the time it takes for a ping to bounce off an object
|
||||
float calculatedDistance; //variable to store the distance calculated from the echo time
|
||||
|
||||
//send out an ultrasonic pulse that's 10ms long
|
||||
digitalWrite(trigPin, HIGH);
|
||||
delayMicroseconds(10);
|
||||
digitalWrite(trigPin, LOW);
|
||||
|
||||
echoTime = pulseIn(echoPin, HIGH); //use the pulsein command to see how long it takes for the
|
||||
//pulse to bounce back to the sensor
|
||||
|
||||
calculatedDistance = echoTime / 148.0; //calculate the distance of the object that reflected the pulse (half the bounce time multiplied by the speed of sound)
|
||||
|
||||
return calculatedDistance; //send back the distance that was calculated
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue