Tell us about yourself!

Complete Your Profile
  • OccuPod - an Old Storm Drain Pipe Turned Into a Warm and Comfortable Living Space!

    I like the idea of using cheap concrete as a starting point, but It seems a lot of work was expended just to deal with the circular shape of the pipe. I have seen concrete culverts built in a rectangular shape. Wouldn't it be more practical to find a source of (say) 8' X 8' square concrete tubes to start from?

    View Instructable »
  • Create a Joystick Using the Arduino Joystick Library 2.0

    I haven't messed with this for awhile. I gave up and moved on to other things. But I'll get back to it.Channel 5 has different values because the program on the "other end" isn't consistently reading that channel properly. I tried to change the values in order to make it work. Sometimes, I get a huge offset. For example, if you assume the normal joystick output is 0 to 100, my computer interprets it as 50 to 80 when I move the stick side to side, so I have to add huge offsets and change the scale factors to make it work. But that doesn't always work either - possibly because of variable overflows. It is as if the library expects channel 5 to be digital and trying to make it analog messes it up. It could be that the program I'm running on my computer (Mission Planner) is...

    see more »

    I haven't messed with this for awhile. I gave up and moved on to other things. But I'll get back to it.Channel 5 has different values because the program on the "other end" isn't consistently reading that channel properly. I tried to change the values in order to make it work. Sometimes, I get a huge offset. For example, if you assume the normal joystick output is 0 to 100, my computer interprets it as 50 to 80 when I move the stick side to side, so I have to add huge offsets and change the scale factors to make it work. But that doesn't always work either - possibly because of variable overflows. It is as if the library expects channel 5 to be digital and trying to make it analog messes it up. It could be that the program I'm running on my computer (Mission Planner) is handling the input improperly.

    View Instructable »
  • Create a Joystick Using the Arduino Joystick Library 2.0

    Matthew,I have things mostly working. I have 8 analog channels, but channel 5, in particular seems to have a "range" issue. That is, sometimes my device sees the controller output as 0 to 100 (on a scale of 0 to 100), sometimes it reads it as 50 to 80. The results aren't consistent. Is there something wrong with my setup? Could channel (or any others) be mis-configured? My code is below.#include <Joystick.h> Joystick_ Joystick;int8_t joystickType = 0x08; float Multiplier = 1.2;int Offset = 0;float Multiplier2 = .9;int Offset2 = -300;bool includeXAxis = true;bool includeYAxis = true;bool includeZAxis = true;bool includeRxAxis = true;bool includeRyAxis = true;bool includeRzAxis = true;bool includeThrottle = true; //not really throttlebool includeRudder = true; // no...

    see more »

    Matthew,I have things mostly working. I have 8 analog channels, but channel 5, in particular seems to have a "range" issue. That is, sometimes my device sees the controller output as 0 to 100 (on a scale of 0 to 100), sometimes it reads it as 50 to 80. The results aren't consistent. Is there something wrong with my setup? Could channel (or any others) be mis-configured? My code is below.#include <Joystick.h> Joystick_ Joystick;int8_t joystickType = 0x08; float Multiplier = 1.2;int Offset = 0;float Multiplier2 = .9;int Offset2 = -300;bool includeXAxis = true;bool includeYAxis = true;bool includeZAxis = true;bool includeRxAxis = true;bool includeRyAxis = true;bool includeRzAxis = true;bool includeThrottle = true; //not really throttlebool includeRudder = true; // not really rudderconst int Analog1 = 0;const int Analog2 = 1;const int Analog3 = 2;const int Analog4 = 3;const int Analog5 = 4;const int Analog6 = 5;const int Analog7 = 6;const int Analog8 = 7;int XValue = 0;int YValue = 0;int ZValue = 0;int RxValue = 0;int RyValue = 0;int RzValue = 0;int SxValue = 0;int SyValue = 0;void setup() { Joystick.begin(); delay(1000);}void loop() { XValue = (analogRead(Analog1));YValue = (analogRead(Analog2));ZValue = (analogRead(Analog3));RxValue = (analogRead(Analog4));RyValue = (analogRead(Analog5));RzValue = (analogRead(Analog6));SxValue= (analogRead(Analog7));SyValue = (analogRead(Analog8));XValue = (XValue * Multiplier2) + Offset2;YValue = (YValue * Multiplier2) + Offset2;ZValue = (ZValue * Multiplier2) + Offset2;RxValue = (RyValue * Multiplier2) + Offset2; RyValue = (RyValue * Multiplier2) + Offset2;RzValue = (RzValue * Multiplier) + Offset;SxValue = (SxValue * Multiplier2) + Offset2;SyValue = (SyValue * Multiplier2) + Offset2; Joystick.setXAxis(XValue); //YAW Joystick.setYAxis(YValue); // Throttle Joystick.setZAxis(ZValue); //PITCH Joystick.setRxAxis(RxValue); // Roll Joystick.setRyAxis(RyValue);// Chan 6 Joystick.setRzAxis(RzValue);// Chan 5Joystick.setThrottle(SxValue);// Slider 1- not really throttleJoystick.setRudder(SyValue);//Slider 2 - not really rudder} Please note that the Joysticks are not being read by Windows. They are instead being read by a program running on a PC called "Mission Planner", which lets me re-map the channels to various functions.A picture of the "work in progress is attached.

    View Instructable »
  • Add USB Game Controller to Arduino Leonardo/Micro

    I believe I'm getting it. I have 5 channels working, and now I'll try to add the other 3. It helps that the program that this controls allows me to "map" the "channels" to whatever I want, so I don't have to concern myself with what each channel is called - or is usually used for.I may yet need more help, but I'm making solid progress. Knowing programming (in general) has helped a lot, and I'm slowly learning the way Arduino does things. Thanks for everything so far....

    View Instructable »
  • Add USB Game Controller to Arduino Leonardo/Micro

    I'll read some more, but note this is NOT for a game.This is for robot/drone control. I have - Two - two-axis joysticks = 4 analog inputs MODE control = 1 analog Camera tilt (pitch) = 1 analogCamera yaw = 1 analogCamera MODE = 1 analogSPARE = 1 analog.All inputs will be either from a potentiometer wiper or from a variable voltage source. The potentiometers produce an approx 1.2V - 3.8V signal, while the voltage source produce 0V - 5V. As mentioned before, there will be no buttons or switches. And just as in a game controller, the response times should be very short.

    View Instructable »
  • Add USB Game Controller to Arduino Leonardo/Micro

    Mattew,I downloaded and installed the latest version of the joystick library.I figured out how to read analog channels on an Arduino, and I can read them and send values to the terminal.But I have some more questions:In the Multiple Joystick Test program example -There is a line JOYSTICK_TYPE_MULTI_AXIS 32,1,true,true, false, true, true, false, false, false...What are the numbers "32" and "1" for?What does "true,true, false, true, true....." mean?What is gcCycleDelta?What is gcAnalogDelta?If I want 8 analog joysticks and no digital buttons, how would set up that?I look at each individual analog joystick as a "channel" . Is it correct that I can write a value to a channel by Joystick[channel].setXAxis(analog value); ?But I'm confused by the 's...

    see more »

    Mattew,I downloaded and installed the latest version of the joystick library.I figured out how to read analog channels on an Arduino, and I can read them and send values to the terminal.But I have some more questions:In the Multiple Joystick Test program example -There is a line JOYSTICK_TYPE_MULTI_AXIS 32,1,true,true, false, true, true, false, false, false...What are the numbers "32" and "1" for?What does "true,true, false, true, true....." mean?What is gcCycleDelta?What is gcAnalogDelta?If I want 8 analog joysticks and no digital buttons, how would set up that?I look at each individual analog joystick as a "channel" . Is it correct that I can write a value to a channel by Joystick[channel].setXAxis(analog value); ?But I'm confused by the 'setXAxis' part. I was thinking if 'channel' is a variable that lets you write to any channel, but 'setXAxis' refers to a particular channel. And if you have 8 joysticks, how do you refer to them? "X", "Y", "Z" .... then what?I also assume that the value range expected by the library is -127 to +127. Is that correct? If the above is true, then wouldn't JoyStick_Value = (analogRead(1) >> 2) - 127 do the right thing?

    View Instructable »
  • Add USB Game Controller to Arduino Leonardo/Micro

    Matthew,I apologize for my lack of knowledge. I'm an experienced PIC Basic Pro (PBP) programmer. But Arduinos work a LOT different. My goal is to use an ordinary hand-held R/C controller with 8 pots (pitch, roll, yaw ,throttle, mode, camera pitch, camera yaw, spare) to control a quadcopter using my laptop and the Mavlink Protocol. A program called MISSION PLANNER running on my laptop does the conversion between the joystick and Mavlink. This will allow me to use my laptop's 4G LTE connection to send commands to my quadcopter (which also has a 4G connection). This gives me virtually unlimited control range. I need at least 8 ANALOG channels where an input voltage of 1-4V sets the output. I don't need any toggle or "hat" switches at all.I can use ANALOG READ() to get a val...

    see more »

    Matthew,I apologize for my lack of knowledge. I'm an experienced PIC Basic Pro (PBP) programmer. But Arduinos work a LOT different. My goal is to use an ordinary hand-held R/C controller with 8 pots (pitch, roll, yaw ,throttle, mode, camera pitch, camera yaw, spare) to control a quadcopter using my laptop and the Mavlink Protocol. A program called MISSION PLANNER running on my laptop does the conversion between the joystick and Mavlink. This will allow me to use my laptop's 4G LTE connection to send commands to my quadcopter (which also has a 4G connection). This gives me virtually unlimited control range. I need at least 8 ANALOG channels where an input voltage of 1-4V sets the output. I don't need any toggle or "hat" switches at all.I can use ANALOG READ() to get a value. But how many bits are returned - 8? 10? 12? 16?. And what is the reference? 3.3V, Vcc, something else? I looked through the joystick library and I can't figure out how to make all channels analog, and what is the syntax to get an A/D reading into a 8-bit joystick "position".

    View Instructable »
  • Arduino Leonardo/Micro As Game Controller/Joystick

    I'm still having issues. I downloaded the latest version, and got the code to compile. I'm running Windows 10/64I loaded the code into an Arduino Leonardo. I then went to PRINTERS and DEVICES and it sees "Arduino Leonardo", but doesn't know what to do with it.I get the message "Report ID declaration found outside of top level collection". I did notice that I have several versions of HID.h on my computer. Where should that file be in order to insure that the program gets the right one?

    Never mind....I renamed all but one of the 15 or so HID.h files on my computer. It looks like it is working now. At least Windows recognizes it as a game controller.

    View Instructable »
  • Add USB Game Controller to Arduino Leonardo/Micro

    I have successfully compiled the code and installed it into a Leonardo.Then, when I go into Windows 10 "Devices and Printers". It identifies the device as "Arduino Leonardo", but the category is "Unspecified" and when I right-click on that icon, I get onlyCreate ShortcutRemove DeviceTroubleshootPropertiesWhen I click on PROPERTIES, I get "Report ID declaration outside of top level collection"Apparently the joystick driver isn't loading properly.

    View Instructable »
  • Arduino Leonardo/Micro As Game Controller/Joystick

    Matthew,I downloaded the "Multiple Joystick Test" from GitHub and installed the Joystick library. It shows up in my list of libraries. When I try to compile for Leonardo, I get the messages: "MultipleJoystickTest:14: error: 'Joystick_' does not name a type Joystick_ Joystick[JOYSTICK_COUNT] = {C:\Users\Charles\Documents\ArduinoJoystick\MultipleJoystickTest\MultipleJoystickTest.ino: In function 'void testSingleButtonPush(int, unsigned int)':MultipleJoystickTest:36: error: 'Joystick' was not declared in this scope Joystick[joystickId].releaseButton(button - 1);MultipleJoystickTest:40: error: 'Joystick' was not declared in this scope Joystick[joystickId].pressButton(button);C:\Users\Charles\Documents\ArduinoJoystick\MultipleJoystickTest\MultipleJoystickTest.ino: I...

    see more »

    Matthew,I downloaded the "Multiple Joystick Test" from GitHub and installed the Joystick library. It shows up in my list of libraries. When I try to compile for Leonardo, I get the messages: "MultipleJoystickTest:14: error: 'Joystick_' does not name a type Joystick_ Joystick[JOYSTICK_COUNT] = {C:\Users\Charles\Documents\ArduinoJoystick\MultipleJoystickTest\MultipleJoystickTest.ino: In function 'void testSingleButtonPush(int, unsigned int)':MultipleJoystickTest:36: error: 'Joystick' was not declared in this scope Joystick[joystickId].releaseButton(button - 1);MultipleJoystickTest:40: error: 'Joystick' was not declared in this scope Joystick[joystickId].pressButton(button);C:\Users\Charles\Documents\ArduinoJoystick\MultipleJoystickTest\MultipleJoystickTest.ino: In function 'void testMultiButtonPush(int, unsigned int)':MultipleJoystickTest:52: error: 'Joystick' was not declared in this scopeWhat could be wrong?

    View Instructable »
  • Add USB Game Controller to Arduino Leonardo/Micro

    I'm a newbie as well. I have my board set up as a Leonardo, yet I get the message 'Joystick was not declared in this scope'.I put the files you mentioned in the PROGRAM FILES(x86)\Arduino\hardware\arduino\avr\cores\arduinofolder (I had to rename them so they matched the names you gave them - since during the download, the names were changed). One thing that could be an issue: My Arduino files are in several locations on my hard drive. I can find no guide as to where everything should be in order to insure that all the various sketches and libraries are found by the IDE.I need 8 ANALOG channels and no buttons. I also cannot find any documentation on where to connect the potentiometers for the various channels. Is that somewhere?

    View Instructable »
  • Simple Dc to Ac Inverter Make

    I'm a bit confused. The schematic shows 2N2222s and IRF630's. The picture shows two TIP31's and no FETs or 2N2222s.Although not shown in the diagram, the wires running between the collectors of the 2N2222s and the 680 Ohm resistors must be connected to the wires that run between the FET gate and the 2.2uF capacitors. Finally, some transformers may have characteristics that cause the voltage spikes at the Drains of the FETs to go higher than the 200V limit of the IRF630 (especially with a minimal or no load). A couple of 150V TransZorbs connected between each Drain and GND would help protect the circuit.

    View Instructable »
  • Connecting GPS-module to Arduino

    I included the softserial library and tried to compile. I get the following errors.Can you tell me what I am doing wrong?sketch_nov14b.ino: In function 'String checkGPS()':sketch_nov14b:47: error: ambiguous overload for 'operator=' (operand types are 'String' and 'char')sketch_nov14b.ino:47:18: note: candidates are:In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:26:0, from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26, from C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.h:36, from sketch_nov14b.ino:2:C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: String& String::operator=(const String&) <near match> Stri...

    see more »

    I included the softserial library and tried to compile. I get the following errors.Can you tell me what I am doing wrong?sketch_nov14b.ino: In function 'String checkGPS()':sketch_nov14b:47: error: ambiguous overload for 'operator=' (operand types are 'String' and 'char')sketch_nov14b.ino:47:18: note: candidates are:In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:26:0, from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26, from C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.h:36, from sketch_nov14b.ino:2:C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: String& String::operator=(const String&) <near match> String & operator = (const String &rhs); ^C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: no known conversion for argument 1 from 'char' to 'const String&'C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: String& String::operator=(const char*) <near match> String & operator = (const char *cstr); ^C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: no known conversion for argument 1 from 'char' to 'const char*'C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: String& String::operator=(const __FlashStringHelper*) <near match> String & operator = (const __FlashStringHelper *str); ^C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: no known conversion for argument 1 from 'char' to 'const __FlashStringHelper*'In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:24:0, from sketch_nov14b.ino:9:sketch_nov14b:59: error: converting to 'String' from initializer list would use explicit constructor 'String::String(int, unsigned char)'ambiguous overload for 'operator=' (operand types are 'String' and 'char')

    View Instructable »
  • Tennis Balls in a Bottle (How-to!)

    It might work to put some water into the bottle, then drop in a couple of Alka-Seltzers and turn the bottle over.

    View Instructable »
  • How to Make The Best Homemade Stylus Ever Made!

    What is the best conductive fabric, and where can I buy some?

    View Instructable »
  • DIY mini Amplifier using TDA2822

    The 10 ohm resistor (R1) will severely limit output power, and even if you do wish to limit power that way, I would recommend moving C1 so it connects between pin 2 (Vcc) and GND. Doing so will reduce distortion.

    View Instructable »
  • charleslinquist commented on Tetranitrate's instructable Nitrogen Triiodide 3 years ago
    Nitrogen Triiodide

    I found that the best way to make NI3 is to dissolve the iodine in a solution of potassium iodide and water. Then add ammonium hydroxide and filter the precipitate. After initial filtering, I added more pure ammonium hydroxide to wash away any other byproducts. It is possible water would have worked as well, but I never tried that.I made this in high school. I kept the wet substance in a plastic pill-bottle (Excedrin) with a snap on cap. There were no problems as long as I kept it wet. I put a tiny amount on the "lead" end of a pencil and pulled the pencil back with a fingerand let it go while holding the eraser end of the pencil in my other hand. This caused the tiny blob of NI3 to hit the floor with enough force that it split into hundreds of almost invisible particles. Th...

    see more »

    I found that the best way to make NI3 is to dissolve the iodine in a solution of potassium iodide and water. Then add ammonium hydroxide and filter the precipitate. After initial filtering, I added more pure ammonium hydroxide to wash away any other byproducts. It is possible water would have worked as well, but I never tried that.I made this in high school. I kept the wet substance in a plastic pill-bottle (Excedrin) with a snap on cap. There were no problems as long as I kept it wet. I put a tiny amount on the "lead" end of a pencil and pulled the pencil back with a fingerand let it go while holding the eraser end of the pencil in my other hand. This caused the tiny blob of NI3 to hit the floor with enough force that it split into hundreds of almost invisible particles. The particles were small enough that they would dry within a minute or so. Then anyone walking across the floor would hear this snap, snap, snap everywhere they went. I also put a pea-sized piece on some paper and threw it into a waste basket. About an hour later, a teacher threw another paper into that wastebasket. BOOM! It was so loud that everyone in the school heard it. I was nearly expelled.But the other writers are correct. This stuff will explode with the slightest provocation when dry. It will even explode if warmed by the sun (such as on a window-sill). It cannot be used safely for anything. I made a whole Excedrin bottle full and kept in my pocket for days. I am lucky that nothing really bad happened. My belief is that you would be safer making nitroglycerine.

    View Instructable »