<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.extremist.software/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E2%98%85</id>
	<title>Noisebridge - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.extremist.software/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E2%98%85"/>
	<link rel="alternate" type="text/html" href="https://wiki.extremist.software/wiki/Special:Contributions/%E2%98%85"/>
	<updated>2026-04-10T12:21:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://wiki.extremist.software/index.php?title=User:%E2%98%85&amp;diff=59567</id>
		<title>User:★</title>
		<link rel="alternate" type="text/html" href="https://wiki.extremist.software/index.php?title=User:%E2%98%85&amp;diff=59567"/>
		<updated>2017-07-11T21:56:31Z</updated>

		<summary type="html">&lt;p&gt;★: ★ #f80&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 76em; color: #FF8800&amp;quot;&amp;gt;★&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>★</name></author>
	</entry>
	<entry>
		<id>https://wiki.extremist.software/index.php?title=Chuck&amp;diff=55685</id>
		<title>Chuck</title>
		<link rel="alternate" type="text/html" href="https://wiki.extremist.software/index.php?title=Chuck&amp;diff=55685"/>
		<updated>2016-12-14T02:11:06Z</updated>

		<summary type="html">&lt;p&gt;★: adding basic led strip trigger from motion ★ ☉ #940&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arduino sketch code for RFID reader and 4x4 keypad matrix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**************************************************************************/&lt;br /&gt;
/*! &lt;br /&gt;
    @file     readMifare.pde&lt;br /&gt;
    @author   Adafruit Industries&lt;br /&gt;
  @license  BSD (see license.txt)&lt;br /&gt;
&lt;br /&gt;
    This example will wait for any ISO14443A card or tag, and&lt;br /&gt;
    depending on the size of the UID will attempt to read from it.&lt;br /&gt;
   &lt;br /&gt;
    If the card has a 4-byte UID it is probably a Mifare&lt;br /&gt;
    Classic card, and the following steps are taken:&lt;br /&gt;
   &lt;br /&gt;
    - Authenticate block 4 (the first block of Sector 1) using&lt;br /&gt;
      the default KEYA of 0XFF 0XFF 0XFF 0XFF 0XFF 0XFF&lt;br /&gt;
    - If authentication succeeds, we can then read any of the&lt;br /&gt;
      4 blocks in that sector (though only block 4 is read here)&lt;br /&gt;
   &lt;br /&gt;
    If the card has a 7-byte UID it is probably a Mifare&lt;br /&gt;
    Ultralight card, and the 4 byte pages can be read directly.&lt;br /&gt;
    Page 4 is read by default since this is the first &#039;general-&lt;br /&gt;
    purpose&#039; page on the tags.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is an example sketch for the Adafruit PN532 NFC/RFID breakout boards&lt;br /&gt;
This library works with the Adafruit NFC breakout &lt;br /&gt;
  ----&amp;gt; https://www.adafruit.com/products/364&lt;br /&gt;
 &lt;br /&gt;
Check out the links above for our tutorials and wiring diagrams &lt;br /&gt;
These chips use SPI or I2C to communicate.&lt;br /&gt;
&lt;br /&gt;
Adafruit invests time and resources providing this open source code, &lt;br /&gt;
please support Adafruit and open-source hardware by purchasing &lt;br /&gt;
products from Adafruit!&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
/**************************************************************************/&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Adafruit_PN532.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Keypad.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// If using the breakout with SPI, define the pins for SPI communication.&lt;br /&gt;
#define PN532_SCK  (2)&lt;br /&gt;
#define PN532_MOSI (3)&lt;br /&gt;
#define PN532_SS   (4)&lt;br /&gt;
#define PN532_MISO (5)&lt;br /&gt;
&lt;br /&gt;
// If using the breakout or shield with I2C, define just the pins connected&lt;br /&gt;
// to the IRQ and reset lines.  Use the values below (2, 3) for the shield!&lt;br /&gt;
#define PN532_IRQ   (2)&lt;br /&gt;
#define PN532_RESET (3)  // Not connected by default on the NFC Shield&lt;br /&gt;
&lt;br /&gt;
// Uncomment just _one_ line below depending on how your breakout or shield&lt;br /&gt;
// is connected to the Arduino:&lt;br /&gt;
&lt;br /&gt;
// Use this line for a breakout with a software SPI connection (recommended):&lt;br /&gt;
//Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);&lt;br /&gt;
&lt;br /&gt;
// Use this line for a breakout with a hardware SPI connection.  Note that&lt;br /&gt;
// the PN532 SCK, MOSI, and MISO pins need to be connected to the Arduino&#039;s&lt;br /&gt;
// hardware SPI SCK, MOSI, and MISO pins.  On an Arduino Uno these are&lt;br /&gt;
// SCK = 13, MOSI = 11, MISO = 12.  The SS line can be any digital IO pin.&lt;br /&gt;
//Adafruit_PN532 nfc(PN532_SS);&lt;br /&gt;
&lt;br /&gt;
// Or use this line for a breakout or shield with an I2C connection:&lt;br /&gt;
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Adafruit_NeoPixel.h&amp;gt;&lt;br /&gt;
#ifdef __AVR__&lt;br /&gt;
  #include &amp;lt;avr/power.h&amp;gt;&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#define PIN 5&lt;br /&gt;
&lt;br /&gt;
// Parameter 1 = number of pixels in strip&lt;br /&gt;
// Parameter 2 = Arduino pin number (most are valid)&lt;br /&gt;
// Parameter 3 = pixel type flags, add together as needed:&lt;br /&gt;
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)&lt;br /&gt;
//   NEO_KHZ400  400 KHz (classic &#039;v1&#039; (not v2) FLORA pixels, WS2811 drivers)&lt;br /&gt;
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)&lt;br /&gt;
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)&lt;br /&gt;
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)&lt;br /&gt;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(10, PIN, NEO_GRB + NEO_KHZ800);&lt;br /&gt;
&lt;br /&gt;
// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across&lt;br /&gt;
// pixel power leads, add 300 - 500 Ohm resistor on first pixel&#039;s data input&lt;br /&gt;
// and minimize distance between Arduino and first pixel.  Avoid connecting&lt;br /&gt;
// on a live circuit...if you must, connect GND first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
const byte ROWS = 4; //four rows&lt;br /&gt;
const byte COLS = 4; //three columns&lt;br /&gt;
char keys[ROWS][COLS] = {&lt;br /&gt;
  {&#039;1&#039;,&#039;2&#039;,&#039;3&#039;,&#039;@&#039;},&lt;br /&gt;
  {&#039;4&#039;,&#039;5&#039;,&#039;6&#039;,&#039;P&#039;},&lt;br /&gt;
  {&#039;7&#039;,&#039;8&#039;,&#039;9&#039;,&#039;&amp;lt;&#039;},&lt;br /&gt;
  {&#039;R&#039;,&#039;0&#039;,&#039;D&#039;,&#039;E&#039;}&lt;br /&gt;
};&lt;br /&gt;
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad&lt;br /&gt;
byte colPins[COLS] = {13, 12, 11, 10}; //connect to the column pinouts of the keypad&lt;br /&gt;
&lt;br /&gt;
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );&lt;br /&gt;
&lt;br /&gt;
uint8_t mPos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup(void) {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  Serial.println(&amp;quot;Hello!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  strip.begin();&lt;br /&gt;
  for(uint8_t i=0; i&amp;lt;strip.numPixels(); i++) {&lt;br /&gt;
    strip.setPixelColor(i, strip.Color(0, 0, 16));&lt;br /&gt;
  }&lt;br /&gt;
  strip.show();&lt;br /&gt;
&lt;br /&gt;
  pinMode(4, INPUT);&lt;br /&gt;
&lt;br /&gt;
  nfc.begin();&lt;br /&gt;
&lt;br /&gt;
  uint32_t versiondata = nfc.getFirmwareVersion();&lt;br /&gt;
  if (! versiondata) {&lt;br /&gt;
    Serial.print(&amp;quot;Didn&#039;t find PN53x board&amp;quot;);&lt;br /&gt;
    while (1); // halt&lt;br /&gt;
  }&lt;br /&gt;
  // Got ok data, print it out!&lt;br /&gt;
  Serial.print(&amp;quot;Found chip PN5&amp;quot;); Serial.println((versiondata&amp;gt;&amp;gt;24) &amp;amp; 0xFF, HEX); &lt;br /&gt;
  Serial.print(&amp;quot;Firmware ver. &amp;quot;); Serial.print((versiondata&amp;gt;&amp;gt;16) &amp;amp; 0xFF, DEC); &lt;br /&gt;
  Serial.print(&#039;.&#039;); Serial.println((versiondata&amp;gt;&amp;gt;8) &amp;amp; 0xFF, DEC);&lt;br /&gt;
  &lt;br /&gt;
  // configure board to read RFID tags&lt;br /&gt;
  nfc.SAMConfig();&lt;br /&gt;
  &lt;br /&gt;
  Serial.println(&amp;quot;Waiting for an ISO14443A Card ...&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop(void) {&lt;br /&gt;
  uint8_t i = 0;&lt;br /&gt;
  for (i; i &amp;lt; 100; i++) {&lt;br /&gt;
    // Check Keypad&lt;br /&gt;
    char key = keypad.getKey();&lt;br /&gt;
  &lt;br /&gt;
    if (key){&lt;br /&gt;
      Serial.println(key);&lt;br /&gt;
      for(uint8_t i=0; i&amp;lt;strip.numPixels(); i++) {&lt;br /&gt;
        strip.setPixelColor(i, strip.Color(0, 0, 0));&lt;br /&gt;
      }&lt;br /&gt;
      uint8_t kNum = key - &#039;0&#039;;  &lt;br /&gt;
      if (kNum &amp;gt;= 0 &amp;amp;&amp;amp; kNum &amp;lt; 10)&lt;br /&gt;
        strip.setPixelColor(kNum, strip.Color(0, 32, 0));&lt;br /&gt;
      strip.show();&lt;br /&gt;
      Serial.println(kNum);&lt;br /&gt;
    }&lt;br /&gt;
    delay(10);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (digitalRead(4)) {&lt;br /&gt;
    Serial.println(&amp;quot;Motion Detected&amp;quot;);&lt;br /&gt;
    if (++mPos &amp;gt; 9)&lt;br /&gt;
      mPos = 0;&lt;br /&gt;
    for(uint8_t i=0; i&amp;lt;strip.numPixels(); i++) {&lt;br /&gt;
      strip.setPixelColor(i, strip.Color(0, 0, 0));&lt;br /&gt;
    }&lt;br /&gt;
    strip.setPixelColor(mPos, strip.Color(64, 0, 0));&lt;br /&gt;
    strip.show();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  uint8_t success;&lt;br /&gt;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID&lt;br /&gt;
  uint8_t uidLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)&lt;br /&gt;
    &lt;br /&gt;
  // Wait for an ISO14443A type cards (Mifare, etc.).  When one is found&lt;br /&gt;
  // &#039;uid&#039; will be populated with the UID, and uidLength will indicate&lt;br /&gt;
  // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)&lt;br /&gt;
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &amp;amp;uidLength, 100);&lt;br /&gt;
  &lt;br /&gt;
  if (success) {&lt;br /&gt;
    // Display some basic information about the card&lt;br /&gt;
    Serial.println(&amp;quot;Found an ISO14443A card&amp;quot;);&lt;br /&gt;
    Serial.print(&amp;quot;  UID Length: &amp;quot;);Serial.print(uidLength, DEC);Serial.println(&amp;quot; bytes&amp;quot;);&lt;br /&gt;
    Serial.print(&amp;quot;  UID Value: &amp;quot;);&lt;br /&gt;
    nfc.PrintHex(uid, uidLength);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    if (uidLength == 4)&lt;br /&gt;
    {&lt;br /&gt;
      // We probably have a Mifare Classic card ... &lt;br /&gt;
      Serial.println(&amp;quot;Seems to be a Mifare Classic card (4 byte UID)&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
      // Now we need to try to authenticate it for read/write access&lt;br /&gt;
      // Try with the factory default KeyA: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF&lt;br /&gt;
      Serial.println(&amp;quot;Trying to authenticate block 4 with default KEYA value&amp;quot;);&lt;br /&gt;
      uint8_t keya[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };&lt;br /&gt;
    &lt;br /&gt;
    // Start with block 4 (the first block of sector 1) since sector 0&lt;br /&gt;
    // contains the manufacturer data and it&#039;s probably better just&lt;br /&gt;
    // to leave it alone unless you know what you&#039;re doing&lt;br /&gt;
      success = nfc.mifareclassic_AuthenticateBlock(uid, uidLength, 4, 0, keya);&lt;br /&gt;
    &lt;br /&gt;
      if (success)&lt;br /&gt;
      {&lt;br /&gt;
        Serial.println(&amp;quot;Sector 1 (Blocks 4..7) has been authenticated&amp;quot;);&lt;br /&gt;
        uint8_t data[16];&lt;br /&gt;
    &lt;br /&gt;
        // If you want to write something to block 4 to test with, uncomment&lt;br /&gt;
    // the following line and this text should be read back in a minute&lt;br /&gt;
        //memcpy(data, (const uint8_t[]){ &#039;a&#039;, &#039;d&#039;, &#039;a&#039;, &#039;f&#039;, &#039;r&#039;, &#039;u&#039;, &#039;i&#039;, &#039;t&#039;, &#039;.&#039;, &#039;c&#039;, &#039;o&#039;, &#039;m&#039;, 0, 0, 0, 0 }, sizeof data);&lt;br /&gt;
        // success = nfc.mifareclassic_WriteDataBlock (4, data);&lt;br /&gt;
&lt;br /&gt;
        // Try to read the contents of block 4&lt;br /&gt;
        success = nfc.mifareclassic_ReadDataBlock(4, data);&lt;br /&gt;
    &lt;br /&gt;
        if (success)&lt;br /&gt;
        {&lt;br /&gt;
          // Data seems to have been read ... spit it out&lt;br /&gt;
          Serial.println(&amp;quot;Reading Block 4:&amp;quot;);&lt;br /&gt;
          nfc.PrintHexChar(data, 16);&lt;br /&gt;
          Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
          // Wait a bit before reading the card again&lt;br /&gt;
          delay(1000);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
          Serial.println(&amp;quot;Ooops ... unable to read the requested block.  Try another key?&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        Serial.println(&amp;quot;Ooops ... authentication failed: Try another key?&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if (uidLength == 7)&lt;br /&gt;
    {&lt;br /&gt;
      // We probably have a Mifare Ultralight card ...&lt;br /&gt;
      Serial.println(&amp;quot;Seems to be a Mifare Ultralight tag (7 byte UID)&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
      // Try to read the first general-purpose user page (#4)&lt;br /&gt;
      Serial.println(&amp;quot;Reading page 4&amp;quot;);&lt;br /&gt;
      uint8_t data[32];&lt;br /&gt;
      success = nfc.mifareultralight_ReadPage (4, data);&lt;br /&gt;
      if (success)&lt;br /&gt;
      {&lt;br /&gt;
        // Data seems to have been read ... spit it out&lt;br /&gt;
        nfc.PrintHexChar(data, 4);&lt;br /&gt;
        Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
        // Wait a bit before reading the card again&lt;br /&gt;
        delay(1000);&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        Serial.println(&amp;quot;Ooops ... unable to read the requested page!?&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>★</name></author>
	</entry>
</feed>