Hello everyone!
Today I am going to explain you about making the second version of my light tracker. This light tracker will move in both horizontal and vertical directions. You can read about the first version of the light tracker here.
Hardware components used in this project
- Arduino Uno
- USB Type A/ B cable (for Arduino Uno)
- Solderless Breadboard - Full+
- Breadboard Power supply module - 3.3/ 5 V
- Towerpro Micro servo motor (x2) - SG90
- Photoresistor (x4) - also known as LDR
- Resistors (x4) - 1kΩ
- Male-to-Male Jumper wires
Tools and other supplies
- Soldering station/ iron
- Solder
- Double sided tape
- 3D printed/ cardboard bracket
Setup
Your setup must look somewhat similar to those in the pictures above.
Connections
TowerPro Micro servo motor - SG90
- (+) (Red wire) - 5V
- (-) (Black/ Brown wire) - Ground (GND)
- S (Yellow/ Orange wire) - D9 [Vertical movement]
- S (Yellow/ Orange wire) - D10 [Horizontal movement]
Photoresistor
- Bottom right - A0
- Top right - A1
- Bottom left - A2
- Top left - A3
Coding
For this project, you will be needing the 'Servo' library by Michael Margolis. If you are new to using this library, feel free to follow this link: https://www.arduino.cc/en/reference/servo.
Include the library in your sketch and create servo objects by using servo syntax. Create global variables for your LDRs.
Within void setup( ), use attach( ) function to declare the pin to which the servos are attached and set the initial position of the servos as 90 by using write( ) function. You do not have to use the pinMode() function to configure the pins of the LDR as INPUT because they are already connected to the Analog ports.
Within void loop( ), create local variables to read the analog values produced by the LDRs. Calculate the average values and store them in variables named 'top', 'bottom', 'left' and 'right'.
- top = (topright+topleft)/2
- bottom = (bottomright+bottomright)/2
- right=(topright+bottomright)/2
- left=(topleft+bottomleft)/2
If the value stored in the top variable is greater than that stored in the bottom variable, the vertical servo's position must increment by one. If it is the opposite, then the position must decrement by one.
If the value stored in the right variable is greater than that stored in the left variable, the horizontal servo's position must increment by one. If it is the opposite, then the position must decrement by one.
Set a delay period of 100 milliseconds before completing the loop.
If anyone has any questions with the coding, please feel free to comment below or send me an email at arduinoprojectsbyr@gmail.com.
Final Look
If anyone has any questions, or suggestions, about this project, please feel free to comment below or send me an email at arduinoprojectsbyr@gmail.com.
Comments
Post a Comment