Difference between revisions of "Physical Controllers"

From Experimental Game Cultures
Jump to navigation Jump to search
Tag: Reverted
Tag: Manual revert
Line 14: Line 14:
   
 
=== The code ===
 
=== The code ===
{{code|lang=css|
+
<code>
   
 
void setup() {
 
void setup() {
Line 33: Line 33:
 
delay(voltage * 10);
 
delay(voltage * 10);
 
}
 
}
  +
</code>
}}
 
   
 
== RFID Tag Reader ==
 
== RFID Tag Reader ==

Revision as of 12:06, 7 June 2023

Hand holding sensor

Measure the voltage - could be a chain of humans that hold hands, Arduino measure the voltage and smoothes it out with a capacitor. The LED is just to show the difference in voltage:

The Arduino connects to 5Volts, Ground and Analog 0

The Arduino connects to 5Volts, Ground and Analog 0

The Breadboard, purple wires are for holding in your hands. Capacitor to smooth out the voltage.

The Breadboard, purple wires are for holding in your hands. Capacitor to smooth out the voltage.


The code

void setup() {

 // initialize serial communication at 9600 bits per second:
 Serial.begin(9600);
 pinMode(LED_BUILTIN, OUTPUT);

} void loop() {

 // read the input on analog pin 0:
 int sensorValue = analogRead(A0);
 // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
 float voltage = sensorValue * (5.0 / 1023.0);
 // print out the value you read:
 Serial.println(voltage);
 digitalWrite(LED_BUILTIN, HIGH);
 delay(voltage * 10);
 digitalWrite(LED_BUILTIN, LOW);
 delay(voltage * 10);

}

RFID Tag Reader

Can be used to read RFID Cards/ or write to them. Uses a ~3 Dollar RFID Reader (RC522) Worked best with Arduino Uno.

/*

* Initial Author: ryand1011 (https://github.com/ryand1011)
*
* Reads data written by a program such as "rfid_write_personal_data.ino"
*
* See: https://github.com/miguelbalboa/rfid/tree/master/examples/rfid_write_personal_data
*
* Uses MIFARE RFID card using RFID-RC522 reader
* Uses MFRC522 - Library
* -----------------------------------------------------------------------------------------
*             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
*             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
* Signal      Pin          Pin           Pin       Pin        Pin              Pin
* -----------------------------------------------------------------------------------------
* RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
* SPI SS      SDA(SS)      10            53        D10        10               10
* SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
* SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
* SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
*
* More pin layouts for other boards can be found here: https://github.com/miguelbalboa/rfid#pin-layout
  • /
  1. include <SPI.h>
  2. include <MFRC522.h>
  1. define RST_PIN 9 // Configurable, see typical pin layout above
  2. define SS_PIN 10 // Configurable, see typical pin layout above
  3. define LEDPIN 2
  4. define BUZZPIN 3

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

//*****************************************************************************************// void setup() {

 Serial.begin(9600);                                           // Initialize serial communications with the PC
 SPI.begin();                                                  // Init SPI bus
 mfrc522.PCD_Init();                                              // Init MFRC522 card
 Serial.println(F("Read personal data on a MIFARE PICC:"));    //shows in serial that it is ready to read
   pinMode(LEDPIN, OUTPUT);
 pinMode(BUZZPIN, OUTPUT);

}

//*****************************************************************************************// void loop() {

 // Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
 MFRC522::MIFARE_Key key;
 for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;
 //some variables we need
 byte block;
 byte len;
 MFRC522::StatusCode status;
 //-------------------------------------------
 // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
 if ( ! mfrc522.PICC_IsNewCardPresent()) {
   return;
 }
 // Select one of the cards
 if ( ! mfrc522.PICC_ReadCardSerial()) {
   return;
 }
 Serial.println("CARD ID:");
 digitalWrite(LEDPIN, HIGH);
 //mfrc522.PICC_DumpDetailsToSerial(&(mfrc522.uid)); //dump some details about the card
 
 for(int i=0; i < sizeof(mfrc522.uid.uidByte); i++){
   Serial.print(mfrc522.uid.uidByte[i]);
   tone(BUZZPIN, mfrc522.uid.uidByte[i]*60 + 100, 200);
   digitalWrite(LEDPIN, LOW);
   for(int j = 0; j < mfrc522.uid.uidByte[i]; j++){
     if(j > 10)
       continue;
       
     digitalWrite(LEDPIN, HIGH);
     delay(20); 
     digitalWrite(LEDPIN, LOW);
     delay(20);       
   }
   delay(300);  
 }
 Serial.println("\n");
 
 delay(1000);
 digitalWrite(LEDPIN, LOW);
 //mfrc522.PICC_DumpToSerial(&(mfrc522.uid));      //uncomment this to see all blocks in hex
 //-------------------------------------------


 return;
 Serial.print(F("Name: "));



 byte buffer1[18];
 block = 4;
 len = 18;
 //------------------------------------------- GET FIRST NAME
 status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 4, &key, &(mfrc522.uid)); //line 834 of MFRC522.cpp file
 if (status != MFRC522::STATUS_OK) {
   Serial.print(F("Authentication failed: "));
   Serial.println(mfrc522.GetStatusCodeName(status));
   return;
 }
 status = mfrc522.MIFARE_Read(block, buffer1, &len);
 if (status != MFRC522::STATUS_OK) {
   Serial.print(F("Reading failed: "));
   Serial.println(mfrc522.GetStatusCodeName(status));
   return;
 }
 //PRINT FIRST NAME
 for (uint8_t i = 0; i < 16; i++)
 {
   if (buffer1[i] != 32)
   {
     Serial.write(buffer1[i]);
   }
 }
 Serial.print(" ");
 //---------------------------------------- GET LAST NAME
 byte buffer2[18];
 block = 1;
 status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 1, &key, &(mfrc522.uid)); //line 834
 if (status != MFRC522::STATUS_OK) {
   Serial.print(F("Authentication failed: "));
   Serial.println(mfrc522.GetStatusCodeName(status));
   return;
 }
 status = mfrc522.MIFARE_Read(block, buffer2, &len);
 if (status != MFRC522::STATUS_OK) {
   Serial.print(F("Reading failed: "));
   Serial.println(mfrc522.GetStatusCodeName(status));
   return;
 }
 //PRINT LAST NAME
 for (uint8_t i = 0; i < 16; i++) {
   Serial.write(buffer2[i] );
 }


 //----------------------------------------
 Serial.println(F("\n**End Reading**\n"));
 delay(1000); //change value if you want to read cards faster
 mfrc522.PICC_HaltA();
 mfrc522.PCD_StopCrypto1();

}

SEEDUINO XIAO

A super small Arduino/Micropython device. About 15 Euros.

Seeduino

Connecting it to Arduino IDE: https://wiki.seeedstudio.com/Seeed_Arduino_Boards/