Project tutorial
Freeformable Circuit | Real Freeform Circuit!

Freeformable Circuit | Real Freeform Circuit! © CC BY-NC-SA

A freeformable IR remote-controlled LED circuit. An all-in-one applicable DIY light chaser with Arduino-controlled patterns.

  • 1,611 views
  • 0 comments
  • 3 respects

Components and supplies

Necessary tools and machines

09507 01
Soldering iron (generic)

Apps and online services

About this project

I have been inspired by the freeform circuit...

So I just made a freeform circuit that is even freeformable (can be formed into any shape and design).

This circuit is a 18 LED chaser in which patterns are changeable with IR remote. Each LED can be controlled separately.

Things You Need

1. A copper or brass rod of 0.5 - 1 mm diameter

2. Thin copper wires. I got it from motor windings.

Forming Into Shape

As I designed for a hexagonal frame I shaped it using pliers and used graph for reference.

Arduino Preparation

Remove the Arduino pins and braces with cutter and pliers. Desolder pins from the Arduino Nano don't break it!

Joining All

I soldered a four copper rods on the screw hole of arduino with the USB port GND to the hexagonal frame.

Also I soldered LEDs with the wires and used 330ohms resistor for each LED.

Finally each LED wire is soldered with frames.

(LED -ve to the frame)

IR Receiver Part

The TSOP1738 IR receiver is mounted on top of Arduino Nano's ISP head And output pin to the Arduino Rx pin.

Finally!

I have messed on soldering part on the frame since copper doesn't allows the soldering to bind together. I suggest to use Brass rods for better results.

Don't use thick soldering leads! it will surely get in trouble...

I am not a coder so there may be flaw in the code.

Working Video

Get in Touch

Follow me and have questions or suggestion?

Contact me via my Instagram profile: https://www.instagram.com/itz_me_stark/

Code

Freeformable Circuit Code by DevanagarajArduino
Just change the button hex number to your remote numbers.
Open serial moniter in arduino ide to get your hex number of respective remote.
#include <IRremote.h>
// follow me on insta www.instagram.com/itz_me_stark

int RECV_PIN = 0; //Rx pin
int del= 100;
int led[] = {A4, 4, 5, A5, 6, 7, A0, 8 ,9 , A1 , 10 ,11 ,A2 , 12 ,13 ,A3 ,2 ,3 };

#define val1 1031 // button 7
#define val2 1026 // button 2
#define val3 1027 // button 3
#define val4 1028 // button 4
#define val5 1029 // button 5
#define val6 1223 //power button for full loop effects
#define val7 1030 // button 6
#define val8 1025 // button 1

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();
  Serial.println("IR Remote Controlled Freeformable circuit by Devanagaraj");
  int i;
  for (i=0 ; i<18; i++)
  {
    pinMode(i, OUTPUT);
    digitalWrite(i, LOW); 
  }
}

void loop()
{
  if(irrecv.decode(&results))
  {
    unsigned int value = results.value;
    switch (value)
    {
      case val1:
      if (results.value == val1)
      {
        for (int i=0 ;i<=2 ;i++)
        {
        effect1();
        }
      }
      delay(del);

      case val2:
      if (results.value == val2)
      {
        for (int i=0 ;i<=2 ;i++)
        {
        effect2();
        }
      }
      delay(del);

      case val3:
      if (results.value == val3)
      {
        for (int i=0;i<=4;i++)
        {
          effect3();
        }
        irrecv.resume();
      }
      delay(del);

      case val4:
      if (results.value == val4)
      {
        for (int i=0;i<=4;i++)
        {
          effect4();
        }  
        irrecv.resume();
      }
      delay(del);

      case val5:
      if (results.value == val5)
      {
        for (int i=0;i<=4;i++)
        {
          effect5();
        }  
        irrecv.resume();
      }
      delay(del);
      
      case val6:
      if (results.value == val6)
      {
        effect1();
        effect2();
        effect3();
        effect4();
        effect5();
        loop();
        irrecv.resume();
      }
      delay(del);

      case val7:
      if (results.value == val7)
      {
        for(int i=0;i<=4;i++)
        {
        effect6();
        effect6();
        }
      }
      delay(del);

      case val8:
      if (results.value == val8)
      {
        effect7();
        effect7();
        effect7();
      }
      delay(del);
    }
    
    Serial.println(value);
    irrecv.resume();
  }
}

void effect1()
{
  int x;
  for (x = 0; x < 18; x++)
  {
    digitalWrite(led[x], HIGH);
    delay(del);
  }
  delay(del);
  for (x = 0; x < 18; x++)
  {
    digitalWrite(led[x], LOW);
    delay(del);
  }
}


void effect2()
{
 int x;
  for (x = 0; x < 18; x++)
  {
    digitalWrite(led[x], HIGH);
    delay(del);
    digitalWrite(led[x], LOW);
  }
  delay(del);
  for (x = 18; x > 0; x--)
  {
    digitalWrite(led[x], HIGH);
    delay(del);
    digitalWrite(led[x], LOW);
  }
} 

void effect3()
{
  int x;
  for (x = 0; x < 18; x++)
  {
    digitalWrite(led[x], HIGH);
    digitalWrite(led[x + 1], HIGH);
    delay(del);
    digitalWrite(led[x], LOW);
    digitalWrite(led[x + 1], LOW);
  }
  delay(del);
  for (x = 18; x > 0; x--)
  {
    digitalWrite(led[x], HIGH);
    digitalWrite(led[x - 1], HIGH);
    delay(del);
    digitalWrite(led[x], LOW);
    digitalWrite(led[x - 1], LOW);
  }
}

void effect4()
{
  int x;
  for (x = 0; x <= 8; x++)
  {
    digitalWrite(led[x], HIGH);
    delay(del);
    digitalWrite(led[17 - x], HIGH);
    delay(del);
  }
  delay(1000);
  for (x = 8; x >= 0; x--)
  {
    digitalWrite(led[x], LOW);
    delay(del);
    digitalWrite(led[17 - x], LOW);
  }
}

void effect5()
{
  int x;
  for (x = 8; x >= 0; x--)
  {
    digitalWrite(led[x], HIGH);
    delay(del);
    digitalWrite(led[17 - x], HIGH);
    delay(del);
  }

  delay(1000);
  for (x = 0; x <= 8; x++)
  {
    digitalWrite(led[x], LOW);
    delay(del);
    digitalWrite(led[17 - x], LOW);
  }
}

void effect6()
{
  int x;
  x = random(17);
  
  digitalWrite (led[x] , HIGH);
  delay(del);
  digitalWrite(led[x] , LOW);
  loop();
}

void effect7()
{
  digitalWrite (led[0&2],HIGH);
}

Schematics

Main circuit assemly
You can change pins to your wish. Actually I have circuit design for Particle photon also.
20190114 203313 7iopfjmwdj
Frame wire connection
the circuit for the code i wrote.
Freeform circuit 2 7aj4gjftk0

Comments

Similar projects you might like

Freeform Snowflake

Project showcase by tyjoh_tech

  • 7,693 views
  • 8 comments
  • 48 respects

How to Configure NeoPixels Using Vixen Lights and Arduino

Project tutorial by Victor Aguilar

  • 18,257 views
  • 32 comments
  • 38 respects

The Light Box

Project tutorial by Wpeeters

  • 3,693 views
  • 2 comments
  • 20 respects

Interactive LED Name

Project tutorial by Pedro Mendez and Daniel Jablonski

  • 2,104 views
  • 1 comment
  • 7 respects

LED Cube

Project tutorial by Praditha Alwis

  • 5,758 views
  • 0 comments
  • 14 respects

Arduino TV Volume Control

Project tutorial by Sam

  • 5,617 views
  • 1 comment
  • 15 respects
Add projectSign up / Login