Skip to content

Instantly share code, notes, and snippets.

@natendaben
Created December 5, 2019 01:54
Show Gist options
  • Save natendaben/f93a103ea3d59f4182a26fc8f0831635 to your computer and use it in GitHub Desktop.
Save natendaben/f93a103ea3d59f4182a26fc8f0831635 to your computer and use it in GitHub Desktop.
Using RFID technology to change Neopixel strip based on different tags
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 53
#define RST_PIN 5
#include <Adafruit_NeoPixel.h>
#define PIN 22
Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, PIN, NEO_GRB + NEO_KHZ800);
MFRC522 mfrc522(SS_PIN, RST_PIN); // Instance of the class
// Desert - Gold / brown
uint32_t desert = strip.gamma32(strip.Color(255, 183, 0));
// Underwater - Deep blues / dark
uint32_t water = strip.gamma32(strip.Color(0, 32, 194));
// Rainforest - Deep greens / dark
uint32_t forest = strip.gamma32(strip.Color(0, 179, 116));
// Grassland - Light greens / yellows
uint32_t grass = strip.gamma32(strip.Color(234, 255, 143));
// Beach - Light blues / tans
uint32_t beach = strip.gamma32(strip.Color(0, 255, 255));
uint32_t black = strip.gamma32(strip.Color(0, 0, 0));
void setup() {
Serial.begin(9600);
strip.begin();
strip.show();
strip.setBrightness(20);
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522
Serial.println("RFID reading UID");
for(int i=0; i<strip.numPixels(); i++){
strip.setPixelColor(i, forest);
}
strip.show();
}
void loop() {
if ( mfrc522.PICC_IsNewCardPresent()){
if ( mfrc522.PICC_ReadCardSerial()){
if (mfrc522.uid.uidByte[0] == 0xF9 &&
mfrc522.uid.uidByte[1] == 0x2C &&
mfrc522.uid.uidByte[2] == 0xC8 &&
mfrc522.uid.uidByte[3] == 0xB1) {
for(int i=0; i<strip.numPixels(); i++){
strip.setPixelColor(i, desert);
}
strip.show();
}
if (mfrc522.uid.uidByte[0] == 0xF9 &&
mfrc522.uid.uidByte[1] == 0xEC &&
mfrc522.uid.uidByte[2] == 0xC4 &&
mfrc522.uid.uidByte[3] == 0xB1) {
for(int i=0; i<strip.numPixels(); i++){
strip.setPixelColor(i, water);
}
strip.show();
}
if (mfrc522.uid.uidByte[0] == 0x19 &&
mfrc522.uid.uidByte[1] == 0xE8 &&
mfrc522.uid.uidByte[2] == 0xB3 &&
mfrc522.uid.uidByte[3] == 0xB0) {
for(int i=0; i<strip.numPixels(); i++){
strip.setPixelColor(i, grass);
}
strip.show();
}
if (mfrc522.uid.uidByte[0] == 0xC9 &&
mfrc522.uid.uidByte[1] == 0xFA &&
mfrc522.uid.uidByte[2] == 0x21 &&
mfrc522.uid.uidByte[3] == 0xB3) {
for(int i=0; i<strip.numPixels(); i++){
strip.setPixelColor(i, beach);
}
strip.show();
}
Serial.print("Tag UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();
mfrc522.PICC_HaltA();
delay(1000);
}
// } else {
// for(int i=0; i<strip.numPixels(); i++){
// strip.setPixelColor(i, forest);
// }
// strip.show();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment