8/2/10

Signal Cycle:

“With more people taking to the roads on bicycles, it’s hard for new comers to feel safe and confident. This product explores the relationship between cyclist and driver at night, when cyclists are at their most vulnerable. It allows the cyclist to promote a more caring environment in which cyclists and drivers can coexist. It does this in a creative and provocative way, allowing the cyclist to highlight issues close to them, such as overtaking etiquette or light-hearted cues. The LED dot matrix display, which can be worn on the back of the cyclist, is a modular design that can be adapted to wear with or without a backpack. The cyclist can program the LED unit easily to display different graphics, and change between them using simple controls.”

(copyright fjmort 2010)

Advertisements

Leave a comment

Filed under Uncategorized

8/2/10

Form..

This is where I start to think about form, going from basic shapes to what you see here. This is Mark 1, so the form will develop further in the next week. I don’t want anything too outrageous, as I feel it should remain simple for a commercial product.

Leave a comment

Filed under Uncategorized

5/2/10

If you were to use it with out a backpack, this module would be used:

This module would fit just like a backpack

note the white areas will be padding for comfort, and have the same clip attachment on the back

Leave a comment

Filed under Uncategorized

4/2/10

I feel i should have more to show for my play stage, I’m quite disappointed with the fact that most of my time is gone into the electronics, which in the end, turned out to be quite simple. It shows that I’m not comfortable as a programmer, I understand the basics of electronics and I enjoy it, but the combination of the programing and complex hardware has frustrated me over the past 4 weeks. Now I can concentrate on doing some good design work. Here’s some form models I’ve made to give an idea of how it could look:

modular attatchment for using on a rucksack

note the clip to attatch the LED unit

The small part would be part of the LED unit

The LED unit will slide into the clip. The attatchment will be the same for use without a backpack

Leave a comment

Filed under Uncategorized

1/2/10

Right… here we have an Arduino, hooked up to a MAX7219 driver, hooked up to an 8×8 LED matrix, and 3 push button switches:

look how much neater the MAX7219 chip is...

Lets get some code done, this has quite a few patterns defined, but only 3 are enabled in the code. What this code does is display one pattern, and at the push of button 1, displays the first pattern, 2nd button the 2nd pattern, and the 3rd button the 3rd pattern! and it works!!!!!

just like that...

Here’s the code for it:
#include “LedControl.h”                    //We always have to include the library

const int buttonOne = 2;
const int buttonTwo = 3;
const int buttonThree = 4;

int buttonState1 = 0;                  // variable for reading the pushbutton status
int buttonState2 = 0;
int buttonState3 = 0;

LedControl lc=LedControl(12,11,10,1);        /*Now we need a LedControl to work with ***** These pin numbers will probably not work with your hardware *****
pin 12 is connected to the DataIn
pin 11 is connected to the CLK
pin 10 is connected to LOAD
We have only a single MAX72XX.
*/

unsigned long delaytime=0;       /* we always wait a bit between updates of the display */

void setup()

{
pinMode(buttonOne, INPUT);
pinMode(buttonTwo, INPUT);
pinMode(buttonThree, INPUT);
lc.shutdown(0,false);           /*The MAX72XX is in power-saving mode on startup, we have to do a wakeup call */
lc.setIntensity(0,14);          /* Set the brightness to a medium values */
lc.clearDisplay(0);            /* and clear the display */
}
/*void writeCycle()
{
byte C[8]={B00011110,B00100000,B01000000,B01000000,B01000000,B01000000,B00100000,B00011110};
byte y[8]={B00100001,B00100001,B00010010,B00001100,B00001000,B00010000,B00100000,B01000000};
byte c[8]={B00000000,B00001110,B00010000,B00100000,B00100000,B00100000,B00010000,B00001110};
byte l[8]={B00000000,B00100000,B00100000,B00100000,B00100000,B00100000,B00100000,B00111100};
byte e[8]={B00000000,B01111100,B01000000,B01000000,B01111000,B01000000,B01000000,B01111100};

lc.setRow(0,0,C[0]);
lc.setRow(0,1,C[1]);
lc.setRow(0,2,C[2]);
lc.setRow(0,3,C[3]);
lc.setRow(0,4,C[4]);
lc.setRow(0,5,C[5]);
lc.setRow(0,6,C[6]);
lc.setRow(0,7,C[7]);
delay(250);
lc.setRow(0,0,y[0]);
lc.setRow(0,1,y[1]);
lc.setRow(0,2,y[2]);
lc.setRow(0,3,y[3]);
lc.setRow(0,4,y[4]);
lc.setRow(0,5,y[5]);
lc.setRow(0,6,y[6]);
lc.setRow(0,7,y[7]);
delay(250);
lc.setRow(0,0,c[0]);
lc.setRow(0,1,c[1]);
lc.setRow(0,2,c[2]);
lc.setRow(0,3,c[3]);
lc.setRow(0,4,c[4]);
lc.setRow(0,5,c[5]);
lc.setRow(0,6,c[6]);
lc.setRow(0,7,c[7]);
delay(250);
lc.setRow(0,0,l[0]);
lc.setRow(0,1,l[1]);
lc.setRow(0,2,l[2]);
lc.setRow(0,3,l[3]);
lc.setRow(0,4,l[4]);
lc.setRow(0,5,l[5]);
lc.setRow(0,6,l[6]);
lc.setRow(0,7,l[7]);
delay(250);
lc.setRow(0,0,e[0]);
lc.setRow(0,1,e[1]);
lc.setRow(0,2,e[2]);
lc.setRow(0,3,e[3]);
lc.setRow(0,4,e[4]);
lc.setRow(0,5,e[5]);
lc.setRow(0,6,e[6]);
lc.setRow(0,7,e[7]);
delay(250);
}
*/
/*void writeBoxes()
{
byte boxes[8]={B11000011,B11000011,B00000000,B00000000,B00000000,B00000000,B11000011,B11000011};

lc.setRow(0,0,boxes[0]);
lc.setRow(0,1,boxes[1]);
lc.setRow(0,2,boxes[2]);
lc.setRow(0,3,boxes[3]);
lc.setRow(0,4,boxes[4]);
lc.setRow(0,5,boxes[5]);
lc.setRow(0,6,boxes[6]);
lc.setRow(0,7,boxes[7]);
}
*/
void writeSmile1()
{
byte smile1[8]={B01100110,B01100110,B00000000,B10000001,B01000010,B00111100,B00000000,B00000000};

lc.setRow(0,0,smile1[0]);
lc.setRow(0,1,smile1[1]);
lc.setRow(0,2,smile1[2]);
lc.setRow(0,3,smile1[3]);
lc.setRow(0,4,smile1[4]);
lc.setRow(0,5,smile1[5]);
lc.setRow(0,6,smile1[6]);
lc.setRow(0,7,smile1[7]);
}

void writeSmile2()
{
byte smile2[8]={B01100110,B01100110,B00000000,B00000000,B00000000,B01111110,B00000000,B00000000};

lc.setRow(0,0,smile2[0]);
lc.setRow(0,1,smile2[1]);
lc.setRow(0,2,smile2[2]);
lc.setRow(0,3,smile2[3]);
lc.setRow(0,4,smile2[4]);
lc.setRow(0,5,smile2[5]);
lc.setRow(0,6,smile2[6]);
lc.setRow(0,7,smile2[7]);
}

void writeSmile3()
{
byte smile3[8]={B01100110,B01100110,B00000000,B00000000,B00000000,B00111100,B01000010,B10000001};

lc.setRow(0,0,smile3[0]);
lc.setRow(0,1,smile3[1]);
lc.setRow(0,2,smile3[2]);
lc.setRow(0,3,smile3[3]);
lc.setRow(0,4,smile3[4]);
lc.setRow(0,5,smile3[5]);
lc.setRow(0,6,smile3[6]);
lc.setRow(0,7,smile3[7]);
}

void blank()
{
byte blank[8]={B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000};

lc.setRow(0,0,blank[0]);
lc.setRow(0,1,blank[1]);
lc.setRow(0,2,blank[2]);
lc.setRow(0,3,blank[3]);
lc.setRow(0,4,blank[4]);
lc.setRow(0,5,blank[5]);
lc.setRow(0,6,blank[6]);
lc.setRow(0,7,blank[7]);
}
/*void writeTen()
{
byte Ten[8]={B10011110,B10100001,B10100001,B10100001,B10100001,B10100001,B10100001,B10011110};

lc.setRow(0,0,Ten[0]);
lc.setRow(0,1,Ten[1]);
lc.setRow(0,2,Ten[2]);
lc.setRow(0,3,Ten[3]);
lc.setRow(0,4,Ten[4]);
lc.setRow(0,5,Ten[5]);
lc.setRow(0,6,Ten[6]);
lc.setRow(0,7,Ten[7]);
}
*/
void loop()

{
buttonState1 = digitalRead(buttonOne);

if (buttonState1 == HIGH)
{
writeSmile1();
}

if (buttonState2 = digitalRead(buttonTwo))

if (buttonState2 == HIGH)
{
writeSmile2();
}

if (buttonState3 = digitalRead(buttonThree))

if (buttonState3 == HIGH)
{
writeSmile3();
}

else
{
blank();
}

}

Leave a comment

Filed under Uncategorized

1/2/10

Finally tracked down some of those MAX7219 chips I wanted in the first place… I’ll need to order four, but Mike has one I can use for now, that will enable me to make an 8×8 matrix and test it!

Leave a comment

Filed under Uncategorized

24/1/10

How to create the binary code for different patterns…

Create a template for the matrix you are creating. I have an 8×8 and a 16×16 template. print it out and use layout paper/trace paper to design your pattern by drawing over the template on the trace paper. for every blank dot there is, its binary 0, for active dot it’s binary 1. You might have something that looks like this:

Leave a comment

Filed under Uncategorized