Revenge of the Trash (lamp)

by groovyuploader in Craft > Art

74 Views, 0 Favorites, 0 Comments

Revenge of the Trash (lamp)

revenge of the trash (lamp).jpg

Een lamp volledig gemaakt van afval voor mijn opleiding: HKU Games, module: ITTT

Deze lamp heeft 3 knoppen.

Knop 1 schakkelt de lamp aan en uit en draait de lamp (90 graden) in zijn start positie

Knop 2 draait de lamp 10 graden naar link

En knop 3 draait de lamp 10 graden naar rechts


De reden dat ik dit ontwerp heb gemaakt is om aandacht te vragen voor ons milleu, sustainability, en de nadelen van onze consumptie maatschapij.

Supplies

Benodigdheden:

-1x arduino uno

-1x adapter voor arduino

-1x 180 graden servo motor

-3x 10K resistors

-1x USB lampje (5 volt)

-3x druk knopjes

-1x een lege fles frisdrank

-1x leeg half liter blik

-1x oud podlood

-1x rol wc papier

-een hoop lege baterijen

-tape

-kroonsteentjes


Gereedschap:

-vork

-schaar

-scherp mes

-lijm pistol

-schroevendraaier

-aansteker

Knip De Usb Aansluiting Van Het Usb Lampje Af En Expose De Draden.

stap 1.png

Knip De Usb Aansluiting Van Het Usb Lampje Af En Expose De Draden.

Maak Een Opening in De Fles

stap 2.png

Maak Een Opening in De Dop

stap 3.png

Maak De Openingen in Het Halve Liter Blik Bier

stap 4.png

Bevestig De Vleugel Van De Servo Motor Aan Het Podlood Met De Bijgeleverde Schroeven

stap 5.png

Bevestig Het Podlood Aan Het Halve Liter Blik Met Tape

stap 6.png

Verhit Een Vork Met Een Aansteker En Prik Gaatjes in De Fles Voor De Druk Knoppen

stap 7.png

Bevestig De Knoppen En Maak Deze Vast Met Een Lijm Pistol

stap 8.png

Stop Het Usb Lampje in Het Blik

stap 9.png

Vul De Bodem Van De Fles Met Lege Baterijen Om De Onderkant Van De Fles Te Verzwaren, Bedek Deze Vervolgens Met Wc Papier.

stap 10.png

Stop De Servo Motor in De Dop En Bevestig De Vleugel (met Daar Aan Het Podlood En Blikje + Usb Lampje), Zorg Dat De Draden Langs De Servo Motor De Fles in Gaan.

stap 11.png

Upload De Volgende Code Naar Je Arduino Uno:

//all liaberies

#include <Servo.h>

//Constant vars

//all pins

int on_switch_pin = 2;

int turn_left_pin = 3;

int turn_right_pin = 4;

int light_pin = 7;

int servo_pin = 8;

//miscellaneous

int button_delay = 500;

Servo servo_motor;

//dynamic vars

//button states

int on_switch_buttonState = 0;

int turn_left_buttonState = 0;

int turn_right_buttonState = 0;

//miscellaneous

int is_on = 0;

int current_rot_servo = 0;


void setup()

{

 set_pinmodi(); //set all pin modi

 servo_motor.write(0); //to calibrate servo

}


void loop()

{

 //check all buttons

 check_on_button_state();

 check_left_turn_button();

 check_right_turn_button();

}

//set all pin modi

void set_pinmodi()

{

 pinMode(light_pin, OUTPUT);

 pinMode(on_switch_pin, INPUT);

 pinMode(turn_left_pin, INPUT);

 pinMode(turn_right_pin, INPUT);

 pinMode(servo_pin, OUTPUT);

 servo_motor.attach(servo_pin);

}


void check_on_button_state()

{

 on_switch_buttonState = digitalRead(on_switch_pin); //update if button is pressed

 if (is_on == 0 && on_switch_buttonState == HIGH) //check if button is pressed (on_switch_buttonState) & if device is already powerd on (is_on, 0 = off and 1 = on)

  {

   digitalWrite(light_pin, HIGH); //switch light on

   servo_motor.write(90); //turn servo motor

   current_rot_servo = 90; //keep track of current rotation

   delay(button_delay); //to give user time to release button

   is_on = 1; //keep track of device is turned on

  }

 on_switch_buttonState = digitalRead(on_switch_pin); //update if button is pressed

 if (is_on == 1 && on_switch_buttonState == HIGH) //check if button is pressed (on_switch_buttonState) & if device is already powerd on (is_on, 0 = off and 1 = on)

  {

   digitalWrite(light_pin, LOW); //switch light off

   servo_motor.write(0); //turn servo motor

   current_rot_servo = 0; //keep track of current rotation

   delay(button_delay); //to give user time to release button

   is_on = 0; //keep track of device is turned on

  }

}


void check_left_turn_button()

{

 turn_left_buttonState = digitalRead(turn_left_pin); //update if button is pressed

 if (turn_left_buttonState == HIGH) //check if button is pressed

  {

   current_rot_servo -= 10; //calculate new rotation

   if (current_rot_servo <= 0) //check if it doesn't cross boundery

    {

     current_rot_servo = 0; //boundery crossed, go to minimum value

     servo_motor.write(0); //turn servo to minimum value

     delay(button_delay); //to give user time to release button

    }

   else

    {

     servo_motor.write(current_rot_servo); //turn servo to new rotation

     delay(button_delay); //to give user time to release button

    }

  }

}


void check_right_turn_button()

{

 turn_right_buttonState = digitalRead(turn_right_pin); //update if button is pressed

 if (turn_right_buttonState == HIGH) //check if button is pressed

  {

   current_rot_servo += 10; //calculate new rotation

   if (current_rot_servo >= 180) //check if it doesn't cross boundery

    {

     current_rot_servo = 180; //boundery crossed, go to minimum value

     servo_motor.write(180); //turn servo to maximum value

     delay(button_delay); //to give user time to release button

    }

   else

    {

     servo_motor.write(current_rot_servo); //turn servo to new rotation

     delay(button_delay); //to give user time to release button

    }

  }

}


//all test functions

void test_servo()

{

 servo_motor.write(90);

 delay(1000);

 servo_motor.write(0);

 delay(1000);

 

}


void test_check_on_button_state()

{

 on_switch_buttonState = digitalRead(on_switch_pin);


 

 if (on_switch_buttonState == HIGH)

 {

  digitalWrite(light_pin, HIGH);

  Serial.println('Y');

 } else {

  digitalWrite(light_pin, LOW);

  Serial.println('N');

 }

}


void test_light()

{

 digitalWrite(light_pin, HIGH); 

 delay(1000);          

 digitalWrite(light_pin, LOW); 

 delay(1000);

}

Downloads

Sluit Alle Bedrading En Resistors Aan, Aan De Hand Van Het Volgende Schema:

stap 13.png

Sluit De Opening Van De Fles En Tape Deze Dicht

stap 14.png

Reflectie

itteratie.png

Ik heb geleerd hoe fragile zo’n frisdrank fles eigenlijk is.

Zodra je er een stuk uitsnijd of er komt wat hitte in de de buurt, zakt deze fles gelijk in.

Ook was het een leuke uitdaging om een keer iets proberen te maken van volledig afval. (zelfs alle arduino componenten zijn af gesloopt van andere arduino projecten)

Het was wel jammer dat het uiteindelijk niet gelukt is om het halve liter blik aan de servo vleugel te bevestigen met lege lange vloei boekjes.

Ik heb dit wel geprobeerd maar het was niet stevig genoeg en heb daardoor moeten ittereren naar een potlood om dit mee te bevestigen:

Daarnaast heb ik de arduino skills die ik al had weer effe kunnen doornemen, iets wat natuurijk nooit kwaad kan.