10

If you're using MPU6050 IMUs, there's an easy trick: put them all on the I2C bus, and connect each IMU's AD0 pin to a separate digital pin on the Arduino[*]. When you want to read from a specific IMU, set all AD0s to HIGH, except the one you want to read to LOW. All the IMUs with AD0 set to HIGH with have an I2C address of 0x69, whereas the only one on LOW ...


7

Just as a complement to Paul's answer, I wrote a short program to show how to drive the 7-segment 4-digit display of his figure: This is actually a common cathode display, so the program assumes that, as well as the particular wiring of the figure. The interesting part is the refresh_display() function, which should be called periodically. The algorithm is ...


5

I'll try and take you through the complete basics of LED's etc. As 4-digit 7-segment displays are a combination of multiple "LED techniques". Wiring LED's LED's, or Light Emitting Diodes, are one of the fun things of Arduino. Essentially, they're easy to use, power them up and they'll light up. They can be annoying, because they have some kind of ...


5

You're using a 16-channel analog multiplexer to talk to your devices (the LED ropes) via a single pin on your Arduino. "Multiplexer" is just a fancy name for a switch; "analog" means that it's switching analog connections, basically, wires that can have any voltage on them, as opposed to digital connections that carry only logic high (usually +5 volts) or ...


4

First of all, may I say "Thank you" for helping your friend like that? I cannot think of a better way to use an Arduino than as a driver for a Braille display like you describe! As you know, Braille is a representation of characters into a "shape" that many systems don't recognise. Most people only encounter Braille when they press a button on an elevator ...


4

Each character will be 6 bits (so let's use a byte to store it) and we'll use the following bit to LED mapping bit0 bit1 bit2 bit3 bit4 bit5 Now you just need an array of bytes where each byte signifies an ASCII character. Your code will get the letters to display and for each one will do something like this: byte BrailleBytes[] = {0x01, 0x05, 0xD, ...


4

Only the Arduino Uno has a socketed IC chip. All the rest are using soldered SMD ICs.


4

Almost, you will need two 74157 (or similar chips) to switch 8 pairs of TTL level logic signals down to 8 individual signal.


4

After reading your github page, I came to realize that: you do not require full color control, but only setting the strips to full red or full blue you are using MOSFETs for driving them. Given these conditions, I believe the project may be feasible with your current setup. The trick is that MOSFETs have some gate capacitance: if you set the gate either ...


3

The micro only has one SPI bus. It is SCK/MISO/MOSI. You may want a second one, but you don't have one. You can't magic one up out of thin air. You could emulate one in pure software (bit-banging) but it won't be anywhere near as efficient as using a real hardware one. Why do you feel you need to have two independent buses anyway? What are you wanting to ...


3

(Digital) Pins 0 and 1 are used by the hardware serial port you initialize with Serial.begin() on a classic Arduino like an Uno. With this type of board it is generally best not to use those for any other purpose; if you do, you have to accept that you cannot use the hardware serial for input or debug/status output. Even if you don't want to use serial ...


2

The ultimate solution would be to build it yourself! Arduino has an excellent step by step guide on how to build a standalone Arduino, using a ATMega328, on a breadboard. Now everything is removable, not just the chip. Note that there is one slight error in the guide, which I have highlighted here, Arduino Standalone - photo shows incorrect pin wired to ...


2

You could get an ATmegaXX8 target board from Evil Mad Scientist. That has (or can have) a ZIF socket so you can easily remove the chip without bending its legs. That's around $US 3 for the board, $2 for the ZIF socket, $1 for the crystal, 45 cents for the ICSP header. You can put an Atmega328P into the socket (same chip as on the Uno). Note that some ...


2

I have a post about that chip at 74HC4051 multiplexer / demultiplexer. I made up the circuit shown on my page above with modifications as described below: I moved the A/B/C and O/I pins to match your code. A is the low-order bit so pin 11 on the 74HC4051 should go to D2 on the Arduino. 74HC4051 Arduino Meaning 11 D2 A 10 D3 ...


2

You can use shift registers to control the relays. This will only use 3 pins and allow you to use the xbee. For the RGB LEDs you can use the TLC5940 to control 16 channels, so you will need two, giving you 32 channels. This is a PWM chip with serial interface. Considering you will be using the board linked. It is driven by transistors, so you can use the ...


2

I've copied and slightly modified your diagram, as below. Note the added connections of R1, R3 cathodes to that of R2, and similarly for green and blue LEDs. simulate this circuit – Schematic created using CircuitLab I'm supposing that unlike the original diagram, this one represents what you actually wired up. A basic problem with your program is ...


2

The code instantiates two instances of the SevSeg class. This may or may not work. Really depends on if the class uses any resources are not meant to be shared between multiple instances of that class. For instance, it is unlikely that one hardware timer can be used for more than one purpose at a time. But the code continues on to use the same (anode) ...


2

According to the analogWrite() documentation, apparently the trouble are that you have swapped the args. The syntax are analogWrite(pin, value), so, the piece //read the value at the SIG pin analogWrite(testValue, SIG_pin); may work if you simply change to //read the value at the SIG pin analogWrite(SIG_pin, testValue); That with respect to code, ...


2

The INT is the interrupt signal, usually open-drain output and you can connect many of them to the single MCU interrupt line (but you have to check all devices which ones are ready). The LOW level from MPU device signalize that data are ready (conversion was finished). So you don't have to periodically read status register to find it out (no polling is ...


2

The whole point of a multiplexer is to only connect ONE channel at a time to the input. It is designed to send many different signals through one wire by time sharing. Normally data in some form is send, and not the direct control current of a simple load. So you will not be able to drive more than one channel at a given time. You can cycle very fast ...


1

You can also get I2C Multiplexers such as the TCA9545A that can split one I2C line into 4 buses. I have connected up to 9 MPU9150 on one line with that.


1

The 4051s are only useful, for your potentiometers. For leds, I'd use shift-registers. For buttons you could use input-shift-registers. Though there are better options. E.g. chips that can scan a matrix of buttons, or chips that send you an interrupt, if one of the buttons is pressed (so you don't have to constantly poll the button states. As to the ...


1

I have no experience of this chip but I would guess that you would need to connect the child level multiplexer to the output of the parent and use the outputs to drive the address lines. You could look at an MCP23008 or MCP23016, these are 8 and 16 bit GPIO expanders that you control via I2C. You can have 8 of the MCP230008 (64 pins) before you need to ...


1

1) Use the I2C address select inputs as an "enable". If you run out of I/Os before running out of bus time, drive the enables from an I/O expandander. If your accelerometers are SPI, drive or use the expander to drive the chip selects. 2) Use a tree of slave MCUs (Arduino or otherwise) reading a number of accelerometers, extracting and batching the useful ...


1

First of all a reference is just a voltage, not a range. If you use a reference of say 5V than your analogRead(...) calls will return a 10 bit number where 0 stands for 0V and 1023 stands for 5V. Second, the AREF pin is there for that purpose: feed your 2.5V reference to that pin and use: analogReference(EXTERNAL); analogRead(...); when you want to read ...


1

Analog multiplexers are not a good design choice for switching digital signals. You should instead choose a digital solution. Maybe the 74HC138 would be a better choice? That's a 3-to-8 decoder with 3 enable inputs. You could use 9 of them to reduce pin usage on the Arduino, or 8 of them if you have pins to spare. One of the enables on the first-stage ...


1

The MCP23017 gives you 16 extra real IO pins. Each one has facilities such as pull-up resistors, change notification interrupts, etc - the kind of things that you expect from real IO pins. You can read and write to all of the pins. A multiplexer though just feeds signals through to the existing pins. They're pretty dumb. Only the signal that is currently ...


1

Your concept sounded sensible enough so I gave it a try-out. First point is: The master always generates the clock so we don't need to multiplex that. We only need to multiplex the data (SDA). Code snippet: // the multiplexer address select lines (A/B/C) const byte addressA = 6; // low-order bit const byte addressB = 5; const byte addressC = 4; // high-...


1

The DS18B20 is a 1-Wire device and doesn't require a multiplexer, each device has its own address on the bus and you can connect a lot of them with a single wire. Depending on the humidity sensor you pick you may be able to use the same bus for it as well. It is harder to find 1-Wire humidity sensors, but you could use a DS2438 Smart Battery Monitor which ...


1

Which means, analog connections. Nope. It means PWM. How would you control the brightness of a single LED? By generating a PWM signal with: sufficiently high frequency to not be able to notice the flickering; duty cycle proportional to the brightness you want/need, where 100% is full brightness, and 0% is OFF You only have to do that for each colour of ...


Only top voted, non community-wiki answers of a minimum length are eligible