If you are using the Arduino or compatible development platform, you will need to download and install a new Wire library. The new library will disable internal pullups when using stickyBUG modules. Do not worry though, it is 100% compatible with all of your current Arduino projects and only disables internal pullups when it detects a stickyBUG library is being used.
If you are using the chipKIT development platform, you will need to download these two libraries which add interrupt driven, buffered SoftwareSerial capability to some of the sample files. These are great libraries and worth installing whether you use stickyBUG or not. You need to install and download both libraries for the new software serial library to work.
All stickyBUGs plug into a stickySHIELD, which manages all power requirements for each stickyBUG and also ensures that input and output levels are correct for every device. For example, when connecting an SD card to an Arduino, you normally need to ensure that the 5.0v pins of the Arduino are level shifted to 3.3v to prevent the SD card from being damaged. Conversely, if connecting a 5.0v peripheral to a 3.3v chipKIT UNO or Firewing board, you need to ensure the levels are correctly shifted to 3.3v. The stickySHIELD does all this automatically - you do no need to worry about 3.3v and 5.0v interfacing!
The stickySHIELD 3.3v rail is capable of supplying around 280mA but because it is derived from the 5.0v rail supplied by the underlying board, it will be limited by that. Obviously the sum of the 5.0v and 3.3v current requirements must be capable of being supplied by the underlying Arduino (or compatible) main board. The stickySHIELD has been designed with ground plane and optimised powerline tracking to limit ground loop or power line voltage drops, ample power rail capacitance is provided to cope with any power transient requirements and to guarantee power rail noise immunity.
The use of very low profile sockets on the stickySHIELD means that you can stack stickySHIELDs on top of each other. Some stickyBUGs have high profiles, such as the segmentBUG, which means you can not stack another shield on top. Some stickyBUGs have headers, such as the motorBUG or servoBUG. If these are installed, you won't be able to stack. The good news is that we can supply these BUGs without the headers installed. This means that you can use an alternative connection mechanism (for example, direct wiring to an external header) which will enable you to stack these types of stickyBUG.
But is it possible to stack other, third party shields on top of a stickySHIELD? The answer is yes! However, there are a few points you need to be aware of before attempting to stack a third party shield on top of a stickySHIELD:
- make sure there are no components on the underside of the shield which would make contact with any underlying stickyBUGs
- make sure any solder joints or tabs on the underside of the shield should not make contact with any underlying stickyBUGs
- make sure that the shield you are using does not use any pins that are currently in use by any stickyBUGs.
The third point above is probably the trickiest to ascertain. That is, which pins can I use? Well, take a look at this drawing. Any pins marked as GPIO are never used by the stickySHIELD, so you are free to use them at any time. Pins that are marked with a dot have pullup resistors and should not be normally used at any time1. All other pins can be used, depending on what stickyBUGs are currently being used. Here is a summary of what pins can and what pins cannot be used when stacking third party shields on top of a stickySHIELD:
- any pin marked as GPIO can be used at any time for any purpose.
- pins marked with a dot should never be used for general IO at any time by a third party shield
- if the stickySHIELD is using I2C, then your third party shield can share the stickySHIELD I2C bus
- if the stickySHIELD is using SPI, then your third party shield can share the stickySHIELD SPI bus - however, you should make sure that any CS lines used by the third party shield are not being used by the stickySHIELD.
- if the stickySHIELD is not using SPI, then your third party shield can use D11 and D13 for general IO
- if Tx1Rx1 are not being used by the stickySHIELD, then your third party shield can use D0 and D1 for general IO
- if Tx2Rx2 are not being used by the stickySHIELD, then your third party shield can use D3 for general IO.
- if the stickySHIELD is not using D7, D8, D9, D10 for any Chip Select (CS) tasks, your third party shield can use the pins for general IO.
1If a line has a pullup resistor connected to it, you can make the line go high or low by setting a pin to input (line will be high) or output low (line will be low). However, you should never drive it output high as this may damage 3.3v sensitive devices connected to the line. If you are unsure about driving a line open drain, it's best to avoid using the line altogether.