Archive for December, 2018

The task demanded to connect more than two components to the Arduino processor in order to have a quick view the possibilities that this prototyping device can offer. In this experiment I used a tutorial that I searched in Instructables and I started to explore from there other potential uses: https://www.instructables.com/id/DIY-Arduino-LED-Dice/ For this experiment I used: -Arduino UNO processor -Bread Board -16 Jumper wires -1 220 ohm resistor   For the first step it is necessary to connect the button to the breadboard, we can place it in the middle. The energy will go from the 5V pin in the arduino processor to the positive lane of the breadboard, from there it must be connected through a cable to one of the sides of the button, the energy will continue through the 10k resistor and then arrive to the negative lane. From the negative lane we must connect the button to the pin 13 of the arduino processor. Every time we will click the button, the arduino processor will transmit a random number through the LEDS from 1 to 6:   In a second step we place the leds on the breadboard:     And then we connect all the negative ports together making “bridges” from one cathode to the other and we connect the positive  parts from the LED’s to the the pin ports 2,4,6,8,9,10, and 12 since the arduino processor will transmit the energy from there to the leds in every click:       Code:  
  • // Arduino LED Dice
  • // Made by Aleksandar Tsvetkov
  • // Using button debouncing logic from the Internet!
  • // Available on Instructables, just search it 🙂
  • const int pins[6] = {24681012};
  • int buttonPin = 13, buttonStatus, randNum, lastNum, i, lastDebounceTime, debounceDelay = 150;
  • void draw(int randN);
  • void setup() {
  •   for (= 0; i <= 5; i++) {
  •     pinMode(pins[i], OUTPUT);
  •   }
  •   pinMode(buttonPin, INPUT);
  • }
  • void loop() {
  •   buttonStatus = digitalRead(buttonPin);
  •   if (buttonStatus == HIGH && (millis()  lastDebounceTime) > debounceDelay) {
  •     do {
  •       randNum = random(16);
  •     } while (lastNum == randNum);
  •     draw(randNum);
  •     lastDebounceTime = millis();
  •     lastNum = randNum;
  •   }
  •   delay(100);
  • }
  • void draw(int randN) {
  •   for (= 0; i <= 5; i++) {
  •     digitalWrite(pins[i], LOW);
  •   }
  •   for (= 0; i <= randN; i++) {
  •     digitalWrite(pins[i], HIGH);
  •   }
  • }
    In a second step, I wanted tp use a Photoresistor instead of the button to create a “random” pattern of LED’s define by the light ambience that the photoresistor is receiving, so I replaced the button by a photoresistor in the breadboard and merged the code from a photoresistor exercise from Instructables web site, this second exploration was made with Mikhail Pikman:       The Instructables code: https://www.instructables.com/id/How-to-use-a-photoresistor-or-photocell-Arduino-Tu/  
// Arduino LED Dice
// Made by Aleksandar Tsvetkov
// Using button debouncing logic from the Internet!
// Available on Instructables, just search it 🙂
const int pins[6] = {2, 4, 6, 8, 10, 12};
int pResistor = 13, buttonStatus, randNum, lastNum, i, lastDebounceTime, debounceDelay = 150;
int value;
void draw(int randN);
void setup() {
  for (i = 0; i <= 5; i++) {
    pinMode(pins[i], OUTPUT);
  }
   pinMode(pResistor, INPUT);// Set pResistor – A0 pin as an input (optional)
}
void loop() {
    value = analogRead(pResistor);
  //You can change value “25”
  if (value > 25){
    digitalWrite(pins[i], HIGH);  //Turn led off{
      randNum = random(1, 6);
    } else{
    digitalWrite(pins[i], LOW); //Turn led on;
The modified Code:
// Arduino LED Dice
// Made by Aleksandar Tsvetkov
// Using button debouncing logic from the Internet!
// Available on Instructables, just search it 🙂
const int pins[6] = {2, 4, 6, 8, 10, 12};
int pResistor = 13, buttonStatus, randNum, lastNum, i, lastDebounceTime, debounceDelay = 150;
int value;
void draw(int randN);
void setup() {
  for (i = 0; i <= 5; i++) {
    pinMode(pins[i], OUTPUT);
  }
   pinMode(pResistor, INPUT);// Set pResistor – A0 pin as an input (optional)
   Serial.begin(9600);
}
void loop() {
    value = analogRead(pResistor);
  //You can change value “25”
  if (value < 30){
    digitalWrite(pins[i], HIGH);  //Turn led on{
      randNum = random(1, 6);
    } else{
    digitalWrite(pins[i], LOW); //Turn led on;
    draw(randNum);
    lastDebounceTime = millis();
    lastNum = randNum;
  }
  delay(100);
  Serial.println(value);
}
void draw(int randN) {
  for (i = 0; i <= 5; i++) {
    digitalWrite(pins[i], LOW);
  }
  for (i = 0; i <= randN; i++) {
    digitalWrite(pins[i], HIGH);
  }
}
The most interesting part of this exploration was to understand the large number of applications that simple input can create for creative and design purposes with the use and addition of codes.
<!– Auto Updating Copyright Script created with Rapid Purple Webmaster Tools (http://rapidpurple.com). –> <script language=”JavaScript”> <!– function y2k(number) { return (number < 1000) ? number + 1900 : number; } var today = new Date(); var year = y2k(today.getYear()); document.write(‘© ‘+year+’ Rapid Purple – All Rights Reserved’); //–> </script>
 
  3d scanning is an interesting tool to transfer volumes, spaces or scenes from the physical space to the virtual space through the use of digital and analog tools. In this post, I explored how this technique could be used for the process of prototyping architecture models with ready-made elements into digital designing platforms such as rhino and movements to recreate space dynamics.   1.Phone scanning; Imagining the scenario that you are having a dinner and you get inspired so you start to prototype something with what you have around and you want to transfer that geometry into the digital world you could use a cell phone 3d scanner.   The procedure is to use an app such as scann3d and a paper that helps the app to measure the element:     After placing the object in the grid, the app tells the user in which parts of the object place the camera so she can take the information.         When the model is ready you can download it but it has a cost.   2. Kinect In a second trial, with Alexey Smirnov imagining the scenario you are in a working place where you can have access to computers and instruments such as Kinect the 3d scanning platform from windows, you could create a model and start the development of the project from the existing object instead of drafting it from zero and the creating volumes by extruding the plans.   For this process we used the free software from windowsstore 3d scan and skanect and we designed a small volumetry made with the fragments of a tangerine.             The results where nonexistent since the 3d scanner from kinect cannot read small geometries as we thought. It seems to be more suitable for interior spaces, persons or scenes.     4. To continue with the exploration I used the software Agisoft who works thru “the process of photogrammetric processing of digital images and 3D spatial data generation” as it is described on their web page http://www.agisoft.com/, this means that with a serie of pictures the program superpose them and create a 3d model. To realize this exercise I used a tutorial they provide on their web page http://www.agisoft.com/index.php?id=32 and additionally a 30 days trial can be requested. The first step is to open the program and upload the pictures In a second step, it is necessary to mask the images with the use of selection tools, it is recommended to take the pictures with a clear background from a different color of the object so the quick selection tools can be used. When all the pictures are masked in the workflow menu we must choose the align option so photos will be superposed to create a cloud of points in a tridimensional space After the cloud is created we must transform it into a mesh And finally create a texture   The program allow us to export the created mesh into Rhyno Finally, we can integrate our 3d scanned geometry into an urban context digital model and continue with the design process introducing a ready made physical designed based geometry into a digital process that can contribute to achieving new ideas by the exploration of new paths where digital and physical design process can meet. File: https://drive.google.com/open?id=1ECq7lZQ-7S24io9Oa2yncV_U2LehNlLV     <!– Auto Updating Copyright Script created with Rapid Purple Webmaster Tools (http://rapidpurple.com). –> <script language=”JavaScript”> <!– function y2k(number) { return (number < 1000) ? number + 1900 : number; } var today = new Date(); var year = y2k(today.getYear()); document.write(‘© ‘+year+’ pablo david goldin marcovich – All Rights Reserved’); //–> </script>    

 

SOFTWARE | MATERIALS

  • AutoCAD
  • 4 mm birch plywood
  • White cotton threads
  • White spray paint
  • Christmas decorations

MACHINE:

Laser cutting machine, Raylogic AS-1290C

ASSIGNMENT:

Create anything for Christmas.

DESIGN:

I wanted to create something light, stylish and huge. After brainstorming, I decided to create a Christmas tree which would allow other students to hang their decorations. The only way to get the biggest tree from 76×76 sheet of plywood was to combine different layers of circles with threads and hang them to the ceiling.

First stage was sketching:

Then I draw a model in Autocad. Multiple number of holes enable to connect the layers and to have space to hang the decorations. The model was 74×74 cm, with nine circles one in another.

ASSEMBLING:

I was thinking of making the tree gold or silver, but ended up painting it white using the white spray paint: After an hour the spray became dry, so I started to asseble the tree. In order to make the tree higher, I made 3 different types of threads: 30, 40 and 50 cm.   Finally, I decorated the tree with red and silver toys:   Tadaa:     Merry Christmas and Happy New Year! Hope, you got inspired by my tree.  

Task:

3D-print something useful  (extra credit for parametric stuff)

Software:

  • Rhinoceros 6 + Grasshopper
  • IdeaMaker

Hardware:

Raise N2 (3D printer)

As an architect I have a lot of stuff for drawing and writing (liners, pens, pencils etc.), and I am always in need for pencil stands to fit all of it. I decided to take a chance and 3Dprint one more stand for myself.

To make it more fun and avoid boring design, the decision was made to make it in parametric style.

First, I started with sketching textures and shapes:

The second step (and the most difficult one, I have to say) was making an algorithm in Grasshopper. After coping with some struggles (obviously, with some external help :P), I managed to get the algorithm right. Here it is:

To make the model fit 3Dprinting requirements, I had to make a few manipulations in Rhino to cap the remaining holes in the model. After that, the final model for printing was like this:

And finally, how it looks when printed:

 

Task:

Create an Arduino cirquit + write a program, using 2 components (LED, button, light sensor, servo etc.)

Components:

I decided to explore how to use a digit 7-segment digit, so that it could count the number of times I press the button.
  • Arduino UNO + cable
  • 14 jumper wires (male-male)
  • Common cathode 7-segment display
  • Button
  • 2 resistors, 220 ohm
  • Breadboard

Piece of theory:

How does the display work? Well, seven segment displays is just 7 LEDs, connected together. They are  called segments,and are arranged in the shape of an “8”. Most 7-segment displays actually have 8 segments, with a dot on the right side of the digit that serves as a decimal point. Each segment is named with a letter A to G, and DP for the decimal point:     Single digit seven segment displays typically have 10 pins. Two pins connect to ground, and the other 8 connect to each of the segments. Here is a pin diagram of the one that I used:    

Assembling:

Connect the pins described below:
  1. Arduino Pin 2 to Pin 9.
  2. Arduino Pin 3 to Pin 10.
  3. Arduino Pin 4 to Pin 4.
  4. Arduino Pin 5 to Pin 2..
  5. Arduino Pin 6 to Pin 1.
  6. Arduino Pin 8 to Pin 7.
  7. Arduino Pin 9 to Pin 6.
  8. GND to Pin 3 and Pin 8 each connected with 220 ohm resistors.

Code:

const int a = 8; //For displaying segment "a"
const int b = 9; //For displaying segment "b"
const int c = 4; //For displaying segment "c"
const int d = 5; //For displaying segment "d"
const int e = 6; //For displaying segment "e"
const int f = 2; //For displaying segment "f"
const int g = 3; //For displaying segment "g"

bool bPress = false;
const int buttonPin = 10;

// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button

void setup() {
// put your setup code here, to run once:
pinMode(a, OUTPUT); //A
pinMode(b, OUTPUT); //B
pinMode(c, OUTPUT); //C
pinMode(d, OUTPUT); //D
pinMode(e, OUTPUT); //E
pinMode(f, OUTPUT); //F
pinMode(g, OUTPUT); //G

pinMode( buttonPin , INPUT_PULLUP );
Serial.begin(9600);
displayDigit(buttonPushCounter);
}

void loop() {

buttonState = digitalRead(buttonPin);

// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == LOW) {
// if the current state is HIGH then the button went from off to on:
bPress = true;
buttonPushCounter++;
if( buttonPushCounter > 9) buttonPushCounter =0 ;
Serial.println("on");

} else {
// if the current state is LOW then the button went from on to off:
Serial.println("off");
}
// Delay a little bit to avoid bouncing
delay(50);
}
// save the current state as the last state, for next time through the loop
lastButtonState = buttonState;

if( bPress ){
turnOff();
displayDigit(buttonPushCounter);
}

}

void displayDigit(int digit)
{
//Conditions for displaying segment a
if(digit!=1 && digit != 4)
digitalWrite(a,HIGH);

//Conditions for displaying segment b
if(digit != 5 && digit != 6)
digitalWrite(b,HIGH);

//Conditions for displaying segment c
if(digit !=2)
digitalWrite(c,HIGH);

//Conditions for displaying segment d
if(digit != 1 && digit !=4 && digit !=7)
digitalWrite(d,HIGH);

//Conditions for displaying segment e
if(digit == 2 || digit ==6 || digit == 8 || digit==0)
digitalWrite(e,HIGH);

//Conditions for displaying segment f
if(digit != 1 && digit !=2 && digit!=3 && digit !=7)
digitalWrite(f,HIGH);
if (digit!=0 && digit!=1 && digit !=7)
digitalWrite(g,HIGH);

}
void turnOff()
{
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
}







Results:

In the end I got a cirquit, where the display shows numbers from 0 to 9, which represent how many times the button was pressed.  
  • Class: Technology.
  • Software: Arduino.
  • Material/details: Cardboard, Male/male jumper wires, Breadboard, Arduino Uno, Blue LEDs x6, Resistors (1 k ohm) x6, Photoresistor, Resistor (10 k ohm).
  • Aim: Explore Arduino and learn how to program in Arduino Language.
 
  • Process:

For this task, I decided to make simple snowflake which consists of 6 Blue LEDs. The idea is that LEDs turn on when lights in the room are turned off. In order to make it, I was needed to solder LEDs to the jumper wires and connect everything via breadboard to the Arduino (cathode to the ground and anode to the pins). I was not able to show it in the scheme, but for LEDs I used 1 k ohm resistors and for the Photoresistor 10 k ohm resistor.

   

I was needed to make a code which will work for the snowflake. At the start, I listed all components (six LEDs and one photoresistor). Then, in “void setup” I listed what is going to be input and what is an output. In the “void loop” I create the algorithm for a lighted and non-lighted environment. “int ldrStatus” reads the values of Photoresistor. In my case I used ldrStatus <=300, however, this number can be changed.

  • Code for snowflake:

const int ledPin1 = 8;

const int ledPin2 = 9;

const int ledPin3 = 10;

const int ledPin4 = 11;

const int ledPin5 = 12;

const int ledPin6 = 13;

const int ldrPin = A0;

 void setup() {

  pinMode(ledPin1, OUTPUT);

  pinMode(ledPin2, OUTPUT);

  pinMode(ledPin3, OUTPUT);

  pinMode(ledPin4, OUTPUT);

  pinMode(ledPin5, OUTPUT);

  pinMode(ledPin6, OUTPUT);

  pinMode(ldrPin, INPUT);

}

void loop() {

  int ldrStatus = analogRead(ldrPin);

   if (ldrStatus <=300) {

    digitalWrite(ledPin1, HIGH);

    digitalWrite(ledPin2, HIGH);

    digitalWrite(ledPin3, HIGH);

    digitalWrite(ledPin4, HIGH);

    digitalWrite(ledPin5, HIGH);

    digitalWrite(ledPin6, HIGH);

    Serial.println(“LDR is DARK, LED is ON”);

   }

  else {

    digitalWrite(ledPin1, LOW);

    digitalWrite(ledPin2, LOW);

    digitalWrite(ledPin3, LOW);

    digitalWrite(ledPin4, LOW);

    digitalWrite(ledPin5, LOW);

    digitalWrite(ledPin6, LOW);

    Serial.println(“—————“);

  }

}

  •   Result:
  • Class: Technology.
  • Software: Blender and Paint 3D.
  • Material: Pink PLA.
  • Machine: Raise 3D.
  • Aim: Learn how to draw in 3D simple things and print it.
 
  • Process:
I decided to draw and 3D print Pachimari. At the start I wanted to repeat something like this: https://www.myminifactory.com/object/3d-print-overwatch-pachimari-multi-color-figurine-69633, however, my drawing skills not as good at the moment, so I decided to do a simpler version. In order to create 3D shape, I used Blender because the software is free and different tutorials available online. Nevertheless, due to the problems with my laptop I finished Pachimari in Paint 3D. Personally, I prefer Blender now, however, my laptop was not able to support it.     The next step was printing. Due to the problems with 3D printers at the lab I went to another place to finish the project. In the LabSpace Raise 3D were used. In took 5 hours to print figure and around 25g of plastic were used in order to create 5cm figure.      
  • Result:
I am happy with how figure come out. Also, I learned how to (kind of) draw in different software’s. Before try blender I also explored Rhino 6, AutoCAD and Sketch up.      

Task:

create a program for Arduino, using 2 or more familiar details (LEDs, button, Servo, photoresistor)

Hardware:

Software:

Arduino

The idea was to create a circuit, using Servo and LED, in a way that potentiometer would control the rotation of the servo as well as the brightness of LED.

I started with the tests of circuits with servo and LED separately.

Onwards, I have tried to get them together in one unit.

I combined each of the blocks (‘define’, void setup, void loop) and it worked out perfectly.

 

Here is how the circuit works:

And the program itself:

 

address: 20 Myasnitskaya ulitsa
(metro stations ‘Lubyanka’ and ‘Kitay-Gorod’)
Moscow 101000 Russia

phone: +7(495)772-95-90 *15026

email: city@hse.ru