Introduction: Revenge of the Trash (lamp)

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

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

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

Step 2: Maak Een Opening in De Fles

Step 3: Maak Een Opening in De Dop

Step 4: Maak De Openingen in Het Halve Liter Blik Bier

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

Step 6: Bevestig Het Podlood Aan Het Halve Liter Blik Met Tape

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

Step 8: Bevestig De Knoppen En Maak Deze Vast Met Een Lijm Pistol

Step 9: Stop Het Usb Lampje in Het Blik

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

Step 11: 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.

Step 12: 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);

}

Attachments

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

Step 14: Sluit De Opening Van De Fles En Tape Deze Dicht

Step 15: Reflectie

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.