MediaWiki API result

This is the HTML representation of the JSON format. HTML is good for debugging, but is unsuitable for application use.

Specify the format parameter to change the output format. To see the non-HTML representation of the JSON format, set format=json.

See the complete documentation, or the API help for more information.

{
    "batchcomplete": "",
    "continue": {
        "gapcontinue": "RecentChangesScraper",
        "continue": "gapcontinue||"
    },
    "query": {
        "pages": {
            "3875": {
                "pageid": 3875,
                "ns": 0,
                "title": "Re:load Pro",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "{{Equipment\n|Name=Arachnid Labs Re:load Pro\n|Zone=Electronics Lab\n|LooksLike=Reload Pro.jpeg\n|Owner=i3Detroit\n|Date=2019-03\n|Authorization Required=No\n|Status=Running\n|Value=125\n|Documentation=https://raw.githubusercontent.com/arachnidlabs/reload-pro/master/User%20Manual.pdf\n|OtherReferences=http://www.arachnidlabs.com/reload-pro/\n|Intro=This is a black box found in the E lab. It's origins are unknown, much like it's function. Who knows what secrets it holds.\n|Rules=Do not feed after midnight.\n|Instructions=Plug in using a USB-B connector to 5 volt power.\n|MaintenanceInfo=Firmware updates:\n\nhttp://www.arachnidlabs.com/reload-pro/firmware/\n|FAQs=The Re:Load Pro is an active load. It acts as a current sink, always drawing the same amount of current regardless of the voltage across it.\n\nDissipate 25 watts continuously\n\nHandles up to 6 amps or 60 volts.\n|ToDos=Find out how this works (See PDF link in \"Documentation\")\n}}"
                    }
                ]
            },
            "393": {
                "pageid": 393,
                "ns": 0,
                "title": "Real-Time Drum Lights",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "V 1.0 <br>\n7/31/2009\n\n[http://www.youtube.com/watch?v=6XWldYGdZpo Action Video made by my son's friend Max]\n\n[http://i68.photobucket.com/albums/i27/djscholl/drumleds-10.png Circuit Schematic] <br>\n[http://i68.photobucket.com/albums/i27/djscholl/LED_boards.jpg Photo of LED boards and microphone] <br>\n[http://i68.photobucket.com/albums/i27/djscholl/controller_board.jpg Photo of controller board] <br>\n\nThis circuit uses an Arduino microcontroller board to flash colored lights inside a drum when the drum is played. A miniature electret microphone inside each drum detects when that drum is played. For a dramatic visual effect, you need the extra-bright LEDs that are used in flashlights, not the weaker type used as indicator lights on front panels. For each drum, you need one analog input and three digital outputs (one each for red, green, and blue). Each drum circuit is independent except for power supplies and ground, so you can use two or more Aduinos in parallel if you want to. I chose the Arduino Mega because I wanted to light five drums with one controller. For simplicity, the electronic schematic shows the circuit you would need for one drum with two RGB LEDs. \n\nFor testing or small installations, you can drive single LEDs directly from the digital outputs of the Arduino. However, multiple extra-bright LEDs add up to too much current for the Arduino digital outputs to sink to ground. The IRF530 MOSFETs are used to amplify the current-sink capability of the Arduino digital outputs. These IRF530 MOSFETs are overkill, as each one can sink many amps, (hundreds of LEDs). I picked them because they have a very low on-resistance, which makes the circuit design simpler. Also, I was certain that they would not need heatsinks.\n\nTo connect additional LEDs, you need to duplicate the circuitry shown in the dashed-line boxes on the right-hand side of the Arduino. RGB LEDs are just three separate LEDs in one convenient package, put close together so the colors mix better. They have four leads: one R, one G, one B, and one common, which can be all three anodes or all three cathodes. The circuit design shown here is for common-anode RGB LEDs, because they are simpler to drive with MOSFETS than the common cathode configuration. Each LED needs its own current-limiting resistor. The values of the current limiting resistors need to be selected such that the current through each diode is the maximum specified by the manufacturer (20 mA for our LEDs). Different color LEDs have different voltage drops, so they may need different resistor values. The resistor value also depends on the voltage you use to power the LEDs, which should be at least 4.5V, and can be higher. Our installation draws over 2 amps with all LEDs lit, so we use a separate regulated 9V supply just for the LEDs. \n\nThe microphone needs to be inside of the drum, to minimize interference from the noise coming from other drums. The remainder of the microphone circuit is outside on a prototype board, to make it more accessible if we needed to adjust the component values (which we did). Normally, microphones need preamps, but the sound inside the drums is so loud that we have plenty of amplitude with a direct connection. The blocking capacitor and the two 10k resistors allow us to capture both positive and negative peaks with the 0-5V A/D convertor on the Arduino. \n\nThe LEDs can be anywhere you like, but we installed them with the current limiting resistors on small circuit boards inside the drum. The circuit boards are mounted under the screws that hold the head-tuning brackets. We use six or eight LEDs per drum, depending on how many head-tuning brackets are there. You can run the wires through the vent hole in the side of the drum, but use thin wires. If you block the vent you will spoil the sound of the drum. We used Cat5 networking cable and removed the outer jacket on the part of the cable that passes through the vent hole. Using Cat5 cable also means that we can use  robust and inexpensive RJ45 connectors to disconnect the circuit when we take the drum set apart to move it. We used the eight Cat5 wires that go into each drum as follows: microphone plus and minus, R, G, and B cathodes, and three wires in parallel to the common anodes.\n\nFor additional drums, you need to duplicate the microphone circuit drawn on the left side of the Arduino. The microphone circuits can share power and ground, but they each need their own analog input on the Arduino. For additional drums, you also need to duplicate the LED circuit on the right side of the Arduino. The drums can share power supply and ground wires, but each MOSFET needs its own digital output on the Arduino. Note that the ground wires for the microphone circuit and the LED circuit are separate except for one common point on the Arduino. This minimizes the possibility that the large LED currents will interfere with the microphone signal. \n\nParts List:\n\nAll resistors are carbon composition, 1/4W, 5% <br>\nThe blocking capacitor in the microphone circuit is a 0.47 microfarad film capacitor.\n\nFrom Electronic Goldmine (www.goldmine-elec.com): <br>\nIRF530 HEXFET Power MOSFET (P/N A10095) <br>\nCommon Anode 8000MCD Super Flux RGB LED (P/N G16721) <br>\nUltra Small Electret Microphone (P/N G15220) <br>\n\n\nArduino Sketch <br>\n <nowiki>/*\n  mic_randeightcolors\n  \n  Flashes RGB LED's in a random color when the microphone detects a sound.\n  \n  The circuit:\n    RBG LEDs w/ MOSFET drivers, miniature microphone.\n    \n    Created 27 June 2009\n    By David Scholl\n*/\n\n// the array index runs over the number of drums\n#include \"WProgram.h\"\nvoid setup();\nvoid loop();\nint numDrums = 5;\nint drum;\n\n// the microphone is connected to an analog input at the specified pin number\nint micPin[] = {0, 1, 2, 3, 4};\n\n// the microphone reading value is an integer, 0-1023\nint micValue[] = {0, 0, 0, 0, 0};\n\n// the microphone signal is offset by its running average\nfloat micOffset[] = {511.0, 511.0, 511.0, 511.0, 511.0};   \n\n// the rate of change of the running average (offset), was 0.6\nfloat micOffsetRate[] = {0.6, 0.6, 0.6, 0.6, 0.6};\n\n// sensitivity of microphone, use 180 outside of drum, 300 inside of drum\nint micThreshold[] = {295, 300, 285, 300, 265};\n\n// the red LED is controlled by the digital outputs specified\nint redPin[] = {22, 28, 34, 40, 46};\n\n// the green LED is controlled by the digital outputs specified\nint greenPin[] = {24, 30, 36, 42, 48};\n\n// the blue LED is controlled by the digital outputs specified\nint bluePin[] = {26, 32, 38, 44, 50};\n\nint ledDuration = 50;  // the LED flash lasts for ledDuration milliseconds\n\nlong seedValue;    // a seed value is required for randomness\n\nint rgbColor;    // index to seven colors, 1-7\n\nlong stopMillis[] = {0, 0, 0, 0, 0};    // the time to stop the flash\n\nint flashState[] = {0, 0, 0, 0, 0};    // 0 if flash off, 1 if flash on\n\n// variables for approximate loop timing\nlong loopCount = 0;\nlong lastMillis = 0;\nlong newMillis;\nlong diffMillis;\n\n// the setup method runs once to configure the digital output pins \n// and seed the random generator\n\nvoid setup() {\n  \n  for (drum = 0; drum < numDrums; drum = drum + 1) {\n    // setup the digital outputs to drive the LEDs\n    pinMode(redPin[drum], OUTPUT);\n    pinMode(greenPin[drum], OUTPUT);\n    pinMode(bluePin[drum], OUTPUT);\n    digitalWrite(redPin[drum], LOW);\n    digitalWrite(greenPin[drum], LOW);\n    digitalWrite(bluePin[drum], LOW);\n  }\n  seedValue = analogRead(15);    // acquire a random seed from an unused input\n  randomSeed(seedValue);    // seed the random generator\n  //Serial.begin(9600);    // initialize the serial port for debugging messages\n}\n\n// the loop method runs repeatedly as long as the Arduino has power\n\nvoid loop() {\n  \n  loopCount = loopCount + 1;    // used for approximate loop timing\n  \n  for (drum = 0; drum < numDrums; drum = drum + 1) {    // loop over drums\n  \n    micValue[drum] = analogRead(micPin[drum]);    // read the microphone signal\n    micValue[drum] = micValue[drum]-int(micOffset[drum]);    // subtract the offset (running average)\n    \n    // update the running average\n    micOffset[drum] = micOffset[drum]*(1.0-micOffsetRate[drum]);\n    micOffset[drum] = micOffset[drum]+(float(micValue[drum])*micOffsetRate[drum]);\n        \n    // the microphone signal should be centered around its running average\n    // if the distance from the average exceeds the threshold, flash the LED\n    if (flashState[drum] == 0) {\n      if (abs(micValue[drum]) > micThreshold[drum]) {  \n        // pick at random from the seven colors\n        rgbColor = int(random(1, 8));\n        \n        // set the LED driver outputs to the chosen color\n        switch (rgbColor) {\n          case 1:\n            digitalWrite(redPin[drum], HIGH);\n            break;\n          case 2:\n            digitalWrite(greenPin[drum], HIGH);\n            break;\n          case 3:\n            digitalWrite(bluePin[drum], HIGH);\n            break;\n          case 4:\n            digitalWrite(redPin[drum], HIGH);\n            digitalWrite(greenPin[drum], HIGH);\n            break;\n          case 5:\n            digitalWrite(redPin[drum], HIGH);\n            digitalWrite(bluePin[drum], HIGH);\n            break;\n          case 6:\n            digitalWrite(greenPin[drum], HIGH);\n            digitalWrite(bluePin[drum], HIGH);\n            break;\n          case 7:\n            digitalWrite(redPin[drum], HIGH);\n            digitalWrite(greenPin[drum], HIGH);\n            digitalWrite(bluePin[drum], HIGH);\n            break;\n        }\n        // keep the LED on enough to make a visible flash\n        stopMillis[drum] = millis() + 50;\n        \n        // remember that the flash is on\n        flashState[drum] = 1;\n      }\n    }\n    else {   \n      // turn all three colors off if the flash time is over\n      if (stopMillis[drum] < millis()) {  \n        digitalWrite(redPin[drum], LOW);\n        digitalWrite(greenPin[drum], LOW);\n        digitalWrite(bluePin[drum], LOW);\n        flashState[drum] = 0;\n      }\n    }\n  //Serial.println(micOffset[drum]);\n  //Serial.println(micValue[drum]);\n  }\n  if (loopCount % 1000 == 0) {\n    newMillis = millis();\n    diffMillis = newMillis - lastMillis;\n    lastMillis = newMillis;\n    //Serial.println(diffMillis);\n    //Serial.println(micOffset[3]);\n    //Serial.println(micValue[3]);\n    //Serial.println(); \n  }\n}\n\n\nint main(void)\n{\n        init();\n\n        setup();\n    \n        for (;;)\n                loop();\n        \n        return 0;\n} </nowiki>\n\n\nV 2.0 <br>\nTBD\n[[Category:Projects]][[Category:Member Projects]][[Category:Completed Projects]]"
                    }
                ]
            }
        }
    }
}