Showing posts with label remix. Show all posts
Showing posts with label remix. Show all posts

Sunday, October 6, 2013

Samsung Swiss (Remix)

Remix is the act of taking existing artistic work or anything in a form of media or an object and altering it to suit your purposes.

Samsung Swiss

Everything in one, the Samsung Swiss is a multi-tool, such as daily useability requires.
Often we have problems finding the right tool, for example with cutting your nails, opening a beer bottle, taking a kork out of the bottle, to search on internet, to make a picture or movie, open a can of corn or to light your cigarette with the USB battery lighter.
(Also included is a built in track and trace so abuse can be punished)






Wednesday, September 4, 2013

"Interpretator"

 




Orgelpatch
Playnote



Reading device 
Made of a typewriter and elements of a sewing and reproduction machine
Arduino source code

/*
 * SN74HC165N_shift_reg
 *
 * Program to shift in the bit values from a SN74HC165N 8-bit
 * parallel-in/serial-out shift register.
 *
 * This sketch demonstrates reading in 16 digital states from a
 * pair of daisy-chained SN74HC165N shift registers while using
 * only 4 digital pins on the Arduino.
 *
 * You can daisy-chain these chips by connecting the serial-out
 * (Q7 pin) on one shift register to the serial-in (Ds pin) of
 * the other.
 * 
 * Of course you can daisy chain as many as you like while still
 * using only 4 Arduino pins (though you would have to process
 * them 4 at a time into separate unsigned long variables).
 * 
*/

/* How many shift register chips are daisy-chained.
*/
#define NUMBER_OF_SHIFT_CHIPS   6 

/* Width of data (how many ext lines).
*/
#define DATA_WIDTH   NUMBER_OF_SHIFT_CHIPS * 8

/* Width of pulse to trigger the shift register to read and latch.
*/
#define PULSE_WIDTH_USEC   5

/* Optional delay between shift register reads.
*/
#define POLL_DELAY_MSEC   1

/* You will need to change the "int" to "long" If the
 * NUMBER_OF_SHIFT_CHIPS is higher than 2.
*/
#define BYTES_VAL_T unsigned long

int ploadPin        = 8;  // Connects to Parallel load pin the 165 WIT
int clockEnablePin  = 9;  // Connects to Clock Enable pin the 165 - NIET GEBRUIKT, LIGT AAN AARDE
int dataPin         = 11; // Connects to the Q7 pin the 165 ORANJE
int clockPin        = 12; // Connects to the Clock pin the 165 GEEL

BYTES_VAL_T pinValues;
BYTES_VAL_T oldPinValues;
BYTES_VAL_T pinValues2;
BYTES_VAL_T oldPinValues2;



/* This function is essentially a "shift-in" routine reading the
 * serial Data from the shift register chips and representing
 * the state of those pins in an unsigned integer (or long).
*/


BYTES_VAL_T read_shift_regs(int offset=0)
{
    unsigned long bitVal;
    BYTES_VAL_T bytesVal = 0;

    /* Trigger a parallel Load to latch the state of the data lines,
    */
    digitalWrite(clockEnablePin, HIGH);
    digitalWrite(ploadPin, LOW);
    delayMicroseconds(PULSE_WIDTH_USEC);
    digitalWrite(ploadPin, HIGH);
    digitalWrite(clockEnablePin, LOW);

    /* Loop to read each bit value from the serial out line
     * of the SN74HC165N.
    */
    
    for(int i = 0; i < DATA_WIDTH-offset; i++)
    {
        bitVal = digitalRead(dataPin);

        // Set the corresponding bit in bytesVal.
        bytesVal |= (bitVal << ((DATA_WIDTH-1-offset) - i));
        

        // Pulse the Clock (rising edge shifts the next bit).
        digitalWrite(clockPin, HIGH);
        delayMicroseconds(PULSE_WIDTH_USEC);
        digitalWrite(clockPin, LOW);
            
        
    }
    return(bytesVal);
}


void display_pin_values_short()
{
    uint16_t xlow = pinValues & 0xffff;
    uint16_t xhigh = (pinValues >> 16); 
    uint8_t chip1 = xlow & 0xff;
    uint8_t chip2 = (xlow >> 8); 
    uint8_t chip3 = xhigh & 0xff;
    uint8_t chip4 = (xhigh >> 8); 
    uint16_t bank_low = pinValues2 & 0xffff;
    uint16_t bank_high = (pinValues2 >> 16); 
    uint8_t chip5 = bank_low & 0xff;
    uint8_t chip6 = (bank_low >> 8); 
    
//    Serial.print("/values1 ");
//    Serial.println(pinValues,BIN);
//    Serial.print("/values2 ");
//    Serial.println(pinValues2);
    Serial.print("/chip1 ");
    Serial.println(chip1);
    Serial.print("/chip2 ");
    Serial.println(chip2);
    Serial.print("/chip3 ");
    Serial.println(chip3);
    Serial.print("/chip4 ");
    Serial.println(chip4);
    Serial.print("/chip5 ");
    Serial.println(chip5);
    Serial.print("/chip6 ");
    Serial.println(chip6);
    delay(10);
}


void setup()
{
    Serial.begin(9600);

    // Initialize our digital pins...

    pinMode(ploadPin, OUTPUT);
    pinMode(clockEnablePin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, INPUT);

    digitalWrite(clockPin, LOW);
    digitalWrite(ploadPin, HIGH);

    // Read in and display the pin states at startup.
    pinValues = read_shift_regs();
    pinValues2 = read_shift_regs(32);
    display_pin_values_short();
    oldPinValues = pinValues;
    oldPinValues2 = pinValues2;
}

void loop()
{
    // Read the state of all zones.

    pinValues = read_shift_regs();
    pinValues2 = read_shift_regs(32);

    //If there was a chage in state, display which ones changed.
    if(pinValues != oldPinValues || pinValues2 != oldPinValues2)
    {
        display_pin_values_short();
        oldPinValues = pinValues;
        oldPinValues2 = pinValues2;
    }

    delay(POLL_DELAY_MSEC);
}


Special thanks to Corneel Canters, David Lamain and Jan Klug

New top domestication


The explanation and the philosophy behind the domestication of technology, and how I apply it to the interpretator,
I will describe this in my blog in October.