Introduction: Directional Solar Panel Abstract

This instructable was created in fulfillment of the project requirement of the Makecourse-Art at the University of South Florida (

It has an artistic perspective where it is an abstract of a real life object.

The engineering behind this project is to tackle the problem of still solar panels, where solar panels are usually still and may lose some sun light, where this abstract demonstrates of how an efficient solar panel would move.

List of supplies

- photoresistors


-servo motor

optional parts

-16x2 LCD

Step 1: Video

Connect the 3 photoresistors and the servo motor to the arduino and based on the code you would pick which pins to be the input(photoresistors) and output (servo motor).

The LCD is optional but is embedded in the code with the easy connection.

The LCD of my choice was with an LCD module since it was easier to implement.

Step 2: Code



LiquidCrystal_I2C myDisplay(0x27,16,2);

#include Servo myservo; #include

int sensorPin1 = A0; // select the input pin for the LDR int sensorPin2 = A1; int sensorPin3 = A2;

int sensorValue1 = 0; // variable to store the value coming from the sensor int sensorValue2 = 0; int sensorValue3 = 0;

int led = 13;

void setup() { // declare the ledPin as an OUTPUT:

pinMode(led, OUTPUT); myservo.attach(8); Serial.begin(9600); myDisplay.init(); myDisplay.backlight(); }

void loop()


Serial.println("Welcome to TechPonder LDR Tutorial");

sensorValue1 = analogRead(sensorPin1); sensorValue2 = analogRead(sensorPin2); sensorValue3 = analogRead(sensorPin3);

Serial.println(sensorValue1); Serial.println(sensorValue2); Serial.println(sensorValue3);


myDisplay.setCursor(0, 0); myDisplay.print("D"); myDisplay.setCursor(1, 0); myDisplay.print("e"); myDisplay.setCursor(2, 0); myDisplay.print("v"); myDisplay.setCursor(3, 0); myDisplay.print("i"); myDisplay.setCursor(4, 0); myDisplay.print("c"); myDisplay.setCursor(5, 0); myDisplay.print("e"); myDisplay.setCursor(7, 0); myDisplay.print("w"); myDisplay.setCursor(8, 0); myDisplay.print("o"); myDisplay.setCursor(9, 0); myDisplay.print("r"); myDisplay.setCursor(10, 0); myDisplay.print("k"); myDisplay.setCursor(11, 0); myDisplay.print("i"); myDisplay.setCursor(12, 0); myDisplay.print("n"); myDisplay.setCursor(13, 0); myDisplay.print("g");

myDisplay.setCursor(0, 1); myDisplay.print("A"); myDisplay.setCursor(1, 1); myDisplay.print("n"); myDisplay.setCursor(2, 1); myDisplay.print("g"); myDisplay.setCursor(3, 1); myDisplay.print("l"); myDisplay.setCursor(4, 1); myDisplay.print("e"); myDisplay.setCursor(5, 1); myDisplay.print("="); myDisplay.setCursor(7, 1);

if ( (sensorValue1 > 100) && (sensorValue2 < 100) && (sensorValue3< 100) ){ myservo.write(50); Serial.println("LED light on"); digitalWrite(led,HIGH); myDisplay.print("-"); myDisplay.setCursor(8, 1); myDisplay.print("6"); myDisplay.setCursor(9, 1); myDisplay.print("0"); myDisplay.setCursor(10, 1); }

if ((sensorValue2 > 100) && (sensorValue1 < 100) && (sensorValue3 < 100) ) { myservo.write(100); Serial.println("LED light on"); digitalWrite(led,HIGH); myDisplay.print("0"); myDisplay.setCursor(7, 1); myDisplay.print("0"); myDisplay.setCursor(8, 1); }

if ((sensorValue3 > 100) && (sensorValue1 < 100) && (sensorValue2 < 100) ) { myservo.write(160); Serial.println("LED light on"); digitalWrite(led,HIGH); myDisplay.print("+"); myDisplay.setCursor(8, 1); myDisplay.print("6"); myDisplay.setCursor(9, 1); myDisplay.print("0"); myDisplay.setCursor(10, 1); }

if ((sensorValue3 < 100) && (sensorValue1 < 100) && (sensorValue2 < 100) ) {

myservo.write(100); Serial.println("LED light off"); digitalWrite(led,LOW); myDisplay.print("0"); myDisplay.setCursor(8, 1); myDisplay.print("0"); myDisplay.setCursor(9, 1);}





Step 3: Block Diagram and Schematic

The block diagram explains how everything is connected.

The way this project works is that 3 photoresistors are connected to the arduino and would be angled by 60,90,120 degrees, the reason behind the angles is that it would pick up the direction from the sunlight as an input. The arduino code would translate that as an output for the servo motor to turn into an angle based on the input.

Step 4: Art

I choose abstract art since it work very well with engineering. Engineering breaks everything into it's simpler form and make it work, this is the same idea with abstract art where every component is broken down to the simplest form. This is the reason why i choose abstract art as my form of art for this project.

Since I could not upload my 3D files it is simply an abstract of a solar, housing for the phototransistors even though no housing was needed i just did it for aesthetics, and the solar panel mounting.

I attached what my abstract would look like.

Robotics Contest

Participated in the
Robotics Contest