Txx.uo ino

master
E.zn 5 years ago
parent 2ac51efbdf
commit d6cae2b228

@ -1,16 +1,25 @@
<html>
<head>
<title></title>
<!--Add title-->
<title>Special Issue X</title>
<style type="text/css">
@font-face {
font-family: "Helvetica";
src: url("../font/HelveticaLTStd-Bold.otf");
font-weight: 300;
font-style: normal;}
@font-face {
font-family: "OCRAStd";
src: url("../font/OCRAStd.otf");
font-weight: 300;
font-style: normal;}
body
{width:100%;
background-color: white;
font-family: Helvetica;
font-size: 12px;}
div#left {
border: 1px solid white;
color: black;
@ -48,10 +57,21 @@
display: block;
margin-left: auto;
margin-right: auto;
padding-top: 10%;
padding-top: 5%;
padding-bottom: 20%;
}
/* intro */
div#intro{
display: block;
margin-left: auto;
margin-right: auto;
padding:7%;
text-align: justify;
color: white;
text-indent: 15px;
}
.pcbtisa{
max-width: 50%;
display: block;
@ -67,6 +87,7 @@
margin-right: auto;
}
</style>
</head>
<body>
@ -80,14 +101,23 @@
</div>
<embed class="output" src="../General/inpout.gif" />
To encourage affection with the materiality of the blackbox we will create our own. Starting of by constructing the building blocks of a synthesizer, allowing the creation of complex outputs by interfacing/combining relatively simple operations. As a clear framework we will start off by working with sound, your fastest sensor. Compatible with the possibly familiar 'Eurorack' format (as developed by Doepfer) we will be constructing several electronic modules that allow the output of one module to be the input for the next. Expanding upon the original discrete, or analog approach, each of our modules offer a programmable interface, eventually allowing for interfacing beyond the blackbox.</h1>
</h1>
<div id="clax" class="moduletext"><h1>Clara!!!</h1></div>
As single modules perform one job and one job well, you will have to anticipate and even require the output of someone elses module in order for yours to work. Coinciding with your research we will create one or several 'outputs' consisting of an interface, electronics and a manual.
<h2>
Guests
Dennis de Bel Dennis de Bel (1984, NL) is an applied artistic researcher, educator, radio amateur (call sign PD0WNED). In his practice he positions himself as producer, consumer, observer and distributor of critical knowledge focussed on technology. His work has been exhibited at Siggraph Los Angeles, Transmediale Berlin and hosted workshops in various collaborations at, for example, ISEA Hong Kong, Radical Networks New York. He participated in the Relearn summer schools and Libre Graphics Meetings besides being a guest tutor at the Design Academy Eindhoven and the Willem de Kooning Academy Rotterdam University of Applied Science. In 2017 he co-founded Varia, a Rotterdam based space for developing collective approaches towards everyday technology. De Bel holds a MA from the Piet Zwart Institute (NL) and most recently participated in the artist in residency program of t</h2>
Dennis de Bel Dennis de Bel (1984, NL) is an applied artistic researcher, educator, radio amateur (call sign PD0WNED). In his practice he positions himself as producer, consumer, observer and distributor of critical knowledge focussed on technology. His work has been exhibited at Siggraph Los Angeles, Transmediale Berlin and hosted workshops in various collaborations at, for example, ISEA Hong Kong, Radical Networks New York. He participated in the Relearn summer schools and Libre Graphics Meetings besides being a guest tutor at the Design Academy Eindhoven and the Willem de Kooning Academy Rotterdam University of Applied Science. In 2017 he co-founded Varia, a Rotterdam based space for developing collective approaches towards everyday technology. De Bel holds a MA from the Piet Zwart Institute (NL) and most recently participated in the artist in residency program of t
</h2>
</div>
<div id="right">
<div id="intro">
<h3>
To encourage affection with the materiality of the blackbox we will create our own. Starting of by constructing the building blocks of a synthesizer, allowing the creation of complex outputs by interfacing/combining relatively simple operations. As a clear framework we will start off by working with sound, your fastest sensor. Compatible with the possibly familiar 'Eurorack' format (as developed by Doepfer) we will be constructing several electronic modules that allow the output of one module to be the input for the next. Expanding upon the original discrete, or analog approach, each of our modules offer a programmable interface, eventually allowing for interfacing beyond the blackbox.
</h3>
</div>
<div id="damla" class="moduleimg">
<a href="#damla">
<img src="../img/pcb_damla.svg"/>

@ -0,0 +1,229 @@
#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);
}
}
Serial.println();
delay(1000);
}
Loading…
Cancel
Save