Monthly Archives: October 2015

Cake Mixer/ Beater

My original idea was to sync my phone to the Arduino via bluetooth and then play songs via the speaker attached to the breadboard, attached to the Arduino. However an error message was constantly occurring and I couldn’t figure out why, until Nick explained in class.

I then considered using the motor in some way, with my ideas jumping around everywhere:
– Vehicle
– Beyblade (Spinning top toy, in a controlled environment)
– Fan
– Cake mixer/ beater

This was a simple circuit with a button attached.


Digi Bird

I had multiple issues at the beginning of this project as my knowledge for this project was nil, so lighting up an LED was an achievement for me. However my original ambition was to sync an LED to the sound, and have the sound and LED to work together.20150930_19231920150930_192230

Coding:

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

Photocell Alarm

Don’t end up getting squashed!!

Trying to get into an elevator or subway, the alarm system is smart enough to detect the presence with effect to light by using sensors and hence, the door slides back if need be.

elevator VLUU L310W L313 M310W / Samsung L310W L313 M310W

I replicated that by using Photo resistor sensor which not only signals through LED but also raises an alarm if the object is in close proximity.

Schematic Photocell Alarm

Here you can also find how this sensor works.

SCHEMATIC

Photocell_LED_Speaker Circuit

CODE

PhotoResistor Sketch

 

Electric Car

DC Car Arduino Circuit

For the Daily Device Project I built a car. But that wasn’t my idea at beginning, I changed it twice, from elevator to crane and then finally to a car, I explained the development of this project in the video below.

Circuit

DC Car Arduino Circuit

Parts

1 x Arduino UNO
2 x DC Gear Motor
1 x 500 ohm potentiometer
2x Tact Switch
2x DC Motor Voltage Inverter
2x 10k ohm resistor
2x 2.2k ohm resistor
2x Transistor FQP30N06 – N-Channel MOSFET
2x Diodes

The transistor works as valve, it can control how much power will pas trough, with the help of the Arduino it will control your motor. Basically your code is giving the order and the transistor is doing it. The information being sent by the button and the potentiometer is being read by the Arduino and then sent to the motors trough the Transistor. The transistor has 3 pins, the first one (with the chair facing you) will be connected to your Arduino, it must be one of the pins with ~ symbol. In this connection,between the transistor and the Arduino put a 2.2k ohm resistor. The second pin will be connected to the negative of your motor, remember to put a diode between your motor and the transistor, the energy coming from the motor may damage your board. The third pin is connected to ground.

To control the back and forth of the motors use Voltage inverter. It has for inputs for cable, the first two you connect to the positive and negative of your motor. The other two, one you connect to the 5v, and the other one you connect to the second pin of the transistor, is trough this pin that the motor will be controlled by the Arduino.

To control the start and stop you use the buttons, it has 4 pins, 1 will be connected to 5v, the other to ground, and the pin across from your ground connection will be connected to the Arduino. Between the ground and the button put the 10k ohm resistor.

The speed will be defined by the potentiometer, it has 3 pins, middle one will be connected to your Arduino using one of the analog pins. The other two is for ground and 5v.

Code

int buttonPinL = 7;

int buttonPinR = 8;

int buttonStateL = 0;

int buttonStateR = 0;

int potPin = A0;

int potValue = 0;

int motorPinL = 3;

int motorValueL = 0;

int motorPinR = 9;

int motorValueR = 0;

void setup() {

pinMode(buttonPinL, INPUT);

pinMode(buttonPinR, INPUT);

Serial.begin(9600);

}

void loop() {

potValue = analogRead(potPin);

buttonStateL = digitalRead(buttonPinL);

buttonStateR = digitalRead(buttonPinR);

motorValueL = map(potValue, 0, 1023, 0, 170);

motorValueR = map(potValue, 0, 1023, 0, 170);

analogWrite(motorPinL, motorValueL);

analogWrite(motorPinR, motorValueR);

if (buttonStateL == HIGH) {

analogWrite(motorPinL, motorValueL);

}

else {

analogWrite(motorPinL, 0);

}

if (buttonStateR == HIGH) {

analogWrite(motorPinR, motorValueR);

}

else {

analogWrite(motorPinR, 0);

}

}

LED Sprite Display

Pedestrian_signal,_Central_Park
Sprite : a computer graphic that may be moved on-screen and otherwise manipulated as a single entity.
My story is that I wanted to have an 8×8 LED Matrix used to mimic the display beside street lights indicating to pedestrians to either walk or stop.  To begin to replicate this, the purpose of my process was to test the ability to control all 64 LED’s of this matrix to display my choice of a sprite.  Starting simple, I wanted to create two sprite symbols, an “X” and an “O” to represent the 2 states that this display will show.
Materials List
– Arduino Uno
– 16 pin 8×8 LED Matrix
– Breadboard
– Jumper wires
– 1k ohm resistors (8)
– Lots of patience
LED Sprite Display_schem
Discovery
At first, working with these LED’s in a matrix seemed overly complicated and frustrating if your research isn’t thorough.  However, after just a little practice, the matrix became “a little” less complex.  The primary thing to notice is wether you are using a common cathode or common anode matrix.

What is the difference between Common Anode and Common Cathode?
 
• Using seven segment displays as an example, when all the anodes are connected to one point, it becomes a common anode. Common cathode means that all the seven cathodes of a 7-segment display are connected together.
 
• To function, a positive voltage should be supplied to the common anode and the common cathode should be grounded.

The next thing I did was test the lights to understand how these diodes were mapped to their pins.  My trial and error resulted in one diode getting burned out accidentally missing a resistor on one of the connections.  Luckily, the matrix continues to function with the remaining lights.
Long story short, understanding that the matrix works by a system of rows and columns, was key.  A datasheet is what provided this understanding.  However, this understanding still wasn’t enough as there seemed to be inconsistencies trying to simply isolate one LED with the code.
The fact of this matrix being able to show both red and green, may have bearing on me isolating one light. But throughout the testing, I have only been able to show red.  Further research showed that I may have been better off with a shift register added to the circuit.
IMG_0426
48 wires later

Code
Screen Shot 2015-10-10 at 6.59.15 PM
/*
 *  Creation & Computation: Daily Devices Workshop
 *  LED Sprite Display
 *
 *  Marcus A. Gordon
 *
 *
 *  ASCII MAPPING OF 8×8 MATRIX
 *  ——————————
 *  This ASCII map identifies LED Matrix rows, red/green columns and first pin (1).
 *  Below each row is a red and green column.
 *  Column numbers are the same as the row number above them.
 *
 *  ——————————————-
 *  ROW 4 —-|*  *  *  *  *  *  *  *|— ROW 8
 *  COLRG —-|*  *  *  *  *  *  *  *|— COLRG
 *  ROW 3 —-|*  *  *  *  *  *  *  *|— ROW 7
 *  COLRG —-|*  *  *  *  *  *  *  *|— COLRG
 *  ROW 2 —-|*  *  *  *  *  *  *  *|— ROW 6
 *  COLRG —-|*  *  *  *  *  *  *  *|— COLRG
 *  ROW 1 —-|*  *  *  *  *  *  *  *|— ROW 5
 *  COLRG —-|*  *  *  *  *  *  *  1|— COLRG
 *  ——————————————-
 *
 *  ^ < v
 *  Pins are read, from pin 1: up – left – down)
*/
// Arduino pins connected to the matrix
int rMatrix[] = {2,3,4,5,6,7,8,9}; //rows
int cMatrix[] = {10,11,12,13,14,15,16,17}; //columns
void setup() {
  Serial.begin(9600);         //Open the Serial port for debugging
  for(int i = 0; i <8; i++){  //Set the 16 pins used to control the array as OUTPUTs
    pinMode(rMatrix[i], OUTPUT);
    pinMode(cMatrix[i], OUTPUT);
    digitalWrite(rMatrix[i], HIGH);
    digitalWrite(cMatrix[i], LOW);
  }
  digitalWrite(rMatrix[5], LOW);
  digitalWrite(rMatrix[4], LOW);
  digitalWrite(rMatrix[0], LOW);
  digitalWrite(cMatrix[1], HIGH);
  digitalWrite(cMatrix[3], HIGH);
  digitalWrite(cMatrix[5], HIGH);
  digitalWrite(cMatrix[6], HIGH);
  digitalWrite(rMatrix[6], LOW);
  digitalWrite(rMatrix[7], LOW);
  //digitalWrite(rMatrix[3], HIGH);
}

Daily Devices – Vacuum Cleaner

 

vacuum

vacuum_cleaner2

I built a vacuum cleaner breaking a hair dryer apart. Their mechanism is quite similar if you ignore the heating process of the hair dryer. One is the reverse of the other.

I picked a bottle that would match the size of the fan and bought two 9V batteries with battery clips so the switch function would be solved. A baby wipe has been used for the filter. I drilled the lid and cut a plastic piece from my sports equipment for the hose.

While doing some research for the project, I also found out that in the 1920s, women dried their hair by connecting a hose to the exhaust of their vacuum cleaners…

 

 

Workshop 2: Daily Devices, the Washing Machine

Our washing machine at home seemed so uninteresting so I decided to choose that for analyzing in hope of making it a bit more interesting.

I set up camp in the bathroom with lights, camera and not a whole lot of action.

documenting-the-washing-machine-1

I did though, I think, figure out how the machine’s different knobs, buttons and LEDs work with one another and also how it puts the machine to work. I put together a sort-of combination of a UI and user flow for an example setting of the washing machine.

For the “make-an-inspired-copy-protoype” part of the assignment, I deviated from actuators working with water and found in the 5V fan a similar trait; a spin.

So I decided to put a spin on things (pun à la Andrew Hicks intended) and thought how I could put together an interesting concept based on the washing machine but with a twist (pun, again).

At Hvíta húsið, a wonderful advertising agency I worked for from 2012 – 2015, they tried their hand at an open office space. I for one am all for increased transparency and collaboration between co-workers. That I was put smack-in-the middle of the open work area was perhaps not as ideal – for me at least.

The new situation also didn’t do so well with efficient AC during the warm summers.

So despite my attempts at getting people to voice their dialogue with team members by walking over to them instead of shouting across the room – and in the same moment, me – I thought of AC powered by silence setting for the air conditioning systems at one’s work place.

So an example would be a super warm Tuesday, the new AC is doing great and everybody’s working on their projects within decent noise levels. Then, around 10:30am, the workplace starts to get noisier and louder, slowly turning off the AC (given that it has the above setting turned on).

The noisy chatter would then flow into conversations of “Oh, my! How warm it is! Isn’t the AC working?” and “I know, right?! I’m sweating like a pig!” to which one could respond with “The AC is perfectly fine. It’s just waiting for the sweet silence”.

A working demo can be seen here of a loud-mouthed stegosaurus disturbing the work force.

I’m aware that this concept might come off as a bit bitter from my end. Don’t get me wrong, from time to time I sure like a break from projects to do other, louder stuff. Maybe just not where people are trying to continue on with their own projects in peace.

hardware-diagram-1

 

// Sketch code below, with less-than-ideal map() function values, perhaps

const int fanPin = 9;
const int speakerPin = A0;

const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;

void setup() {
Serial.begin(9600);

pinMode(fanPin, OUTPUT);
pinMode(speakerPin, INPUT);
}

// map function with floats
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max) {
return (x – in_min) * (out_max – out_min) / (in_max – in_min) + out_min;
}

void loop() {
unsigned long startMillis = millis(); // Start of sample window
unsigned int peakToPeak = 0; // peak-to-peak level

unsigned int signalMax = 0;
unsigned int signalMin = 1024;

// collect data for 50 mS
while (millis() – startMillis < sampleWindow) {
sample = analogRead(0);
if (sample < 1024) { // toss out spurious readings
if (sample > signalMax) {
signalMax = sample; // save just the max levels
} else if (sample < signalMin) {
signalMin = sample; // save just the min levels
}
}
}

peakToPeak = signalMax – signalMin; // max – min = peak-peak amplitude
double speakerVolts = (peakToPeak * 3.3) / 1024; // convert to volts

//convert speakerVolts from double to float before mapfloat()

int soundCtrlFan = map(speakerVolts, 0.5, 1.0, 255, 0);

Serial.print(“speakerVolts value is: “);
Serial.print(speakerVolts); // check mic analog input values

Serial.print(“\t soundCtrlAC value is: “);
Serial.println(soundCtrlFan);

analogWrite(fanPin, 0); // turn off fan while initial testing

}

 

 

POSITIVE REINFORCEMENT SCALE : jazmine yerbury

Consumer digital scale:                                       Pressure sensor:

consumer digital scale             pressure sensor

PRESSURE SENSOR

Another means to measure force, or weight a Pressure Sensor. This is a flat, usually square or rounded surface made up of wires and plastic or another non-conductive material. The wires react to pressure and output a variable depending on the amount of force.

Screen Shot 2015-10-09 at 1.47.41 AM

(I had a problem with my scanner, I will scan this ^ diagram tomorrow on another scanner so it is legible. If you click on it, you see it with better quality in another window)

LOAD CELL

The Sensor found inside most digital scales is called a Load Cell. The load cell is composed of a metal bar called a Spring Element. On the edges of the spring element are four flat sensors made of wires that act as resistors called Strain Gauges, which together form the circuit Wheatstone Bridge.

The load applied to the spring element is transferred into a voltage by passing through the four resistors.

The strain gauges are bonded onto four areas on the spring element which become considerably distorted . The load cell detects the force of the distortion as a voltage change. The weight applied to the load cell can be measured by the degree of distortion.

Load cell:

Based on the everyday digital bathroom sale. A prototype for a digital scale that is programmed to yell different slogans when you stand on it depending on your weight. Input a goal weight , and let the scale be your personal motivation to either keep up the good work or get back on the treadmill!