모든 핀을 디지털 I / O로 사용


11

디지털 핀 수 증가

다양한 아두 이노에서 표준 핀 이상을 사용하는 방법을 설명하는 게시물이 많이 있지만 그중 어느 것도 한계와 예언을 올바르게 설명하지 않습니다.

여기에 이미지 설명을 입력하십시오

아두 이노 우노 :

1. 아날로그 핀을 사용할 있습니다

Pin 14 = Analog in 0
Pin 15 = Analog in 1
Pin 16 = Analog in 2
Pin 17 = Analog in 3
Pin 18 = Analog in 4
Pin 19 = Analog in 5

digitalWrite(14,HIGH);
or
digitalWrite(A0,HIGH);

2. SDA, SCL & A4, A5는 기본적으로 동일하므로 사용할 수 없습니다 (18,19).

3. TX / RX를 사용할 수도 있습니다.

"그렇지 않으면 직렬 통신이 끊어집니다 ..."

"핀 0과 1을 사용하지 마십시오"

"TX / Rx 핀을 사용할 수 없습니다"

할 수는 있지만 예방 조치를 취해야합니다. 어느 것?

USB를 통한 소프트웨어 시리얼이 있어야합니까?

아니면 USB 직렬을 끊습니까?

TX / RX를 사용하면 내부 칩 문제가 있습니까?

코드에서 TX / RX 핀을 사용할 때 아마 사용하지 않아야 Serial.print()합니까?

Serial.print()핀 0,1을 사용하는 코드를 업로드 한 후 제거하는 것을 잊어 버리면 어떻게됩니까 ?

문제가 발생하면 arduino / bootloader를 하드웨어로 재설정하는 방법은 무엇입니까?

다른 칩을 사용하는 다양한 다른 Arduino가 있으므로 위의 모든 Atmel 칩에 유효합니까?

그렇다면 TX / RX 또는 다른 아날로그 핀을 사용하기 전에 무엇을 알고 있습니까?

저렴한 시프트 레지스터, pwm 드라이버, led 드라이버, spi, i2c 및 더 많은 IC로 I / O 확장


그러나 큰 문제가 없다면 arduino에 20 개의 I / O 핀이 있음을 의미합니다 ...

이론적으로 제어 할 수 있습니다.

17x3 = 51 = 17 RGB leds (multiplexing, pwm sourcing&sinking);
14x6 = 84 leds (multiplexing, pwm on 6 rows/colums );
10x10 = 100 leds (multiplexing, high low);
20x(20-1) = 380 leds (charlieplexing, high low);
// yes it would flicker

틀 렸으면 말해줘. 즉, 다이오드와 하나의 arduino를 사용하여 380 개의 "Whatever"를 제어 할 수 있습니다.

답변:


8

주요 문제는 핀 0과 1입니다.

많은 핀에는 A4 및 A5와 같은 여러 기능이 할당되어 있습니다 (예 : A2C 핀도, 핀 10/11/12/13도 SPI 핀 등). 그러나 핀 0과 1은 실제로 유일한 다기능 핀입니다. 그것들을 칠판에 붙입니다.

다른 모든 핀은 다기능이지만 기본적으로 부착 된 기능에 따라 기능이 정의됩니다. 핀 0과 1은 보드의 USB 인터페이스 칩에 이미 연결되어 있으므로 사용 가능성이 다소 제한적입니다.

  • 스케치 ( Serial.begin()) 에서 직렬을 활성화하면 이 두 핀을 더 이상 디지털 IO에 안정적으로 사용할 수 없습니다.

당신이 할 수있는 것을 의미 중 하나 는 하드웨어 직렬 포트를 사용 또는 디지털 IO의 핀을 사용하지만 둘 수 있습니다.

  • 핀 0과 1에 연결된 장치는 직렬 연결을 방해 할 수 있습니다

여기에는 스케치 업로드가 포함됩니다. PC에서 직렬 데이터가 들어오는 동안 동일한 핀이 연결된 다른 핀의 영향을받습니다. 가장 일반적인 것은 이러한 핀에 연결하고 지속적으로 직렬 데이터를 보내는 GPS 모듈과 같은 것입니다. 해당 직렬 데이터는 PC의 직렬 데이터와 충돌하며 어느 것도 올바르게 도착하지 않습니다.

  • 스케치가 일련 번호를 방해하는 경우 스케치를 어떻게 업로드합니까? 보드를 어떻게 "재설정"합니까?

당신은하지 않습니다. 직렬을 방해하는 것은 스케치가 아니라 방해하는 두 개의 IO 핀에 물리적으로 연결된 것입니다. 연결된 두 핀에서이 두 핀을 분리하면 스케치를 다시 업로드 할 수 있습니다. 많은 쉴드는 이제 핀을 분리하기 위해 작은 스위치를 추가하기 시작하여 쉴드를 분리하지 않고도 스케치를 업로드 할 수 있습니다. 또한 핀에 연결하는 다른 장치와 동일한 트릭을 사용할 수 있습니다. 이중 극 단일 던지기 또는 이중 극 이중 던지기를 추가하고 (한 위치를 사용하지 않음) 두 핀을 나머지 핀과 쉽게 분리합니다. 필요할 때 하드웨어.

  • 이것이 모든 Arduino 보드에 영향을 줍니까?

아니요, USB- 직렬 브리지 칩을 사용하는 사람-Uno, Due, Mega 등-직접 USB 연결이있는 보드는 스케치 업로드에 TX 및 RX 핀을 사용하지 않습니다-전용 USB를 사용합니다 D + 및 D- 핀. 그것은 레오나르도 같은 보드, 더 작은 (미니? 마이크로? 어떤 것을 잊어 버리는) 보드 등의 보드입니다.


"많은 방패가 작은 스위치를 추가하기 시작했습니다." 마이크로는 "USB to Serial bridge chip"을 가지고 있습니까? 그것은 uno에서 핀 0,1을 사용할 수는 있지만 마이크로에서는 사용할 수 없다는 것을 의미합니까?
cocco

USB- 직렬 브리지가없는 곳에서 사용할 수 있습니다. Uno는 하나, Mega는 하나, Mini에는 하나가 없지만 TX / RX 핀에 외부를 연결하여 프로그래밍해야합니다. 그것들은 모두 밖에 있습니다. 마이크로와 레오나르도에는 하나가 없으므로 사용할 수 있습니다.
Majenko

@Nick Gammon이 무슨 말을하는거야? Uno와 다른 사람들은 풀업 저항을 사용하여 핀 0과 1을 올바르게 사용할 수 없지만 마이크로에는 풀업 저항이 없으므로 핀 0과 1은 제대로 작동하며 USB는 새로운 스케치를 업로드합니까?
cocco

일단 Nick은 그 점에서 착각했습니다. 풀업 저항이 없습니다. 메인 MCU와 USB 칩이 동시에 동일한 라인을 반대 레벨로 구동하려고 할 때 문제를 방지하기 위해 작은 인라인 저항 쌍이 있습니다. Uno 회로도에서 RN4A 및 RN4B로 볼 수 있습니다.
Majenko

USB 칩이 RX 핀을 구동하려고 시도하는 경우 (USB 포트가 연결되어 있고 직렬 연결을 열었거나 확실하지 않은 경우) RX 핀의 전압에 영향을 줄 수 있습니다. 스케치 작업을 수행 중이므로 찰 리플 렉싱과 같은 작업에 해당 핀을 사용하는 것이 안전하지 않을 수 있습니다.
Majenko

1

평판이 충분하지 않아서 댓글을 달 수 없지만 OP 핀아웃에 하나 이상의 핀이 잘못되었음을 알려고합니다.

PB6은 PB5 여야합니다

왜 SCK on scope (SPI 버스)을 볼 수 없는지 알아 내려고 많은 시간을 보냈습니다. 나는 IDE가 아닌 저수준으로 일하고 있었다.

이것은 인터넷 검색시 나타나는 첫 번째 사진이므로 다른 사람들과 같은 문제를 피하고 싶었습니다 ...


0

20x (20-1) = 380 개의 LED (찰 리플 렉싱, 높음 낮음); 틀 렸으면 말해줘. 즉, 다이오드와 하나의 Arduino를 사용하여 380 개의 "Whatever"를 제어 할 수 있습니다.

먼저, 380의도 20 개의 핀 (20 정확한지 2 가 0V에서 실제로 결코 있도록하지만 핀 0과 1이 Atmega16U2상의 풀업 저항에 접속된다 - 20). 빈 스케치를로드하면 핀 0과 1에서 5V를 측정합니다.

둘째, Charlieplexing을 통해 380 개의 LED 를 구동 할 수있는 380 개의 "무엇이든"을 구동 할 수 없습니다 . 전류가 한 방향으로 만 흐르는 LED의 특성은 작동 방식에 중요합니다.

관련 질문 arduino에 14 개 이상의 출력 핀을 갖는 방법이 있습니까?


첫째 : 핀 0과 1에 2 개의 LED를 뒤집어 놓고 (저항 포함) 핀 0 하이 핀 1 저 지연 1 초를 설정하고 핀 0 로우와 핀 1 고 지연 1 초를 설정하면 어떻게됩니까?
cocco

둘째 : "무엇이든"이란 스위치 ... 클릭 스위치, 리드 스위치, 센서 또는 높은 저음을 지원하는 모든 유형의 입력 출력 조합을 의미합니다. electronicdesign.com/site-files/electronicdesign.com/files/… 다이오드 사용.
cocco

글쎄,별로. Charlieplexing은 멀티플렉싱의 한 형태이므로 스위치가 미친 것처럼 클릭하지 않으면 실제로 작동하지 않습니다. 그리고 그것은 출력 상황이므로 생각하는 것처럼 입력을하지 않을 것입니다. 다른 링크를 읽으십시오. 시프트 레지스터 또는 포트 익스팬더는 여기서 Charlieplexing보다 더 실용적입니다.
Nick Gammon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.