User:E.zn/special issue X: Difference between revisions

From XPUB & Lens-Based wiki
 
(74 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Collaboration, Conflict & Consent==
__NOTOC__
'''A two-day [https://pzwiki.wdka.nl/mediadesign/Xpub1_Collaboration,_Conflict_%26_Consent/ workshop] with [http://eleanorg.org/ Eleanor Greenhalgh]''' [[File:Nor.gif|200px|thumb|right]]
<div style="background-color:black; padding:10px; padding-bottom:50px; color:white; font-family:ocr">
=<span style="color:white">Txx.uo</span>=
[[File:Txx.uo_Final.jpeg|500px|right]]
[[File:Txx.uo_.gif|500px|right]]
''Txx.uo'' consolidates two contrasting radio frequency implementation modes: RFID reader scans the cards/objects containing RFID tags using radio waves and LCD screen displays a [https://www.giangrandi.org/electronics/radio/qcode.shtml#qcodefull Q-code]* [internationally established three-letter abbreviation used in radio communication].<br>
 
<span>*</span>''A particular Q-code denotes a question when it is followed by a question mark and references an answer [statement] when it's not:''<br>
'''QRT?''' : ''Shall I cease or suspend operation?''<br> 
'''QRT''' : ''I am suspending operation.''<br>
 
The RFID technology is used for object identification, authentication and security reasons, whereas Q-code is transmitted on a specific radio frequency by a radio operator and can be intercepted by anyone, who is tuned in to the same frequency.
 
This module converts the data received from a scanned card into a sound• and binary code••. This Binary signal is then transfigured into LED••• blinking and is also funneled to another module through an output•• channel. Top row of an LCD screen displays a specific question from the list of a Q-code, depending on a knob position and when receiving•••• a signal from another module, a random Q-code answer is shown on the second row of the screen. All other textual output can be sent to another module via Tx•••••.<br><br>
 
•D5 o1 out<br>
•• D3 o2 out<br>
•• LED 2 D7<br>
••• D5 o1 out<br>
•••• D8 o5 in<br>
••••• Tx o3 out<br><br><br><br><br><br><br><br><br><br><br><br>
 
[[File:Txx_sc.png|500px|right]]
==<span style="color:white">Components and configuration</span>==
<br>
+ : Solder<br>
> : Plug into<br><br>
 
+ 15x1 female header [x2] -- PCB [Nano]<br>
+ 15x1 male header [x2] -- Nano<br>
+ 4x1 female header -- PCB [LCD1602-I2C]<br>
+ 1602 I2C LCD display -- LCD1602-I2C<br>
+ 8x1 Female Header -- PCB [RFID]<br>
+ 8x1 male header -- RFID<br>
+ 10k ohm potentiometer -- A1 P in<br>
+ LED -- LED2 D7<br>
+ 10k ohm resistor-- R1<br>
+ 220 ohm resistor -- R3<br>
+ 220 ohm resistor -- R3<br>
+ 3.5mm mono jack socket -- D5 o1 out<br>
+ 3.5mm mono jack socket -- D3 o2 out<br>
+ 3.5mm mono jack socket -- T5 o3 out<br>
+ 3.5mm mono jack socket -- A2 o4 out<br>
+ 3.5mm mono jack socket -- D8 o5 in<br>
+ 2 pins of 4-pin tactile push button switch -- Reset<br>
+ 5x2 male header 🢒🢒 JP [bridge the second row by soldering them together]<br>
+ Vactrol : place the heads of LED and LDR in a heat shrink tube. Heat up the tube and then:<br>
_ + LED -- LED 1 [long leg of LED 🢒🢒 square hole]<br>
_ + LDR -- LDR<br><br>
 
> RFID 8x1 male header -- 8x1 11mm female header [bend the pins] -- 8x1 11mm female header -- 8x1 11mm female header [bend the pins] -- 8x1 female header.<br>
> LCD -- 4x1 female header<br>
> NANO -- 2 15x1 female headers
<br><br><br>
 
<!-- &#11216; 🢗 -->
 
 
==<span style="color:white">Printed Manual</span>==
<br>
[[File:Manual.jpg|770px]]
<br><br>
 
 
==<span style="color:white">Perfboard prototype</span>==
<br>
[[File:Txx.uo_Prototype_1.jpg|770px]]
</div><br><br>
<!--[[File:Txx.uo.gif|797px|right]]
<br><br>
[[File:Txx.uo.gif|200px|right]]<br><br>-->
 
==.ino==
<source lang="cpp">
#include <SPI.h>
#include <MFRC522.h>
 
#define SS_PIN 10
#define RST_PIN 9
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
MFRC522 mfrc522(SS_PIN, RST_PIN);  // Create MFRC522 instance.
 
#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE);  // Set the LCD I2C address
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
 
const int RFIDled = 6;
const int RFIDSound = 5;
const int RFIDbin = 3;
const int signalIN = A0;
const int TextKnob = A1;
const int textSound = A2;
long randNumber;
 
 
 
void setup()
{
  Serial.begin(9600); // Initiate a serial communication
  SPI.begin(); // Initiate  SPI bus
  lcd.begin(16, 2); // initialize the lcd
  mfrc522.PCD_Init(); // Initiate MFRC522
 
  Serial.println();
 
  pinMode(RFIDled, OUTPUT);
  pinMode(RFIDSound, OUTPUT);
  pinMode(RFIDbin, OUTPUT);
  pinMode(signalIN, INPUT);
  pinMode(TextKnob, INPUT);
  pinMode(textSound, OUTPUT);
}
 
void readCard() {
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
 
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content = ""; // for tag + sound
  String binary = ""; // for binary + LED
 
  for (int i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i], DEC);
    content.concat(String(mfrc522.uid.uidByte[i], DEC));
 
    if (content.charAt(i) == '0') {
      tone(RFIDSound, 40, 2250);
      delay(100);
    }
    else if (content.charAt(i) == '1') {
      tone(RFIDSound, 15, 2250);
      delay(100);
    }
    else if (content.charAt(i) == '2') {
      tone(RFIDSound, 25, 1500);
      delay(100);
    }
    else if (content.charAt(i) == '3') {
      tone(RFIDSound, 17, 150);
      delay(100);
    }
    else if (content.charAt(i) == '4') {
      tone(RFIDSound, 30, 1000);
      delay(100);
    }
    else if (content.charAt(i) == '5') {
      tone(RFIDSound, 27, 1590);
      delay(100);
    }
    else if (content.charAt(i) == '6') {
      tone(RFIDSound, 28, 1500);
      delay(100);
    }
    else if (content.charAt(i) == '7') {
      tone(RFIDSound, 10, 1500);
      delay(100);
    }
    else if (content.charAt(i) == '8') {
      tone(RFIDSound, 13, 1050);
      delay(100);
    }
    else if (content.charAt(i) == '9') {
      tone(RFIDSound, 7, 1000);
      delay(100);
    }
  }
 
  for (int b = 0; b < mfrc522.uid.size; b++)
  {
    Serial.println(mfrc522.uid.uidByte[b], BIN);
    char r = mfrc522.uid.uidByte[b];
 
    for (int j = 8; j >= 0; j--) {
      if CHECK_BIT(r, j) {
        digitalWrite(RFIDled, HIGH);
        digitalWrite(RFIDbin, HIGH);
        delay(100);
      } else {
        digitalWrite(RFIDled, LOW);
        digitalWrite(RFIDbin, LOW);
        delay(100);
      }
      delay(100);
    }
  }
  Serial.println();
  delay(100);
}


_ Applying various methods of decision-making and evaluating the outcomes.<br>
//Q-code questions
_ Practicing listening in teams of three [each having a specific role].<br>
const char *Qs[] = {
_ Playing group games, like [https://dramaresource.com/count-to-20/ counting to 20].<br>
  "",
_ Creating a consensual artwork.<br><br><br>
  "",
  "QRB?:How far are you from my station?",
  "QRL?:Are you busy?",
  "QRZ?:Who is calling me?",
  "QRH?:Does my frequency vary?",
  "QRI?:How is the tone of my transmission?",
  "QRK?:What is the readability of my signals?",
  "QRM?:Do you have interference?",
  "QRN?:Are you troubled by static noise?",
  "QRQ?:Shall I send faster?",
  "QRT?:Shall I cease or suspend operation?",
  "QRU?:Have you anything for me?",
  "QRV?:Are you ready?",
  "QRX?:Shall I standby?",
  "QSA?:What is the strength of my signals?",
  "QSB?:Are my signals fading?",
  "QSD?:Is my keying defective?",
  "QSL?:Can you acknowledge receipt?"
};


//Q-code answers/statements
const char *As[] = {
  "QRH:Your frequency varies.",
  "QRL:I am busy. Please do not interfere.",
  "QRM:I have interference.",
  "QRM:I am troubled by static noise.",
  "QRO:Please increase transmit power.",
  "QRQ:Please send faster.",
  "QRS:Please send more slowly",
  "QRT:I am suspending operation.",
  "QRU:I have nothing for you.",
  "QRV:I am ready.",
  "QRX:Please standby.",
  "QSB:Your signals are fading.",
  "QSD:Your keying is defective.",
  "QSK:I can hear you between my signals (while transmitting); break in on my transmission.",
  "QSL:I am acknowledging receipt.",
  "QSM:Repeat the last telegram which you sent me",
  "QSY:Please change transmission frequency.",
  "QSZ:Send each word or group twice."
};


==Module==
void loop()
'''Building a module with a guest tutor [http://dennisdebel.nl/ Dennis de Bel]'''
{
  readCard();
  int textnumber;
  int text = analogRead(TextKnob);
  textnumber = map(text, 1, 1023, 0, 18);


  if (textnumber > 1) { //when the knob is turned from the 'position 0'
    Serial.println(Qs[textnumber]);
    String question = Qs[textnumber];
    lcd.setCursor(0, 0); //Set the lcd cursor to the upper left corner
    lcd.print(Qs[textnumber]); //Display the specific Q-question on the fisrt row of LCD


    for (int positionCounter = 0; positionCounter < question.length(); positionCounter++) {
      lcd.scrollDisplayLeft(); //Q-question scrolls to the left
      delay(230);
    }
    char* specQs = Qs[textnumber];


==Txx.uo manual [draft]==
    // loop over each character of question
    for (int a = 0; a < strlen(specQs); a++ ) {
      char c = specQs[a];
      //Serial.print(c);
      //Serial.print(" ");
      Serial.print(specQs[a], BIN);
      //Serial.println();


      // sonify the bits...
      for (int i = 7; i >= 0; i--) {
        if CHECK_BIT(c, i) {
          tone(textSound, 440, 100);
        } else {
          tone(textSound, 220, 100);
        }
        delay(100);
      }
    }
  }


[[File:Txx.uo_Prototype_1.jpg|500px|right]]
<br>''Txx.uo'' consolidates two contrasting radio frequency implementation modes: RFID reader scans the cards/objects with RFID tags using radio waves and LCD screen displays a Q-code* [internationally established three-letter abbreviation used in radio communication].


<span>*</span>A particular Q-code denotes a question when it is followed by a question mark and references an answer [statement] when it's not:<br>
  // give an answer
'''QRU?''' : ''Have you anything for me?''<br>
  randNumber = random(0, 17);
'''QRU''' : ''I have nothing for you.''
  int readSignal = digitalRead(signalIN);
  String randomQ = As[randNumber];


The RFID technology is used for object identification, authentication and security reasons, whereas Q-code is transmitted on a specific radio frequency by a radio operator and can be intercepted by anyone, who is tuned in to the same frequency.
  if (readSignal) { //If the module receives a signal via A2 o4 input channel...
    Serial.println(As[randNumber]);
    lcd.setCursor(0, 1); //Set the lcd cursor to the lower left corner
    lcd.print(randomQ); //Displayes a random Q-answer from the answers array


This module converts the data received from a scanned card into a sound and binary code. This Binary signal is then transfigured into LED blinking and is also funneled to another module through an output channel. Top row of an LCD screen displays a specific question from the list of a Q-code, depending on a knob position and when receiving a signal from another module, a random Q-code answer is shown on the second raw of the screen.<br><br>
    for (int counter = 0; counter < randomQ.length(); counter++) {
      lcd.scrollDisplayLeft(); //Q-answer dissapears in the left side of the LCD
      delay(230);
    }
  }
  delay(500);
}
</source>


[[File:PCB_Mika.png|500px|right]]
=Collaboration, Conflict & Consent=
===Parts and configuration===
'''A two-day [https://pzwiki.wdka.nl/mediadesign/Xpub1_Collaboration,_Conflict_%26_Consent/ workshop] with [http://eleanorg.org/ Eleanor Greenhalgh]''' [[File:Nor.gif|200px|thumb|right]]
# PCB Txx.uo
# Arduino Nano
# 15x1 female header [x2]
  :PCB
# 15x1 male header [x2]
  :Arduino Nano
# 1602 I2C LCD display
  :LCD1602-I2C
# RC522 RFID reader
  :RFID1
# LED
  :LED2 D7
# Vactrol
##LED
  :LED14
##LDR
  :LDR34
##Heat shrink tube
# 3.5mm mono jack socket [x5]
  :D5 o1 Out1; D3 o2 Out1; T5 o3 Out1; A2 o4 Out1; D8 o5 Out1
# 10k ohm potentiometer
  :A1 P in1
# Reset button
  :Reset1
# 5x2 male header
  :JP8
# 220 ohm resistor [x2]  
  :R55; R54
# 10k ohm resistor
  :R56


==References by Aymeric==
_ Applying various methods of decision-making and evaluating the outcomes.<br>
The Thinking Machine [1961]<br>
_ Practicing listening in teams of three [each having a specific role].<br>
Mark Weiser and John Seely Brown - Designing Calm Technology [1995]<br>
_ Playing group games, like [https://dramaresource.com/count-to-20/ counting to 20].<br>
Bruno Latour - The Third Meaning of Technical Mediation [small extract from Pandora's Hope 1999]<br>
_ Creating a consensual artwork.<br><br><br>
Lucent Technologies - Bell Labs Innovation Song [2000]<br>
AT&T - Microworld with William Shatner [1976]<br>
Friedrich Kittler - There is no Software [1995]<br>
Ken Thompson - Reflections on Trusting Trust [1984]<br>
Douglas Adams - Hyperland [1990]<br>
Langdon Winner - Do artefacts have politics [1980]<br>
Tim and Eric Awesome Show, Great Job! - Cinco Midi Organiser [2009]<br>
Femke Snelting and Jara Rocha - MakeHuman [2018]<br>


Robin James - Spotify Teardown: Inside the Black Box of Streaming Music<br>


=Module=
'''Building a module with a guest tutor [http://dennisdebel.nl/ Dennis de Bel]'''


__ [https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law/all  Voltage, Current, Resistance, and Ohm's Law ]


==Referneces [Dennis]==
[https://uxdesign.cc/the-worst-volume-control-ui-in-the-world-60713dc86950 The worst volume control UI in the world]<br>
[https://www.youtube.com/watch?v=1KVyFio8gw4&app=desktop Dark Patterns: User Interfaces Designed to Trick People]
<br><br>


=Sound=
'''Sound / music / listening / methods with [https://olliaarni.bandcamp.com/ Olli Aarni]'''
[[File:Sound-making.gif|200px|thumb|right]]


==References [Olli]==
[https://monoskop.org/images/6/6b/Cage_John_Silence_Lectures_and_Writings_1973.pdf John Cage - Silence]<br>
[https://1819.mywdka.nl/SPCD23/wp-content/uploads/sites/300/2018/07/pauline-oliveros-deep-listening-a-composers-sound-practice.pdf Pauline Oliveros - Deep Listening - A Composer's Sound Practice]<br>
[https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=2ahUKEwi_2NP747LmAhVB-aQKHZBfD2kQFjAAegQIAxAC&url=https%3A%2F%2Fwww.onlineopen.org%2Fdownload.php%3Fid%3D259&usg=AOvVaw0a91DW4tKp0b8KSYeUgUMB Mark Bain - Psychosonics and the Modulationof Public Space, On Subversive Sonic Techniques]<br><br>





Latest revision as of 13:33, 21 June 2021

Txx.uo

Txx.uo Final.jpeg
Txx.uo .gif

Txx.uo consolidates two contrasting radio frequency implementation modes: RFID reader scans the cards/objects containing RFID tags using radio waves and LCD screen displays a Q-code* [internationally established three-letter abbreviation used in radio communication].

*A particular Q-code denotes a question when it is followed by a question mark and references an answer [statement] when it's not:
QRT? : Shall I cease or suspend operation?
QRT : I am suspending operation.

The RFID technology is used for object identification, authentication and security reasons, whereas Q-code is transmitted on a specific radio frequency by a radio operator and can be intercepted by anyone, who is tuned in to the same frequency.

This module converts the data received from a scanned card into a sound• and binary code••. This Binary signal is then transfigured into LED••• blinking and is also funneled to another module through an output•• channel. Top row of an LCD screen displays a specific question from the list of a Q-code, depending on a knob position and when receiving•••• a signal from another module, a random Q-code answer is shown on the second row of the screen. All other textual output can be sent to another module via Tx•••••.

•D5 o1 out
•• D3 o2 out
•• LED 2 D7
••• D5 o1 out
•••• D8 o5 in
••••• Tx o3 out











Txx sc.png

Components and configuration


+ : Solder
> : Plug into

+ 15x1 female header [x2] -- PCB [Nano]
+ 15x1 male header [x2] -- Nano
+ 4x1 female header -- PCB [LCD1602-I2C]
+ 1602 I2C LCD display -- LCD1602-I2C
+ 8x1 Female Header -- PCB [RFID]
+ 8x1 male header -- RFID
+ 10k ohm potentiometer -- A1 P in
+ LED -- LED2 D7
+ 10k ohm resistor-- R1
+ 220 ohm resistor -- R3
+ 220 ohm resistor -- R3
+ 3.5mm mono jack socket -- D5 o1 out
+ 3.5mm mono jack socket -- D3 o2 out
+ 3.5mm mono jack socket -- T5 o3 out
+ 3.5mm mono jack socket -- A2 o4 out
+ 3.5mm mono jack socket -- D8 o5 in
+ 2 pins of 4-pin tactile push button switch -- Reset
+ 5x2 male header 🢒🢒 JP [bridge the second row by soldering them together]
+ Vactrol : place the heads of LED and LDR in a heat shrink tube. Heat up the tube and then:
_ + LED -- LED 1 [long leg of LED 🢒🢒 square hole]
_ + LDR -- LDR

> RFID 8x1 male header -- 8x1 11mm female header [bend the pins] -- 8x1 11mm female header -- 8x1 11mm female header [bend the pins] -- 8x1 female header.
> LCD -- 4x1 female header
> NANO -- 2 15x1 female headers



Printed Manual


Manual.jpg


Perfboard prototype


Txx.uo Prototype 1.jpg



.ino

#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE);  // Set the LCD I2C address
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address

const int RFIDled = 6;
const int RFIDSound = 5;
const int RFIDbin = 3;
const int signalIN = A0;
const int TextKnob = A1;
const int textSound = A2;
long randNumber;



void setup()
{
  Serial.begin(9600); // Initiate a serial communication
  SPI.begin(); // Initiate  SPI bus
  lcd.begin(16, 2); // initialize the lcd
  mfrc522.PCD_Init(); // Initiate MFRC522

  Serial.println();

  pinMode(RFIDled, OUTPUT);
  pinMode(RFIDSound, OUTPUT);
  pinMode(RFIDbin, OUTPUT);
  pinMode(signalIN, INPUT);
  pinMode(TextKnob, INPUT);
  pinMode(textSound, OUTPUT);
}

void readCard() {
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }

  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content = ""; // for tag + sound
  String binary = ""; // for binary + LED

  for (int i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i], DEC);
    content.concat(String(mfrc522.uid.uidByte[i], DEC));

    if (content.charAt(i) == '0') {
      tone(RFIDSound, 40, 2250);
      delay(100);
    }
    else if (content.charAt(i) == '1') {
      tone(RFIDSound, 15, 2250);
      delay(100);
    }
    else if (content.charAt(i) == '2') {
      tone(RFIDSound, 25, 1500);
      delay(100);
    }
    else if (content.charAt(i) == '3') {
      tone(RFIDSound, 17, 150);
      delay(100);
    }
    else if (content.charAt(i) == '4') {
      tone(RFIDSound, 30, 1000);
      delay(100);
    }
    else if (content.charAt(i) == '5') {
      tone(RFIDSound, 27, 1590);
      delay(100);
    }
    else if (content.charAt(i) == '6') {
      tone(RFIDSound, 28, 1500);
      delay(100);
    }
    else if (content.charAt(i) == '7') {
      tone(RFIDSound, 10, 1500);
      delay(100);
    }
    else if (content.charAt(i) == '8') {
      tone(RFIDSound, 13, 1050);
      delay(100);
    }
    else if (content.charAt(i) == '9') {
      tone(RFIDSound, 7, 1000);
      delay(100);
    }
  }

  for (int b = 0; b < mfrc522.uid.size; b++)
  {
    Serial.println(mfrc522.uid.uidByte[b], BIN);
    char r = mfrc522.uid.uidByte[b];

    for (int j = 8; j >= 0; j--) {
      if CHECK_BIT(r, j) {
        digitalWrite(RFIDled, HIGH);
        digitalWrite(RFIDbin, HIGH);
        delay(100);
      } else {
        digitalWrite(RFIDled, LOW);
        digitalWrite(RFIDbin, LOW);
        delay(100);
      }
      delay(100);
    }
  }
  Serial.println();
  delay(100);
}

//Q-code questions
const char *Qs[] = {
  "",
  "",
  "QRB?:How far are you from my station?",
  "QRL?:Are you busy?",
  "QRZ?:Who is calling me?",
  "QRH?:Does my frequency vary?",
  "QRI?:How is the tone of my transmission?",
  "QRK?:What is the readability of my signals?",
  "QRM?:Do you have interference?",
  "QRN?:Are you troubled by static noise?",
  "QRQ?:Shall I send faster?",
  "QRT?:Shall I cease or suspend operation?",
  "QRU?:Have you anything for me?",
  "QRV?:Are you ready?",
  "QRX?:Shall I standby?",
  "QSA?:What is the strength of my signals?",
  "QSB?:Are my signals fading?",
  "QSD?:Is my keying defective?",
  "QSL?:Can you acknowledge receipt?"
};

//Q-code answers/statements
const char *As[] = {
  "QRH:Your frequency varies.",
  "QRL:I am busy. Please do not interfere.",
  "QRM:I have interference.",
  "QRM:I am troubled by static noise.",
  "QRO:Please increase transmit power.",
  "QRQ:Please send faster.",
  "QRS:Please send more slowly",
  "QRT:I am suspending operation.",
  "QRU:I have nothing for you.",
  "QRV:I am ready.",
  "QRX:Please standby.",
  "QSB:Your signals are fading.",
  "QSD:Your keying is defective.",
  "QSK:I can hear you between my signals (while transmitting); break in on my transmission.",
  "QSL:I am acknowledging receipt.",
  "QSM:Repeat the last telegram which you sent me",
  "QSY:Please change transmission frequency.",
  "QSZ:Send each word or group twice."
};

void loop()
{
  readCard();
  int textnumber;
  int text = analogRead(TextKnob);
  textnumber = map(text, 1, 1023, 0, 18);

  if (textnumber > 1) { //when the knob is turned from the 'position 0'
    Serial.println(Qs[textnumber]);
    String question = Qs[textnumber];
    lcd.setCursor(0, 0); //Set the lcd cursor to the upper left corner
    lcd.print(Qs[textnumber]); //Display the specific Q-question on the fisrt row of LCD

    for (int positionCounter = 0; positionCounter < question.length(); positionCounter++) {
      lcd.scrollDisplayLeft(); //Q-question scrolls to the left
      delay(230);
    }
    char* specQs = Qs[textnumber];

    // loop over each character of question
    for (int a = 0; a < strlen(specQs); a++ ) {
      char c = specQs[a];
      //Serial.print(c);
      //Serial.print(" ");
      Serial.print(specQs[a], BIN);
      //Serial.println();

      // sonify the bits...
      for (int i = 7; i >= 0; i--) {
        if CHECK_BIT(c, i) {
          tone(textSound, 440, 100);
        } else {
          tone(textSound, 220, 100);
        }
        delay(100);
      }
    }
  }


  // give an answer
  randNumber = random(0, 17);
  int readSignal = digitalRead(signalIN);
  String randomQ = As[randNumber];

  if (readSignal) { //If the module receives a signal via A2 o4 input channel...
    Serial.println(As[randNumber]);
    lcd.setCursor(0, 1); //Set the lcd cursor to the lower left corner
    lcd.print(randomQ); //Displayes a random Q-answer from the answers array

    for (int counter = 0; counter < randomQ.length(); counter++) {
      lcd.scrollDisplayLeft(); //Q-answer dissapears in the left side of the LCD
      delay(230);
    }
  }
  delay(500);
}

Collaboration, Conflict & Consent

A two-day workshop with Eleanor Greenhalgh

Nor.gif

_ Applying various methods of decision-making and evaluating the outcomes.
_ Practicing listening in teams of three [each having a specific role].
_ Playing group games, like counting to 20.
_ Creating a consensual artwork.



Module

Building a module with a guest tutor Dennis de Bel

__ Voltage, Current, Resistance, and Ohm's Law

Referneces [Dennis]

The worst volume control UI in the world
Dark Patterns: User Interfaces Designed to Trick People

Sound

Sound / music / listening / methods with Olli Aarni

Sound-making.gif

References [Olli]

John Cage - Silence
Pauline Oliveros - Deep Listening - A Composer's Sound Practice
Mark Bain - Psychosonics and the Modulationof Public Space, On Subversive Sonic Techniques