Difference between revisions of "How it's made 2223"

From Interaction Station Wiki
Jump to navigation Jump to search
 
(23 intermediate revisions by 2 users not shown)
Line 10: Line 10:
 
=2022-09-08=
 
=2022-09-08=
 
* WH.02.125 (Prototyping Space IAS) 9:00 - 16:00
 
* WH.02.125 (Prototyping Space IAS) 9:00 - 16:00
==Introduction or "Hello World"==
+
==Introduction==
 
===1. Circuit bending===
 
===1. Circuit bending===
  
Line 109: Line 109:
 
* WH.02.125 (Prototyping Space IAS) 10:00 - 16:00
 
* WH.02.125 (Prototyping Space IAS) 10:00 - 16:00
 
==Capacitive Sensor printing values to Serial Monitor==
 
==Capacitive Sensor printing values to Serial Monitor==
 +
[[File:Theremin.png|thumb|center]]
 
<pre>
 
<pre>
 
#include <CapacitiveSensor.h>
 
#include <CapacitiveSensor.h>
Line 127: Line 128:
 
==Theremin==
 
==Theremin==
 
<pre>
 
<pre>
 +
#include <CapacitiveSensor.h>
 +
 +
CapacitiveSensor  sensor = CapacitiveSensor(8,11); 
 +
 +
int speaker = 13;              //connect a speaker between pin 13 and GND
 +
long raw;
 +
 +
 +
void setup(){
 +
  sensor.set_CS_AutocaL_Millis(0xFFFFFFFF);   
 +
  Serial.begin(115200);
 +
  Serial.println("raw");
 +
}
 +
void loop(){
 +
  raw = sensor.capacitiveSensor(10);                //lowest  450 & highest 750
 +
  raw = min(raw, 750);                              //max value of raw is 750
 +
  raw = max(raw, 10);                                //min value of raw is 10
 +
  long speakerValue = map(raw,450,750,100,4000);    //scales to value from 450 and 750 to 100 and 4000
 +
  tone(speaker,speakerValue);                        //plays the frequency (raw) on port 13(speaker)
 +
  Serial.print(raw);
 +
  Serial.print(" ");
 +
  Serial.println(speakerValue);
 +
 
 +
}
 
</pre>
 
</pre>
 +
 
==Capactive sensor as button==
 
==Capactive sensor as button==
 
<pre>
 
<pre>
 +
#include <CapacitiveSensor.h>
 +
 +
CapacitiveSensor  sensor = CapacitiveSensor(8,11); 
 +
 +
int speaker = 13;
 +
long raw;
 +
 +
 +
void setup(){
 +
  sensor.set_CS_AutocaL_Millis(0xFFFFFFFF);   
 +
  Serial.begin(115200);
 +
  Serial.println("raw");
 +
}
 +
void loop(){
 +
  raw = sensor.capacitiveSensor(10);        //lowest  450 & highest 750
 +
  if(raw > 600){                            //if raw is bigger than 600
 +
    Serial.println("touched");              //print "touched"
 +
    tone(speaker,440);                      //play a tone with 440 hz
 +
    delay(1000);                            //stop 1000 second
 +
    noTone(speaker);                        //stop playing the tone
 +
  }
 +
  delay(10);
 +
 
 +
}
 
</pre>
 
</pre>
 +
 
==Servo motor movement between 0 and 90 degrees==
 
==Servo motor movement between 0 and 90 degrees==
 
<pre>
 
<pre>
 +
//this example controls a standard servo motor and moves it between 0 and 90 degrees
 +
//the servo has three different wires
 +
//the red wire is plus and connected to 5v
 +
//the brown wire is minus and connected to GND
 +
//the orange wire is the signal wire and connected to pin 3 (remember the ~-symbol - it means PWM)
 +
 +
#include <Servo.h>
 +
 +
 +
 +
Servo theServo;
 +
 +
void setup() {
 +
  Serial.begin(115200);
 +
  theServo.attach(3); 
 +
}
 +
 +
void loop() {
 +
  for(int i = 0; i < 90; i++){
 +
    theServo.write(i);
 +
    Serial.println(i);
 +
    delay(50);
 +
  }
 +
  for(int i = 90; i > 0; i--){
 +
    theServo.write(i);
 +
    Serial.println(i);
 +
    delay(10);   
 +
  }
 +
}
 
</pre>
 
</pre>
 +
 
==automatic trash can - servo motor connected capactive sensor==
 
==automatic trash can - servo motor connected capactive sensor==
 
<pre>
 
<pre>
 +
#include <Servo.h>
 +
#include <CapacitiveSensor.h>
 +
 +
CapacitiveSensor  sensor = CapacitiveSensor(8,11); 
 +
 +
Servo theServo;
 +
long raw;
 +
 +
void setup() {
 +
  Serial.begin(115200);
 +
  theServo.attach(3); 
 +
  sensor.set_CS_AutocaL_Millis(0xFFFFFFFF);   
 +
  Serial.begin(115200);
 +
  Serial.println("raw");
 +
}
 +
 +
void loop() {
 +
  raw = sensor.capacitiveSensor(10);    //lowest  450 & highest 750
 +
  if(raw > 600){                        //if raw is bigger than 600
 +
    open();                            //do void open
 +
    delay(4000);                        //wait for 4 seconds
 +
    close();                            //close void opne
 +
  }
 +
}
 +
 +
void open(){
 +
  //open
 +
  for(int i = 0; i < 90; i++){          //count from 0 to 90
 +
    theServo.write(i);                  //move the servo from 0 to 90
 +
    Serial.println(i);
 +
    delay(50);
 +
  }
 +
}
 +
 +
void close(){
 +
  //close
 +
  for(int i = 90; i > 0; i--){
 +
    theServo.write(i);
 +
    Serial.println(i);
 +
    delay(10);   
 +
  }
 +
}
 +
</pre>
 +
 +
==trash can controlled by serial commands==
 +
<pre>
 +
//in this sketch the servo is controlled by serial commands from the computer
 +
//if you send the letter "o" to the arudino it will execute "void open()"
 +
//if you send the letter "c" to the arduino it will execute "void close()"
 +
#include <Servo.h>  //import the servo library
 +
 +
Servo theServo;    //create a servo
 +
 +
void setup() {   
 +
  Serial.begin(115200);            //serial connection
 +
  theServo.attach(3);              //theServo is at port 3 (remeber the ~(PWM)-Symbol
 +
}
 +
 +
void loop() {
 +
  if(Serial.available()){        //if there is a serial command comming
 +
    char command = Serial.read();  //read the serial command
 +
    if(command == 'o'){            //is the command and 'o'
 +
      open();                      //do void open
 +
    }
 +
    if(command == 'c'){
 +
      close();
 +
    }
 +
  }
 +
}
 +
 +
void open(){         
 +
  //open
 +
  for(int i = 0; i < 90; i++){                //count from 0 to 90 with int i
 +
    theServo.write(i);                        //i is the servo position
 +
    Serial.println(i);                        //print the servo position to the serial monitor
 +
    delay(50);                                //wait for 50 milliseconds
 +
  }
 +
}
 +
 +
void close(){
 +
  //close
 +
  for(int i = 90; i > 0; i--){
 +
    theServo.write(i);
 +
    Serial.println(i);
 +
    delay(10);   
 +
  }
 +
}
 
</pre>
 
</pre>
 
==Potentiometer opening the trash can==
 
==Potentiometer opening the trash can==
 +
[[File:Servo potentiometer.png|thumb|center]]
 
<pre>
 
<pre>
 +
//in this sketch the servo is controlled by an potentiometer
 +
//a potentiometer is a variable resistor that can be changed by rotation
 +
#include <Servo.h>  //import the servo library
 +
 +
Servo theServo;    //create a servo
 +
 +
void setup() {   
 +
  Serial.begin(115200);            //serial connection
 +
  theServo.attach(3);              //theServo is at port 3 (remeber the ~(PWM)-Symbol
 +
}
 +
 +
void loop() {
 +
  int value = analogRead(A0);      //read the analog pin A0 the value is between 0 and 1023
 +
  value = map(value,0,1023,0,180); //adjust value from 0 to 1023 to 0 and 180 because the servo works with degrees
 +
  theServo.write(value);
 +
}
 
</pre>
 
</pre>
  
Line 144: Line 329:
 
* WH.02.110 (Instruction Room IAS) 10:00 - 16:00  
 
* WH.02.110 (Instruction Room IAS) 10:00 - 16:00  
 
==presentation==
 
==presentation==
 +
Desinger with unconventional approaches:
 +
* Enzo Mari - Autoprogettazione? ([https://syllabus.pirate.care/library/Enzo%20Mari/Autoprogettazione_%20(221)/Autoprogettazione_%20-%20Enzo%20Mari.pdf pdf])
 +
* Christian Kuhtz - Einfälle statt Abfälle (ideas against trash) ([https://einfaellestattabfaelle.wordpress.com/ link to website])
 +
 +
Unconventional projects with microcontrollers:
 +
* Paul Granjon - Fluffy Tamagotchi ([https://www.zprod.org/zwp/fluffy-tamagotchi/ video])
 +
* Paul Granjon - The cybernetic parrot sausage ([https://www.youtube.com/watch?v=cxKOeAJucCY video])
 +
  
 
==painting machine==
 
==painting machine==
 +
[[File:Paintingmachine.jpg|thumb|center]]
 +
[[File:Paintingmachinevideo.mp4|thumb|center]]
 +
 
 +
===[https://interactionstation.wdka.hro.nl/mediawiki/images/6/61/Paintingmachinevideo.mp4 Video]===
 +
<pre>
 +
//in this sketch one poti controls one servo
 +
#include <Servo.h>
 +
 +
Servo jointOne;
  
==controlling light==
+
void setup() {
 +
  Serial.begin(115200);
 +
  Serial.println("start");
 +
  jointOne.attach(10);
 +
}
 +
 
 +
void loop() {
 +
  int value = analogRead(A0);
 +
  value = map(value, 0, 1023, 0, 180);
 +
  jointOne.write(value);
 +
  delay(10);
 +
}
 +
</pre>
  
 
=2022-09-29=
 
=2022-09-29=
* WH.02.110 (Instruction Room IAS) 9:00 - 16:00  
+
* WH.02.110 (Instruction Room IAS) 10:00 - 16:00
==Theremin==
+
==Motor control ==
 +
<pre>
 +
//connect the dc-motor to the motorshield motor port 1
 +
//connect a external power source
 +
#include <Adafruit_MotorShield.h>
 +
 
 +
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
 +
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
 +
 
 +
 
 +
void setup() {
 +
  Serial.begin(115200);         
 +
  AFMS.begin();
 +
  myMotor->setSpeed(200);
 +
  myMotor->run(RELEASE);
 +
}
 +
 
 +
 
 +
void loop() {
 +
  myMotor->run(FORWARD);    //forward
 +
  myMotor->setSpeed(255);    //max speed
 +
  delay(2000);   
 +
 
 +
  myMotor->run(RELEASE);    //break
 +
  delay(2000);   
 +
 
 +
  myMotor->run(BACKWARD);    //backward
 +
  myMotor->setSpeed(255);    //max speed
 +
  delay(2000);   
 +
 
 +
  myMotor->run(RELEASE);    //break
 +
  delay(2000);   
 +
 
 +
}
  
 
=2022-10-06=
 
=2022-10-06=
 
* WH.02.110 (Instruction Room IAS) 9:00 - 16:00  
 
* WH.02.110 (Instruction Room IAS) 9:00 - 16:00  
==Heartbeat controlling light==
 
 
 
=2022-10-13=
 
=2022-10-13=
 
* WH.02.110 (Instruction Room IAS) 9:00 - 16:00  
 
* WH.02.110 (Instruction Room IAS) 9:00 - 16:00  
 
==  ==
 
==  ==
 +
[[Category:2022]]

Latest revision as of 12:25, 20 January 2023

    __  __                 _ __ _                              __   
   / / / /___ _      __   (_) /( )_____   ____ ___  ____ _____/ /__ 
  / /_/ / __ \ | /| / /  / / __/// ___/  / __ `__ \/ __ `/ __  / _ \
 / __  / /_/ / |/ |/ /  / / /_  (__  )  / / / / / / /_/ / /_/ /  __/
/_/ /_/\____/|__/|__/  /_/\__/ /____/  /_/ /_/ /_/\__,_/\__,_/\___/ 
                                                                    

2022-09-08

  • WH.02.125 (Prototyping Space IAS) 9:00 - 16:00

Introduction

1. Circuit bending

2. Introduction Arduino

Hello World!

void setup() {
}

void loop() {
  Serial.println("Hello World!");   //sends a message to the computer
}

Simple Led blink example

Led-blink.png
int ledPin = 13;               //the int ledPin is 13

void setup() {
  pinMode(ledPin,OUTPUT);      //ledPin is a OUTPUT
}

void loop() {
  digitalWrite(ledPin,HIGH);   //turns pin 13 on
  delay(500);                  //stops the loop for 500 milliseconds
  digitalWrite(ledPin,LOW);    //turns pin 13 off
  delay(500);                  //stops the loop for 500 milliseconds
}

Traffic light example

Led-traffic-light bb.png
int RedLedPin = 13;                 //the int RedLedPin is 13
int GreenLedPin = 12;               //the int GreenLedPin is 12

void setup() {
  pinMode(RedLedPin,OUTPUT);        //ledPin is a OUTPUT
  pinMode(GreenLedPin,OUTPUT);      //ledPin is a OUTPUT

}

void loop() {
  digitalWrite(GreenLedPin,HIGH);   //turns green led  on
  delay(5000);                      //stops the loop for 5000 milliseconds
  for(int i = 0; i < 5; i++){       //this for loop gets 5 times repeated
    digitalWrite(GreenLedPin,LOW);  //turns green led off
    delay(500);                     //stops the loop for 500 milliseconds
    digitalWrite(GreenLedPin,HIGH); //turns green led off
    delay(500);                     //stops the loop for 500 milliseconds
  }
  digitalWrite(GreenLedPin,LOW);    //turns green led off
  digitalWrite(RedLedPin,HIGH);     //turns red led on
  delay(5000);                      //stops the loop for 5000 milliseconds
  digitalWrite(RedLedPin,LOW);      //turns red led on
}

Speaker example

Speaker bb.png
int speaker = 13;                   //int speaker is 13

void setup() {
  pinMode(speaker, OUTPUT);         //pin 13 is an output
}

void loop() {
  for(int i = 100; i< 1000;i++){    //for loop counts from 100 to 1000
    tone(speaker, i);               //generates a tone on pin 13 with the frequency of int i
    delay(10);                      //stops the code for 10 milliseconds
  }
}

Speaker and button example

Speaker&button bb.png
//code generates on button press a random tone
int speaker = 13;                  //int speaker is 13
int button = 12;                   //int speaker is 12

void setup() {
  Serial.begin(115200);            //makes a serial connection to the computer
  pinMode(speaker, OUTPUT);        //pin 13 is an output
  pinMode(button, OUTPUT);         //pin 12 is an output
}

void loop() {
  bool buttonState = digitalRead(button);    //reads pin 12 & bool is a on or off value
  if(buttonState == HIGH){                   //if the button is HIGH(pressed)
    int randomValue = random(100,1000);      // creates an int called randomValue with a random value between 100 and 1000
    tone(speaker, randomValue);              //creates an tone on pin 13 with the random value as frequency
    delay(500);                              //stops the loop for 500 milliseconds
  }
}

2022-09-15

  • WH.02.125 (Prototyping Space IAS) 10:00 - 16:00

Capacitive Sensor printing values to Serial Monitor

Theremin.png
#include <CapacitiveSensor.h>
CapacitiveSensor   sensor = CapacitiveSensor(8,11);       
long raw;
void setup(){
   sensor.set_CS_AutocaL_Millis(0xFFFFFFFF);    
   Serial.begin(115200);
   Serial.println("raw");
}
void loop(){
  raw = sensor.capacitiveSensor(10);
  Serial.println(raw);
  delay(10);
}

Theremin

#include <CapacitiveSensor.h>

CapacitiveSensor   sensor = CapacitiveSensor(8,11);  

int speaker = 13;               //connect a speaker between pin 13 and GND
long raw;


void setup(){
   sensor.set_CS_AutocaL_Millis(0xFFFFFFFF);    
   Serial.begin(115200);
   Serial.println("raw");
}
void loop(){
  raw = sensor.capacitiveSensor(10);                 //lowest  450 & highest 750
  raw = min(raw, 750);                               //max value of raw is 750
  raw = max(raw, 10);                                //min value of raw is 10
  long speakerValue = map(raw,450,750,100,4000);     //scales to value from 450 and 750 to 100 and 4000
  tone(speaker,speakerValue);                        //plays the frequency (raw) on port 13(speaker)
  Serial.print(raw);
  Serial.print(" ");
  Serial.println(speakerValue);
  
}

Capactive sensor as button

#include <CapacitiveSensor.h>

CapacitiveSensor   sensor = CapacitiveSensor(8,11);  

int speaker = 13;
long raw;


void setup(){
   sensor.set_CS_AutocaL_Millis(0xFFFFFFFF);    
   Serial.begin(115200);
   Serial.println("raw");
}
void loop(){
  raw = sensor.capacitiveSensor(10);         //lowest  450 & highest 750
  if(raw > 600){                             //if raw is bigger than 600
    Serial.println("touched");               //print "touched"
    tone(speaker,440);                       //play a tone with 440 hz
    delay(1000);                             //stop 1000 second
    noTone(speaker);                         //stop playing the tone
  }
  delay(10);
  
}

Servo motor movement between 0 and 90 degrees

//this example controls a standard servo motor and moves it between 0 and 90 degrees
//the servo has three different wires
//the red wire is plus and connected to 5v
//the brown wire is minus and connected to GND
//the orange wire is the signal wire and connected to pin 3 (remember the ~-symbol - it means PWM)

#include <Servo.h>



Servo theServo; 

void setup() {
  Serial.begin(115200);
  theServo.attach(3);  
}

void loop() {
  for(int i = 0; i < 90; i++){
    theServo.write(i);
    Serial.println(i);
    delay(50);
  }
  for(int i = 90; i > 0; i--){
    theServo.write(i);
    Serial.println(i);
    delay(10);    
  }
}

automatic trash can - servo motor connected capactive sensor

#include <Servo.h>
#include <CapacitiveSensor.h>

CapacitiveSensor   sensor = CapacitiveSensor(8,11);  

Servo theServo; 
long raw;

void setup() {
  Serial.begin(115200);
  theServo.attach(3);  
  sensor.set_CS_AutocaL_Millis(0xFFFFFFFF);    
  Serial.begin(115200);
  Serial.println("raw");
}

void loop() {
  raw = sensor.capacitiveSensor(10);    //lowest  450 & highest 750
  if(raw > 600){                        //if raw is bigger than 600
    open();                             //do void open
    delay(4000);                        //wait for 4 seconds
    close();                            //close void opne
  }
}

void open(){
  //open
  for(int i = 0; i < 90; i++){          //count from 0 to 90 
    theServo.write(i);                  //move the servo from 0 to 90
    Serial.println(i);
    delay(50);
  }
}

void close(){
  //close
  for(int i = 90; i > 0; i--){
    theServo.write(i);
    Serial.println(i);
    delay(10);    
  }
}

trash can controlled by serial commands

//in this sketch the servo is controlled by serial commands from the computer
//if you send the letter "o" to the arudino it will execute "void open()"
//if you send the letter "c" to the arduino it will execute "void close()"
#include <Servo.h>  //import the servo library

Servo theServo;    //create a servo

void setup() {    
  Serial.begin(115200);            //serial connection
  theServo.attach(3);              //theServo is at port 3 (remeber the ~(PWM)-Symbol
}

void loop() {
  if(Serial.available()){        //if there is a serial command comming
    char command = Serial.read();   //read the serial command
    if(command == 'o'){             //is the command and 'o'
      open();                       //do void open
    }
    if(command == 'c'){
      close();
    }
  }
}

void open(){           
  //open
  for(int i = 0; i < 90; i++){                //count from 0 to 90 with int i
    theServo.write(i);                        //i is the servo position
    Serial.println(i);                        //print the servo position to the serial monitor
    delay(50);                                //wait for 50 milliseconds
  }
}

void close(){
  //close
  for(int i = 90; i > 0; i--){
    theServo.write(i);
    Serial.println(i);
    delay(10);    
  }
}

Potentiometer opening the trash can

Servo potentiometer.png
//in this sketch the servo is controlled by an potentiometer
//a potentiometer is a variable resistor that can be changed by rotation
#include <Servo.h>  //import the servo library

Servo theServo;    //create a servo

void setup() {    
  Serial.begin(115200);            //serial connection
  theServo.attach(3);              //theServo is at port 3 (remeber the ~(PWM)-Symbol
}

void loop() {
  int value = analogRead(A0);      //read the analog pin A0 the value is between 0 and 1023
  value = map(value,0,1023,0,180); //adjust value from 0 to 1023 to 0 and 180 because the servo works with degrees
  theServo.write(value);
}

2022-09-22

  • WH.02.110 (Instruction Room IAS) 10:00 - 16:00

presentation

Desinger with unconventional approaches:

  • Enzo Mari - Autoprogettazione? (pdf)
  • Christian Kuhtz - Einfälle statt Abfälle (ideas against trash) (link to website)

Unconventional projects with microcontrollers:

  • Paul Granjon - Fluffy Tamagotchi (video)
  • Paul Granjon - The cybernetic parrot sausage (video)


painting machine

Paintingmachine.jpg

File:Paintingmachinevideo.mp4

Video

//in this sketch one poti controls one servo
#include <Servo.h>

Servo jointOne;

void setup() {
  Serial.begin(115200);
  Serial.println("start");
  jointOne.attach(10);
}

void loop() {
  int value = analogRead(A0);
  value = map(value, 0, 1023, 0, 180);
  jointOne.write(value);
  delay(10);
}

2022-09-29

  • WH.02.110 (Instruction Room IAS) 10:00 - 16:00

Motor control

//connect the dc-motor to the motorshield motor port 1
//connect a external power source
#include <Adafruit_MotorShield.h>

Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);


void setup() {
  Serial.begin(115200);          
  AFMS.begin();
  myMotor->setSpeed(200);
  myMotor->run(RELEASE);
}


void loop() {
  myMotor->run(FORWARD);     //forward 
  myMotor->setSpeed(255);    //max speed
  delay(2000);    

  myMotor->run(RELEASE);     //break 
  delay(2000);    

  myMotor->run(BACKWARD);    //backward 
  myMotor->setSpeed(255);    //max speed
  delay(2000);    

  myMotor->run(RELEASE);     //break 
  delay(2000);    

}

2022-10-06

* WH.02.110 (Instruction Room IAS) 9:00 - 16:00

2022-10-13

* WH.02.110 (Instruction Room IAS) 9:00 - 16:00