3

The TIP120 is possibly the worst transistor you could choose for this job. It is a Darlington Pair transistor, and those have a (relatively) massive forward drop of between 2 and 4 volts. It works with the LED because an LED needs a tiny amount of current to operate compared to the motor and has a fixed forward voltage of its own. The motor doesn't, and is ...


2

The problem is repeat: if(digitalRead(ProxSensor==LOW)) goto repeat; ProxSensor==LOW is false so 0. you read the pin 0 and the outcome is random. The surrounding wiring can affect that. If digitalRead(0) is zero the wav starts playing immediately again. At least use while (digitalRead(ProxSensor) == LOW);


1

This is just a partial, rushed answer. You should be able to get a significant speed-up if you define your own ISR for handling the interrupt, as in: ISR(INT1_vect) { ... } The Arduino way of using interrupts is instead void trigger() { ...} void setup() { attachInterrupt(int_number, trigger, CHANGE); ... } but this is slow, as it involves the ...


1

As usual with programming, there are many solutions, for example: You can use a bitmask, put 4 variables in an array with binary values 1000, 0100, 0010 and 0001 and when the switch is pressed, you store the value into each LED pin by comparing the value. However, a more simpler solution is just use a counter from 0 to 4, if the value is 1, the first LED ...


1

I added pull-up resistors to the board and it started working. Turns out that the boards weren't well designed and the I2C lines were pulled up to 1.8V instead of Vin. By removing the pull-ups and adding pull-ups to Vin, the circuit started functioning. The circuit worked with Mega because it has in-built Pull-up Resistors.


1

The Serial output on an Arduino is quite slow. By printing your output, you will slow down the readings so much that it will appear to be nonsense. You should collect a series of readings into a C array of floats in RAM, stop recording, and then log that array of values. Note that you don't have a lot of RAM to work with on most Arduinos, so you will only ...


1

Your first decision is to figure out the heat load on the space. How many BTU/hr you need to remove to keep the temperature you want. Then figure out how large / how many Peltier you need to remove that much heat. Do you need some reserve capacity for unusual circumstances or is a higher inside temperature Ok sometimes? Then you need a power budget - how ...


1

The limitation is purely in software. The I2C hardware has a limit of one byte at a time, and the software creates a 32 byte buffer and feeds each byte from that in turn. While it would be perfectly possible to increase that buffer size, you may find you have other problems when you get above 255 bytes, since lots of parameters and internal variables for ...


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