bdan
Published

Light-Sensitive Servo

When the light is on, there is no move from the servo. When light is off, the party mode begins, the servo lights up and the LED-S show off.

IntermediateWork in progress4 hours644
Light-Sensitive Servo

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
LED (generic)
LED (generic)
×3
Servos (Tower Pro MG996R)
×1
Breadboard (generic)
Breadboard (generic)
×1
Jumper wires (generic)
Jumper wires (generic)
×1
ethernet shield
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

Servo_uno

Arduino
/*
 HC-SR04 Ping distance sensor]
 VCC to arduino 5v GND to arduino GND
 Echo to Arduino pin 13 Trig to Arduino pin 12
 2 RGB LEDS set on PWM channels on ARDUINO UNO: 11,10,9,6,5,3;
 6 RGB LEDS
 TOWER PRO MICRO SERVO 9g SG90
 Generic Buzzer version 1.0
 TO CONTINUE:
 ADD ANALOG SENSOR
 
 */
#include <Servo.h>
/*
#define trigPin 13
#define echoPin 12
*/
int servoPin = 6;
Servo servo;
int servoAngle = 0; //pozitia servoului in grade
int pos;

#define  C0 16.35
#define Db0 17.32
#define D0  18.35
#define Eb0 19.45
#define E0  20.60
#define F0  21.83
#define Gb0 23.12
#define G0  24.50
#define Ab0 25.96
#define LA0 27.50
#define Bb0 29.14
#define B0  30.87
#define C1  32.70
#define Db1 34.65
#define D1  36.71
#define Eb1 38.89
#define E1  41.20
#define F1  43.65
#define Gb1 46.25
#define G1  49.00
#define Ab1 51.91
#define LA1 55.00
#define Bb1 58.27
#define B1  61.74
#define C2  65.41
#define Db2 69.30
#define D2  73.42
#define Eb2 77.78
#define E2  82.41
#define F2  87.31
#define Gb2 92.50
#define G2  98.00
#define Ab2 103.83
#define LA2 110.00
#define Bb2 116.54
#define B2  123.47
#define C3  130.81
#define Db3 138.59
#define D3  146.83
#define Eb3 155.56
#define E3  164.81
#define F3  174.61
#define Gb3 185.00
#define G3  196.00
#define Ab3 207.65
#define LA3 220.00
#define Bb3 233.08
#define B3  246.94
#define C4  261.63
#define Db4 277.18
#define D4  293.66
#define Eb4 311.13
#define E4  329.63
#define F4  349.23
#define Gb4 369.99
#define G4  392.00
#define Ab4 415.30
#define LA4 440.00
#define Bb4 466.16
#define B4  493.88
#define C5  523.25
#define Db5 554.37
#define D5  587.33
#define Eb5 622.25
#define E5  659.26
#define F5  698.46
#define Gb5 739.99
#define G5  783.99
#define Ab5 830.61
#define LA5 880.00
#define Bb5 932.33
#define B5  987.77
#define C6  1046.50
#define Db6 1108.73
#define D6  1174.66
#define Eb6 1244.51
#define E6  1318.51
#define F6  1396.91
#define Gb6 1479.98
#define G6  1567.98
#define Ab6 1661.22
#define LA6 1760.00
#define Bb6 1864.66
#define B6  1975.53
#define C7  2093.00
#define Db7 2217.46
#define D7  2349.32
#define Eb7 2489.02
#define E7  2637.02
#define F7  2793.83
#define Gb7 2959.96
#define G7  3135.96
#define Ab7 3322.44
#define LA7 3520.01
#define Bb7 3729.31
#define B7  3951.07
#define C8  4186.01
#define Db8 4434.92
#define D8  4698.64
#define Eb8 4978.03
// DURATION OF THE NOTES 
#define BPM 120    //  you can change this value changing all the others
#define H 2*Q //half 2/4
#define Q 60000/BPM //quarter 1/4 
#define E Q/2   //eighth 1/8
#define S Q/4 // sixteenth 1/16
#define W 4*Q // whole 4/4
/*
int redLED1 = 11;
int greenLED1 = 10;
int blueLED1 = 9;

int redLED2 = 6;
int greenLED2 = 5;
int blueLED2 = 3;

void setColor1( int redValue, int greenValue, int blueValue) {
  analogWrite(redLED1, redValue);
  analogWrite(greenLED1, greenValue);
  analogWrite(blueLED1, blueValue);
}

void setColor2( int redValue, int greenValue, int blueValue) {
  analogWrite(redLED2, redValue);
  analogWrite(greenLED2, greenValue);
  analogWrite(blueLED2, blueValue);
}
*/

void Miscare2() {
  for (pos = 0; pos < 165; pos += 1) 
  {
    servo.write(pos);
    delay(25);
  }
  for (pos = 165; pos >= 0; pos -= 1)
  {
    servo.write(pos);
    delay(25);
  }
}
void Imperial()
{
    tone(8,LA3,Q); 
    delay(1+Q); //delay duration should always be 1 ms more than the note in order to separate them.
    tone(8,LA3,Q);
    delay(1+Q);
    tone(8,LA3,Q);
    delay(1+Q);
    tone(8,F3,E+S);
    delay(1+E+S);
    tone(8,C4,S);
    delay(1+S);
    
    tone(8,LA3,Q);
    delay(1+Q);
    tone(8,F3,E+S);
    delay(1+E+S);
    tone(8,C4,S);
    delay(1+S);
    tone(8,LA3,H);
    delay(1+H);
       
    tone(8,E4,Q); 
    delay(1+Q); 
    tone(8,E4,Q);
    delay(1+Q);
    tone(8,E4,Q);
    delay(1+Q);
    tone(8,F4,E+S);
    delay(1+E+S);
    tone(8,C4,S);
    delay(1+S);
    
    tone(8,Ab3,Q);
    delay(1+Q);
    tone(8,F3,E+S);
    delay(1+E+S);
    tone(8,C4,S);
    delay(1+S);
    tone(8,LA3,H);
    delay(1+H);
    
    tone(8,LA4,Q);
    delay(1+Q);
    tone(8,LA3,E+S);
    delay(1+E+S);
    tone(8,LA3,S);
    delay(1+S);
    tone(8,LA4,Q);
    delay(1+Q);
    tone(8,Ab4,E+S);
    delay(1+E+S);
    tone(8,G4,S);
    delay(1+S);
    
    tone(8,Gb4,S);
    delay(1+S);
    tone(8,E4,S);
    delay(1+S);
    tone(8,F4,E);
    delay(1+E);
    delay(1+E);//PAUSE
    tone(8,Bb3,E);
    delay(1+E);
    tone(8,Eb4,Q);
    delay(1+Q);
    tone(8,D4,E+S);
    delay(1+E+S);
    tone(8,Db4,S);
    delay(1+S);
    
    tone(8,C4,S);
    delay(1+S);
    tone(8,B3,S);
    delay(1+S);
    tone(8,C4,E);
    delay(1+E);
    delay(1+E);//PAUSE QUASI FINE RIGA
    tone(8,F3,E);
    delay(1+E);
    tone(8,Ab3,Q);
    delay(1+Q);
    tone(8,F3,E+S);
    delay(1+E+S);
    tone(8,LA3,S);
    delay(1+S);
    
    tone(8,C4,Q);
    delay(1+Q);
     tone(8,LA3,E+S);
    delay(1+E+S);
    tone(8,C4,S);
    delay(1+S);
    tone(8,E4,H);
    delay(1+H);
    
     tone(8,LA4,Q);
    delay(1+Q);
    tone(8,LA3,E+S);
    delay(1+E+S);
    tone(8,LA3,S);
    delay(1+S);
    tone(8,LA4,Q);
    delay(1+Q);
    tone(8,Ab4,E+S);
    delay(1+E+S);
    tone(8,G4,S);
    delay(1+S);
    
    tone(8,Gb4,S);
    delay(1+S);
    tone(8,E4,S);
    delay(1+S);
    tone(8,F4,E);
    delay(1+E);
    delay(1+E);//PAUSE
    tone(8,Bb3,E);
    delay(1+E);
    tone(8,Eb4,Q);
    delay(1+Q);
    tone(8,D4,E+S);
    delay(1+E+S);
    tone(8,Db4,S);
    delay(1+S);
    
    tone(8,C4,S);
    delay(1+S);
    tone(8,B3,S);
    delay(1+S);
    tone(8,C4,E);
    delay(1+E);
    delay(1+E);//PAUSE QUASI FINE RIGA
    tone(8,F3,E);
    delay(1+E);
    tone(8,Ab3,Q);
    delay(1+Q);
    tone(8,F3,E+S);
    delay(1+E+S);
    tone(8,C4,S);
    delay(1+S);
    
    tone(8,LA3,Q);
    delay(1+Q);
     tone(8,F3,E+S);
    delay(1+E+S);
    tone(8,C4,S);
    delay(1+S);
    tone(8,LA3,H);
    delay(1+H);   
    delay(2*H);
}
void Miscare()
{
  servo.write(0);
  delay(100);
  servo.write(30);
  delay(1000);
  servo.write(45);
  delay(1000);
  servo.write(90);
  delay(1000);
  servo.write(135);
  delay(1000);
  servo.write(90);
  delay(500);
  servo.write(45);
  delay(500);
  servo.write(30);
  delay(500);
  servo.write(0);
  delay(500);
  for(servoAngle = 0; servoAngle < 180; servoAngle++)
  {
    servo.write(servoAngle);
    delay(21);
  }
/*
  for(servoAngle = 180; servoAngle > 0; servoAngle--)
  {
    servo.write(servoAngle);
    delay(10);
  }
  */
}

void setup() {
  Serial.begin (9600);
  /* one time i made to work with rgb leds
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(redLED1, OUTPUT);
  pinMode(greenLED1, OUTPUT);
  pinMode(blueLED1, OUTPUT);
  pinMode(redLED2, OUTPUT);
  pinMode(greenLED2, OUTPUT);
  pinMode(blueLED2, OUTPUT);
  */
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  servo.attach(servoPin);
  pinMode(9, OUTPUT);
}

void loop() {
  int iluminare = analogRead(0);
  /* Another try / good to look if you have a similar project
  Serial.println(iluminare);
delay(100);
 long duration, distance;
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
//  delayMicroseconds(1000); - Removed this line
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  if (distance < 4) {  // This is where the LED On/Off happens
    setColor1(100, 100, 100);
    setColor2(0, 150, 250);
        }
  else {
    Miscare();
    setColor1(255, 0, 0); //RED
    setColor2(255, 0, 0); //RED
  }
  if (distance >= 200 || distance <= 0){
    Serial.println("Out of range");
    setColor1(0, 0, 255); //BLUE
    delay(100);
    setColor2(0 , 0, 255); //BLUE
  }
  else {
    Serial.print(distance);
    Serial.println(" CM");
  }
  delay(500);
  */
  /*delay(100);
  for (int i = 1500; i < 4000; i++) {
    tone(11,i);
    delay(21);
  }
  */
  Serial.println(iluminare);
  delay(10);
  if (iluminare > 120)
  {
    for(int i = 0; i < 255; i++) {
      analogWrite(11, i);
      delay(21);
    }

    for (int i = 255; i > 0; i--) {
      analogWrite(11, i);
      delay(5);
    }
  }
  
  //servo.stop();
  //ton inceput procedura
    
    if (iluminare < 120)
    {
    Miscare();
    digitalWrite(12, HIGH);
    delay(2500);
    digitalWrite(12, LOW);
    delay(100);
    Miscare2();
    digitalWrite(10, HIGH);
    delay(2500);
    digitalWrite(10, LOW);
    delay(100);
  //ton oprire procedura
  }
 
  digitalWrite(10, LOW);
  delay(500);
  digitalWrite(12, LOW);
  delay(500);
  digitalWrite(11, HIGH);
  delay(210);
  digitalWrite(11, LOW);
  delay(200);
}

Credits

bdan

bdan

6 projects • 7 followers
Hi! Welcome to my profile. Right now studying Arduino and Tkinter library for medical projects.

Comments