Wednesday, December 2, 2015
Monday, November 9, 2015
Monday, November 2, 2015
My project is to make an automated instrument, the instrument I chose was a kalimba.
Prototype plucker :
I am going to be using servos to play the instrument and have those controlled by the arduino. I am going to have a few songs built into the device and also have the ability for people to program their own songs.
The technical challenges are constructing the arms that allow the kalimba to be played.
The aesthetic challenges are hiding the electronic bits and making the linkages look pleasing. I may also add some lights that play along with the songs.
We have 4 weeks left as of this writing:
- Week one
- Finish constructing box for servos and holder for kalimba
- Week Two
- 3d print pluckers
- Week three
- Code
- Week four
- Install lights and create user interface ( buttons )
- Finish odds and ends
http://www.makercase.com
Arduino-atrope
For this project I made an Arduino powered zoetrope with user controls so it can be interactive. This could be scaled up into an installation piece where they the audience can control the rate of the zoetrope and learn about how the eye works with persistence of vision and pseudo frame rate.
The model I made made use of a motor powering the zoetrope and a servo controlling a meter to how fast it was spinning.
Some issues I was having was not enough torque or to much friction on the rotating cylinder.
I did manage to film it before my batteries died and it stopped working.
This shows the animation:
The model I made made use of a motor powering the zoetrope and a servo controlling a meter to how fast it was spinning.
Some issues I was having was not enough torque or to much friction on the rotating cylinder.
I did manage to film it before my batteries died and it stopped working.
This shows the animation:
This shows the over function of the arduino-atrope.
Monday, October 5, 2015
Music Box`
Behold the most annoying sounds ever made. So users can input a series of characters up to 100, those have to be music notes. When they enter 0 the songs starts looping. They then have two controls to adjust the frequency and notes that are being played. There is a bar graph that displays the frequency rate and a display that shows which note is being played.
( Sorry for my video being upside down, I had to zip tie my phone to a tripod.)
int speakerPin = 2;
int n = 0;
int h;
char song[100];
int i = 0;
int j = 1;
int play = 0;
char x = 0;
int count;
float freq;
float tune;
char D;
char E;
char F;
char G;
char A;
char B;
char C;
int d1d = 31;
int d2d = 33;
int d3d = 35;
int d4d = 37;
int d5d = 39;
int d6d = 41;
int d7d = 43;
int d8d = 45;
int d9d = 47;
int d10d = 49;
#define A 22
#define B 9
#define C 50
#define D 3
#define E 34
#define F 5
#define G 6
void char_A()
{
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void char_non()
{
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void char_B()
{
//Displays B
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
}
void char_C()
{
//Displays C
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void char_D()
{
//Displays D
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void char_E()
{
//Displays E
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void char_F()
{
//Displays F
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void char_G()
{
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void zero()
{
//Displays 0
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void char_OFF() {
digitalWrite(d1d, LOW);
digitalWrite(d2d, LOW);
digitalWrite(d3d, LOW);
digitalWrite(d4d, LOW);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_ONE() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, LOW);
digitalWrite(d3d, LOW);
digitalWrite(d4d, LOW);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_TWO() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, LOW);
digitalWrite(d4d, LOW);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_THREE() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, LOW);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_FOUR() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_FIVE() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_SIX() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_SEVEN() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, HIGH);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_EIGHT() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, HIGH);
digitalWrite(d8d, HIGH);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_NINE() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, HIGH);
digitalWrite(d8d, HIGH);
digitalWrite(d9d, HIGH);
digitalWrite(d10d, LOW);
}
void char_TEN() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, HIGH);
digitalWrite(d8d, HIGH);
digitalWrite(d9d, HIGH);
digitalWrite(d10d, HIGH);
}
void boot() {
char_ONE();
delay(30);
char_TWO();
delay(30);
char_THREE();
delay(30);
char_FOUR();
delay(30);
char_FIVE();
delay(30);
char_SIX();
delay(30);
char_SEVEN();
delay(30);
char_EIGHT();
delay(30);
char_NINE();
delay(30);
char_TEN();
}
int frequency(char note) {
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' , ' '};
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523, 000};
for (h = 0; h < 100; h++) {
if (names[h] == note)
{
return (frequencies[h]);
}
}
}
void led() {
if (song[j] == 'a') {
char_A();
}
if (song[j] == 'b') {
char_B();
}
if (song[j] == 'C') {
char_C();
}
if (song[j] == 'c') {
char_C();
}
if (song[j] == 'd') {
char_D();
}
if (song[j] == 'e') {
char_E();
}
if (song[j] == 'f') {
char_F();
}
if (song[j] == 'g') {
char_G();
} if (song[j] == ' ') {
char_non();
}
}
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(d1d, OUTPUT);
pinMode(d2d, OUTPUT);
pinMode(d3d, OUTPUT);
pinMode(d4d, OUTPUT);
pinMode(d5d, OUTPUT);
pinMode(d6d, OUTPUT);
pinMode(d7d, OUTPUT);
pinMode(d8d, OUTPUT);
pinMode(d9d, OUTPUT);
pinMode(d10d, OUTPUT);
pinMode(speakerPin, OUTPUT);
Serial.begin(9600);
Serial.println("type c, d, e, f, g, a, b, c, or the space bar to create music, type 0 to start song");
boot();
}
void loop() {
for (i = 0; play == 0 && i < 100; ) {
while (Serial.available() > 0 ) {
x = Serial.read();
if ( x == 'a' || x == 'b' || x == 'c' || x == 'd' || x == 'g' || x == 'f' || x == 'e' || x == 'C' || x == ' ') {
song[i] = x;
i++;
led();
}
if (x == '0') {
play = 1;
j = 0;
count = i;
}
}
}
for ( j = 0; play == 1 && j < count; ) {
while (Serial.available() > 0 ) {
x = Serial.read();
}
if (x != '1') {
float value = analogRead(A7);
float freq = (value / 256) ;
float tune = analogRead(A6);
float tuned = tune / 512;
float poop = ((value + tune) / 2) / 1024;
Serial.println(song[j]);
led();
tone(speakerPin, (frequency(song[j])*tuned), (150 * freq));
delay(140);
if (poop == 0) {
char_OFF();
}
if (poop <= .10) {
char_ONE();
}
if (poop >= .10 && poop <= .2) {
char_TWO();
}
if (poop >= .20 && poop <= .3) {
char_THREE();
}
if (poop >= .30 && poop <= .4) {
char_FOUR();
}
if (poop >= .40 && poop <= .5) {
char_FIVE();
}
if (poop >= .50 && poop <= .6) {
char_SIX();
}
if (poop >= .70 && poop <= .8) {
char_SEVEN();
}
if (poop >= .80 && poop <= .9) {
char_EIGHT();
}
if (poop >= .90 && poop <= .95) {
char_NINE();
}
if (poop >= .95 && poop <= 1.1) {
char_TEN();
}
j++;
}
if (x == '1') {
play = 0;
}
}
}
( Sorry for my video being upside down, I had to zip tie my phone to a tripod.)
int speakerPin = 2;
int n = 0;
int h;
char song[100];
int i = 0;
int j = 1;
int play = 0;
char x = 0;
int count;
float freq;
float tune;
char D;
char E;
char F;
char G;
char A;
char B;
char C;
int d1d = 31;
int d2d = 33;
int d3d = 35;
int d4d = 37;
int d5d = 39;
int d6d = 41;
int d7d = 43;
int d8d = 45;
int d9d = 47;
int d10d = 49;
#define A 22
#define B 9
#define C 50
#define D 3
#define E 34
#define F 5
#define G 6
void char_A()
{
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void char_non()
{
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void char_B()
{
//Displays B
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
}
void char_C()
{
//Displays C
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void char_D()
{
//Displays D
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void char_E()
{
//Displays E
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void char_F()
{
//Displays F
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void char_G()
{
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void zero()
{
//Displays 0
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void char_OFF() {
digitalWrite(d1d, LOW);
digitalWrite(d2d, LOW);
digitalWrite(d3d, LOW);
digitalWrite(d4d, LOW);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_ONE() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, LOW);
digitalWrite(d3d, LOW);
digitalWrite(d4d, LOW);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_TWO() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, LOW);
digitalWrite(d4d, LOW);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_THREE() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, LOW);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_FOUR() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, LOW);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_FIVE() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, LOW);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_SIX() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, LOW);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_SEVEN() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, HIGH);
digitalWrite(d8d, LOW);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_EIGHT() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, HIGH);
digitalWrite(d8d, HIGH);
digitalWrite(d9d, LOW);
digitalWrite(d10d, LOW);
}
void char_NINE() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, HIGH);
digitalWrite(d8d, HIGH);
digitalWrite(d9d, HIGH);
digitalWrite(d10d, LOW);
}
void char_TEN() {
digitalWrite(d1d, HIGH);
digitalWrite(d2d, HIGH);
digitalWrite(d3d, HIGH);
digitalWrite(d4d, HIGH);
digitalWrite(d5d, HIGH);
digitalWrite(d6d, HIGH);
digitalWrite(d7d, HIGH);
digitalWrite(d8d, HIGH);
digitalWrite(d9d, HIGH);
digitalWrite(d10d, HIGH);
}
void boot() {
char_ONE();
delay(30);
char_TWO();
delay(30);
char_THREE();
delay(30);
char_FOUR();
delay(30);
char_FIVE();
delay(30);
char_SIX();
delay(30);
char_SEVEN();
delay(30);
char_EIGHT();
delay(30);
char_NINE();
delay(30);
char_TEN();
}
int frequency(char note) {
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' , ' '};
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523, 000};
for (h = 0; h < 100; h++) {
if (names[h] == note)
{
return (frequencies[h]);
}
}
}
void led() {
if (song[j] == 'a') {
char_A();
}
if (song[j] == 'b') {
char_B();
}
if (song[j] == 'C') {
char_C();
}
if (song[j] == 'c') {
char_C();
}
if (song[j] == 'd') {
char_D();
}
if (song[j] == 'e') {
char_E();
}
if (song[j] == 'f') {
char_F();
}
if (song[j] == 'g') {
char_G();
} if (song[j] == ' ') {
char_non();
}
}
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(d1d, OUTPUT);
pinMode(d2d, OUTPUT);
pinMode(d3d, OUTPUT);
pinMode(d4d, OUTPUT);
pinMode(d5d, OUTPUT);
pinMode(d6d, OUTPUT);
pinMode(d7d, OUTPUT);
pinMode(d8d, OUTPUT);
pinMode(d9d, OUTPUT);
pinMode(d10d, OUTPUT);
pinMode(speakerPin, OUTPUT);
Serial.begin(9600);
Serial.println("type c, d, e, f, g, a, b, c, or the space bar to create music, type 0 to start song");
boot();
}
void loop() {
for (i = 0; play == 0 && i < 100; ) {
while (Serial.available() > 0 ) {
x = Serial.read();
if ( x == 'a' || x == 'b' || x == 'c' || x == 'd' || x == 'g' || x == 'f' || x == 'e' || x == 'C' || x == ' ') {
song[i] = x;
i++;
led();
}
if (x == '0') {
play = 1;
j = 0;
count = i;
}
}
}
for ( j = 0; play == 1 && j < count; ) {
while (Serial.available() > 0 ) {
x = Serial.read();
}
if (x != '1') {
float value = analogRead(A7);
float freq = (value / 256) ;
float tune = analogRead(A6);
float tuned = tune / 512;
float poop = ((value + tune) / 2) / 1024;
Serial.println(song[j]);
led();
tone(speakerPin, (frequency(song[j])*tuned), (150 * freq));
delay(140);
if (poop == 0) {
char_OFF();
}
if (poop <= .10) {
char_ONE();
}
if (poop >= .10 && poop <= .2) {
char_TWO();
}
if (poop >= .20 && poop <= .3) {
char_THREE();
}
if (poop >= .30 && poop <= .4) {
char_FOUR();
}
if (poop >= .40 && poop <= .5) {
char_FIVE();
}
if (poop >= .50 && poop <= .6) {
char_SIX();
}
if (poop >= .70 && poop <= .8) {
char_SEVEN();
}
if (poop >= .80 && poop <= .9) {
char_EIGHT();
}
if (poop >= .90 && poop <= .95) {
char_NINE();
}
if (poop >= .95 && poop <= 1.1) {
char_TEN();
}
j++;
}
if (x == '1') {
play = 0;
}
}
}
Thursday, October 1, 2015
rock paper led game
Led rock paper scissors game. I had to use a hardware reset because it worked and I couldn't figure out how to reset the states without having a mess saved in my variables.
void setup() {
Serial1.begin(9600);
pinMode(3, LOW);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(9, LOW);
pinMode(10, LOW);
pinMode(11, LOW);
Serial1.println('z');
}
int gamestate = 0;
char play = ' ';
int led ;
int x = 0;
char user;
char op;
int player;
char oh;
int i = 0;
void loop() {
int buttonState = digitalRead(22);
int value = analogRead(A7);
if (Serial1.available() > 0 ) {
op = Serial1.read();
}
if (gamestate == 0 && player == 0) {
int knob = value * (255 / 1024.0);
int player = 0;
led = 0;
int buttonState = digitalRead(22);
Serial1.println("z");
if (buttonState == HIGH) {
gamestate = 2;
player = knob;
oh = 'o';
if (player <= 85) {
play = 'r';
}
if (player > 85 && player <= 170) {
play = 'b';
}
if (player > 170 && player <= 255) {
play = 'g';
}
}
}
if (gamestate == 2) {
led = 2;
i = 1;
Serial1.println(oh);
if ( led == 2) {
pinMode(5, LOW);
pinMode(6, HIGH);
pinMode(7, HIGH);
}
if (op == 'o' && oh == 'o') {
gamestate = 3;
Serial1.println(play);
op = Serial1.read();
op = Serial1.read();
if (play == 'r') {
pinMode(9, HIGH);
pinMode(10, LOW);
pinMode(11, LOW);
Serial1.println(play);
}
if (play == 'b') {
pinMode(9, LOW);
pinMode(10, LOW);
pinMode(11, HIGH);
Serial1.println(play);
}
if (play == 'g') {
pinMode(9, LOW);
pinMode(10, HIGH);
pinMode(11, LOW);
Serial1.println(play);
}
}
}
if (op == 'r') {
if (play == 'g') {
led = 6;
}
}
if (op == 'g') {
if (play == 'b') {
led = 6;
}
}
if (op == 'b') {
if (play == 'r') {
led = 6;
}
}
if (play == 'r') {
if (op == 'g') {
led = 7;
}
}
if (play == 'g') {
if (op == 'b') {
led = 7;
}
}
if (play == 'b') {
if (op == 'r') {
led = 7;
}
}
if (play == op) {
led = 8;
}
if (led == 7 ) {
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
if (play == 'r') {
pinMode(9, HIGH);
pinMode(10, LOW);
pinMode(11, LOW);
}
if (play == 'b') {
pinMode(9, LOW);
pinMode(10, LOW);
pinMode(11, HIGH);
}
if (play == 'g') {
pinMode(9, LOW);
pinMode(10, HIGH);
pinMode(11, LOW);
}
}
if (led == 8) {
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
if (play == 'r') {
pinMode(9, HIGH);
pinMode(10, LOW);
pinMode(11, LOW);
}
if (play == 'b') {
pinMode(9, LOW);
pinMode(10, LOW);
pinMode(11, HIGH);
}
if (play == 'g') {
pinMode(9, LOW);
pinMode(10, HIGH);
pinMode(11, LOW);
}
}
if (led == 6) {
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
if (play == 'r') {
pinMode(9, HIGH);
pinMode(10, LOW);
pinMode(11, LOW);
}
if (play == 'b') {
pinMode(9, LOW);
pinMode(10, LOW);
pinMode(11, HIGH);
}
if (play == 'g') {
pinMode(9, LOW);
pinMode(10, HIGH);
pinMode(11, LOW);
}
}
// yellow
if ( led == 0) {
pinMode(5, HIGH);
pinMode(6, HIGH);
pinMode(7, LOW);
}
// magenta led
if ( led == 1) {
pinMode(5, HIGH);
pinMode(6, LOW);
pinMode(7, HIGH);
}
// cyan led
if ( led == 2) {
pinMode(5, LOW);
pinMode(6, HIGH);
pinMode(7, HIGH);
}
// flash BLUE
if ( led == 8 ) {
x = 0;
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
if ( x < 4) {
pinMode(5, LOW);
pinMode(6, LOW);
pinMode(7, HIGH);
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
delay(1000);
pinMode(5, LOW);
pinMode(6, LOW);
pinMode(7, LOW);
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
delay(1000);
x++;
}
op = 'z';
}
// flash WHITE lose
if (led == 6) {
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
x = 0;
while ( x < 4) {
pinMode(5, HIGH);
pinMode(6, HIGH);
pinMode(7, HIGH);
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
delay(1000);
pinMode(5, LOW);
pinMode(6, LOW);
pinMode(7, LOW);
delay(1000);
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
x++;
}
op = 'z';
}
// flash colors win
if (led == 7) {
x = 0;
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
while ( x < 3) {
pinMode(5, LOW);
pinMode(6, HIGH);
pinMode(7, HIGH);
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
delay(1000);
pinMode(5, HIGH);
pinMode(6, LOW);
pinMode(7, HIGH);
Serial1.println(play);
Serial1.println(play);
Serial1.println(play);
delay(1000);
pinMode(5, HIGH);
pinMode(6, HIGH);
pinMode(7, LOW);
delay(1000);
x++;
}
op = 'z';
}
// reset
if (op == 'z' && gamestate == 3) {
x = 0;
while (x < 3) {
pinMode(5, LOW);
pinMode(6, HIGH);
pinMode(7, LOW);
delay(400);
pinMode(5, LOW);
pinMode(6, LOW);
pinMode(7, LOW);
delay(400);
x++;
pinMode(3, HIGH);
}
}
}
Sunday, September 20, 2015
Accelerometer driven led
The Accelerometer is driving the color of the led. The one thing that helped the most on this project was finding out the output voltages of the pins on the accelerometer. The Arduino reads from 0-5 volts and maps those values from 0-1024 I believe. But the accelerometer puts out a smaller range of voltages so you have to convert those to a broader range of values if you want your led to have a more drastic change in color. We did not connect capacitors to the outputs and i think that would have helped especially with the flickering you see in the video below.
void setup() {
Serial.begin(9600);
}
void loop() {
int xVal = analogRead(A2);
int yVal = analogRead(A1);
int zVal = analogRead(A0);
int red = 9;
int green = 10;
int blue = 11;
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
float rr = (xVal - 180.0) * (255.0 / 328.0);
float gg = (yVal - 180.0) * (255.0 / 328.0);
float bb = (zVal - 180.0) * (255.0 / 328.0);
analogWrite(red, rr);
analogWrite(green, gg);
analogWrite(blue, bb);
//Serial.println(xVal);
Serial.println(rr);
}
Tuesday, September 15, 2015
Interactive Kinetic Sculpture / Do nothing machine
This is a prototype for an interactive kinetic sculpture. The users would first start the Arduino and hear a beeping. Then they are able to control how fast different part of the sculpture rotates with two knobs. LEDs shift hues according to the rpm of the motors.
This is the second this has been assembled.
/* Matthew Justice
Physical Computing
Interactive Kinetic Sculpture with leds
Do nothing machine
*/
int motorPin = 5;
int motor = 6;
//beeps on start up
void beep(unsigned char delayms) {
analogWrite(3, 20);
delay(delayms);
analogWrite(3, 0);
delay(delayms);
}
void setup() {
pinMode(motorPin, OUTPUT);
pinMode(motor, OUTPUT);
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(3, OUTPUT);
beep(100);
delay(50);
beep(60);
delay(50);
beep(125);
}
int rr = 255;
int gg = 255;
int bb = 255;
int red = 9;
int green = 10;
int blue = 11;
void loop()
{
//beep(1);
int sensor = analogRead(A0);
float rpm = sensor * (255 / 1024.0);
int sensort = analogRead(A1);
float rpmt = sensort * (255 / 1024.0);
int speeed = rpm;
int speeedt = rpmt;
analogWrite(motorPin, speeed);
analogWrite(motor, speeedt);
Serial.println(rpmt);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
int sensorValue = analogRead(A0);
float volt = sensorValue * (360 / 1024.0);
if (volt < 60) {
rr = 0;
}
if (volt >= 120 && volt <= 240 ) {
rr = 255;
}
if (volt >= 300) {
rr = 0;
}
if (volt >= 60 && volt <= 180) {
gg = 0;
}
if (volt >= 240 ) {
gg = 255;
}
if (volt < 120 ) {
bb = 255;
}
if (volt >= 180 && volt <= 300) {
bb = 0;
}
// linear color change
if (volt < 60 ) {
gg = (255 / 60) * volt;
gg = 255 - gg;
gg = abs(gg);
}
if (volt >= 120 && volt <= 180) {
bb = (255 / 60) * (volt - 120);
bb = 255 - bb;
bb = abs(bb);
}
if (volt >= 240 && volt <= 300) {
rr = (255 / 60) * (volt - 240);
rr = 255 - rr;
rr = abs(rr);
}
if (volt >= 180 && volt <= 240) {
gg = -1 * ((255 / 60) * (volt - 180));
gg = 255 - gg;
gg = abs(gg);
}
if (volt >= 60 && volt <= 120) {
rr = -1 * ((255 / 60) * (volt - 60));
rr = 255 - rr;
rr = abs(rr);
}
if (volt >= 300 && volt <= 360) {
bb = -1 * ((255 / 60) * (volt - 300));
bb = 255 - bb;
bb = abs(bb);
}
analogWrite(red, rr);
analogWrite(green, gg);
analogWrite(blue, bb);
}
Tuesday, September 8, 2015
Matt Justice RYB led controller Arduino code
//Matt Justice RYB led controller
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
int rr = 255;
int gg = 255;
int bb = 255;
int red = 9;
int green = 10;
int blue = 11;
// the loop routine runs over and over again forever:
void loop() {
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
int sensorValue = analogRead(A0);
float volt = sensorValue * (360 / 1024.0);
if (volt < 60) {
rr = 0;
}
if (volt >= 120 && volt <= 240 ) {
rr = 255;
}
if (volt >= 300) {
rr = 0;
}
if (volt >= 60 && volt <= 180) {
gg = 0;
}
if (volt >= 240 ) {
gg = 255;
}
if (volt < 120 ) {
bb = 255;
}
if (volt >= 180 && volt <= 300) {
bb = 0;
}
// linear color change
if (volt < 60 ) {
gg = (255 / 60) * volt;
gg = 255 - gg;
gg = abs(gg);
}
if (volt >= 120 && volt <= 180) {
bb = (255 / 60) * (volt - 120);
bb = 255 - bb;
bb = abs(bb);
}
if (volt >= 240 && volt <= 300) {
rr = (255 / 60) * (volt - 240);
rr = 255 - rr;
rr = abs(rr);
}
if (volt >= 180 && volt <= 240) {
gg = -1 * ((255 / 60) * (volt - 180));
gg = 255 - gg;
gg = abs(gg);
}
if (volt >= 60 && volt <= 120) {
rr = -1 * ((255 / 60) * (volt - 60));
rr = 255 - rr;
rr = abs(rr);
}
if (volt >= 300 && volt <= 360) {
bb = -1 * ((255 / 60) * (volt - 300));
bb = 255 - bb;
bb = abs(bb);
}
analogWrite(red, rr);
analogWrite(green, gg);
analogWrite(blue, bb);
// Serial.println(volt);
// Serial.println(rr);
// Serial.println(gg);
// Serial.println(bb);
}
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
int rr = 255;
int gg = 255;
int bb = 255;
int red = 9;
int green = 10;
int blue = 11;
// the loop routine runs over and over again forever:
void loop() {
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
int sensorValue = analogRead(A0);
float volt = sensorValue * (360 / 1024.0);
if (volt < 60) {
rr = 0;
}
if (volt >= 120 && volt <= 240 ) {
rr = 255;
}
if (volt >= 300) {
rr = 0;
}
if (volt >= 60 && volt <= 180) {
gg = 0;
}
if (volt >= 240 ) {
gg = 255;
}
if (volt < 120 ) {
bb = 255;
}
if (volt >= 180 && volt <= 300) {
bb = 0;
}
// linear color change
if (volt < 60 ) {
gg = (255 / 60) * volt;
gg = 255 - gg;
gg = abs(gg);
}
if (volt >= 120 && volt <= 180) {
bb = (255 / 60) * (volt - 120);
bb = 255 - bb;
bb = abs(bb);
}
if (volt >= 240 && volt <= 300) {
rr = (255 / 60) * (volt - 240);
rr = 255 - rr;
rr = abs(rr);
}
if (volt >= 180 && volt <= 240) {
gg = -1 * ((255 / 60) * (volt - 180));
gg = 255 - gg;
gg = abs(gg);
}
if (volt >= 60 && volt <= 120) {
rr = -1 * ((255 / 60) * (volt - 60));
rr = 255 - rr;
rr = abs(rr);
}
if (volt >= 300 && volt <= 360) {
bb = -1 * ((255 / 60) * (volt - 300));
bb = 255 - bb;
bb = abs(bb);
}
analogWrite(red, rr);
analogWrite(green, gg);
analogWrite(blue, bb);
// Serial.println(volt);
// Serial.println(rr);
// Serial.println(gg);
// Serial.println(bb);
}
Monday, September 7, 2015
Model for Fantasy Artwork
My idea to incorporate an Arduino into an art piece is to make a modern day do nothing machine.
"In 1957, the Eameses designed the SOLAR DO-NOTHING MACHINE. True to the Eameses' belief that toys are not as innocent as they appear, the machine was one of the first uses of solar power to produce electricity."
My plan is to instead of showing how solar power can create art, to show how an interactive computer experience can invoke a feeling of wonder and whimsy in the audience.
The piece will have some buttons, switches and dials that can start and stop movements, create different lights, and adjust the speed of various things.
"In 1957, the Eameses designed the SOLAR DO-NOTHING MACHINE. True to the Eameses' belief that toys are not as innocent as they appear, the machine was one of the first uses of solar power to produce electricity."
My plan is to instead of showing how solar power can create art, to show how an interactive computer experience can invoke a feeling of wonder and whimsy in the audience.
The piece will have some buttons, switches and dials that can start and stop movements, create different lights, and adjust the speed of various things.
Subscribe to:
Posts (Atom)