The Stack Overflow podcast is back! Listen to an interview with our new CEO.

Hot answers tagged

15

digitalWrite will set the specified pin to one of two states - HIGH/LOW, which equate to 5v (3.3v on some boards) and ground respectively. analogWrite can vary by the type of output used. If applied to a PWM pin - it will set the pin to a periodic high/low signal, where the percentage of the signal spent high is proportional to the value written. for ...


8

The Analog pins are essentially identical in functionality to digital pins when used as digital I/O. If desired you could "be clever" and use an analog input in analog mode to read multiple keys using one pin. eg using 10k, 22k, 39k, 82k, 150k in series with 5 buttons from V+ to pin and a say 4k7 to ground would result in 5 voltages which were easily ...


6

The analog pins function as digital pins number 14 - 19, with 14 being A0 and 19 being A5. I had hooked it up backwards. This time we're gonna get funky Everybody check your pins Check check check check your pins Check check check check your pins


6

I helped someone with a similar question. The results are in my github repo at https://github.com/linhartr22/count. This example uses the PWM library and includes a reference to the article I used to learn how to convert audio files to MP3 with proper settings for the PWM libary. It plays audio through an 8 ohm speaker or a piezo buzzer connected directly to ...


6

analogWrite(): The analogWrite() method sets the value of a PWM output pin. The analogWrite() is on a scale of 0 - 255, such that analogWrite(255) requests a 100% duty cycle (always on), and analogWrite(127) is a 50% duty cycle (on half the time). Syntax: analogWrite(pin, val) Where, pin: the PWM output pin number. val: int value of duty cycle between ...


6

You have set Pin 2 to HIGH, which is 5V. You have set Pin 4 to INPUT_PULLUP, which means if no signal is driving it, it will be HIGH. You have connected a button between Pins 2 and 4. So, if you don't press the button, the input is pulled HIGH. And if you do press the button, Pin 2 is driving it HIGH.


5

Digital inputs should either be low or high. In this image acceptable input voltages on the left represent common TTL voltages based on a 0 to 5 volt range: It is bad practice to leave a digital input floating. A floating or disconnected input implies the voltage is unknown. I suspect in your case a small amount of input capacitance held a charge for ...


5

digitalWrite sets the output pin to either LOW or HIGH (where those voltages depend on the Vcc of the processor. For a Uno or Mega that would be 0V or 5V (or close to it). Here's a screenshot of digitalWrite (LOW): That is, the output pin is at 0V. Now for digitalWrite (HIGH): The output voltage is 5V. analogWrite really should have been named PWMwrite ...


5

I would connect each of the IC's IO pins to both a digital output and a digital (or analog) input of the Arduino, like this: simulate this circuit – Schematic created using CircuitLab Drive each pin with the digital output, alternatively LOW and HIGH. While doing this, read the pin voltage through your input: If the IC pin is an input, you will have ...


5

LVTTL is Low Voltage Transistor-Transistor Logic. In general, the term "TTL" is used for a digital signal. The "Low Voltage" part is special, the ATmega32U4 switches from low to high (and vice versa) at low voltages. Just as it is written. For example, when the ATmega32U4 runs at 5V, then: VILmax = 0.2 * 5 - 0.1 = 0.9 V. VIHmin = 0.2 * 5 + 0.9 = 1.9 V. ...


4

Let us say we have a number, "4025". The "most significant digit" of the number is the 4 in the thousands position, since it tells us the most about the magnitude of the number ("in the four thousands"). Consequently, the "least significant digit" is the 5 in the units position, since it tells us almost nothing about the magnitude of the number. "Most/least ...


4

The PCMAudio example shows how to play audio data via PWM. Note that you will need to access the MCU at a low level in order to do this; the Arduino libraries don't provide enough control over the hardware.


4

See What happens when code is uploaded using the bootloader? - the flashing is by design. Probably the reason is to confirm that the bootloader has started.


4

Yes, the ports of an Uno are addressed in C/C++ as PORTB, PORTC, and PORTD respectively, each 8 bits wide. You can read them or assign to them. Other processors' ports have similar names. Of course the pins' port assignments and functions differ from one to the other, which is one reason for providing the single-pin pinMode() and digitalRead(), digitalWrite()...


4

It is likely that the alarm clock does not provide any voltage level (I mean GND) to the buzzer when it does not have to ring, the circuit is just left "open" then; it will provide a voltage level (depending on your clock power supply) only when the alarm has to ring. On the other side, your Arduino pin 8 must have a voltage level that can be mapped to a 0 ...


4

From Arduino reference on delayMicroseonds: Currently, the largest value that will produce an accurate delay is 16383. This could change in future Arduino releases. For delays longer than a few thousand microseconds, you should use delay() instead. Although the reference does not specify further what happens if delay > 16383, a look at the actual code ...


4

I understand Arduino should be somewhat simpler [than PIC]. The whole Arduino platform (boards, core library and IDE) makes it super easy to get started and do simple things. However, if you want to “push the limits” and use the full potential of the MCU, you may have to dig into low-level programming, and this has a steep learning curve. The 250V mains ...


4

pinMode( K1, INPUT ); with if(K1 == LOW && K2 == LOW) makes no sense. K1 is a pin number. LOW is a macro for 0 (HIGH for 1). You are comparing a static pin number against a static number. If K1 is not equal to 0, the inner part of that if statement can never be reached. What you meant to do was "if the voltage at the pin K1 is low". For ...


4

The underlying reason for this question is to figure out whether code like digitalWrite(some_pin, true); digitalWrite(some_other_pin, !digitalRead(some_other_pin)); is a good programming practice. (If LOW and HIGH are there to abstract the user's code form their actual values then code like that is definitely a bad programming practice.) Strictly ...


3

You could always copy and paste: void setup() { pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); } void loop() { digitalWrite(11, HIGH); delay(1000); digitalWrite(11, LOW); delay(1000); digitalWrite(12, HIGH); delay(1000); digitalWrite(12, LOW); delay(1000); digitalWrite(13, HIGH); delay(1000); digitalWrite(13,...


3

(Edit for clarification: I've assumed in this answer that you're asking about the difference between connecting the relay to ground/LOW vs. connecting the relay to nothing at all. I've also assumed by the word "trigger" that your relay has some kind of digital actuation built-in, such as a transistor, or that it's simply a Solid State Relay.) If something ...


3

All the relay boards I've come across are 'active low' i.e. as you've discovered bringing the control pin down to earth activates the relay. As an aside just be careful that the arduino has enough juice to power the relays, a separate supply is normally required if these are coil rather than ssr type relays


3

The answer to your question is basically yes, you can use ATmega I/O pins as +/- power supply terminals for other circuits. But there's a limit to what you can power that way (20mA per pin and 100mA total per ATmega). In practice this means you can only power the simplest circuits (single LEDs per pin, and not many LEDs in total, for example). As a general ...


3

you forgot to add a delay after digitalWrite(devicePin, LOW); #define devicePin 10 void setup() { pinMode(devicePin, OUTPUT); } void loop() { digitalWrite(devicePin, HIGH); delay(2000); digitalWrite(devicePin, LOW); delay(2000); }


3

Using two pins it is possible to drive 4 LEDs as long as you only want one of them on at a time. One LED will always be on - it's not possible to have a setting where there is no output selected. Basically you are "decoding" a binary value output: 00 = LED 1 on, other three off 01 = LED 2 on, other three off 10 = LED 3 on, other three off 11 = LED 4 on, ...


3

I suggest using a single Arduino Mega. It offers 54 digital I/O and 16 analogue inputs. I suppose you could also use I2C or SPI to communicate between multiple Uno's.


3

Power is made up of two values, not one. Besides the voltage there is the current (P=VI), and it's the current you are lacking. A motor needs a large amount of current to start turning (called the stall current) and a digital I/O pin can only supply a relatively small amount (absolute maximum 40mA, recommended maximum 25mA). The power pins though can supply ...


3

I've tested pins 26 (serial), 5 (digital) and 15 (digital) and none output anything. No, the LED doesn't need a resistor ... because I tested it with the 5v and 3.3v therefore higher voltages doesn't blow it up Sounds to me like you have damaged your output pins. Read The care and feeding of LEDs by Mike Cook. The LED may briefly light up, but ...


3

If you need to do more than 8 (especially LOTS more), and timing is very critical, you can use a Serial In, Parallel Out (SIPO) chip, such as the 74HC595 - it also saves a lot of pins on the Arduino. To use it, you need 3 pins connected to the Arduino. You send one bit to the chip from the Arduino for each output, then when you have them all set, you toggle ...


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