Определение аппаратных выводов Arduino

Если у Вас возникли трудности с определением выводов вашей arduino (SPI, I2C, АЦП, ШИМ), загрузите следующий скетч и запустите монитор последовательного порта.

#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) -1
#endif
#ifndef digitalPinHasPWM
#define digitalPinHasPWM(p) -1
#endif
void setup(){
  Serial.begin(9600); while(!Serial){;}
  Serial.println("IARDUINO.RU");
  Serial.println((String) "=======================================\r\nSPI BUS:\r\n\tCS:   " + SS + "\r\n\tMOSI: " + MOSI + "\r\n\tMISO: " + MISO + "\r\n\tSCK:  " + SCK);
  Serial.println((String) "---------------------------------------\r\nI2C BUS:\r\n\tSDA:  " + SDA + "\r\n\tSCL:  " + SCL);
  Serial.println((String) "---------------------------------------\r\nDIGITAL PINS:\r\n\tAll:  " + NUM_DIGITAL_PINS + " pins (D0-D" + (NUM_DIGITAL_PINS-1) + ")\r\n\tI/0:  " + (NUM_DIGITAL_PINS-NUM_ANALOG_INPUTS) + " pins (D0-D" + (NUM_DIGITAL_PINS-NUM_ANALOG_INPUTS-1) + ")");
  Serial.println((String) "---------------------------------------\r\nANALOG INPUTS:\r\n\tAll:  " + NUM_ANALOG_INPUTS + " pins (A0-A" + (NUM_ANALOG_INPUTS-1) + ")"); for(uint8_t i=0; i<NUM_DIGITAL_PINS; i++){if(analogInputToDigitalPin(i)>=0){Serial.println((String) "\tA" + i + (i<10?" ":"") + " = D" + analogInputToDigitalPin(i));}}
  Serial.print("---------------------------------------\r\nPWM OUTPUTS:\r\n\tAll:  "); for(uint8_t i=0, j=0; i<NUM_DIGITAL_PINS; i++){if(digitalPinHasPWM(i)>=0){j++;} if(i>=NUM_DIGITAL_PINS-1){Serial.println((String) j + " pins");}} for(uint8_t i=0; i<NUM_DIGITAL_PINS; i++){if(digitalPinHasPWM(i)>=0){Serial.println((String) "\tD" + i);}}
  Serial.print("---------------------------------------\r\nINTERRUPT INPUTS:\r\n\tAll:  "); for(uint8_t i=0, j=0; i<NUM_DIGITAL_PINS; i++){if(digitalPinToInterrupt(i)!=NOT_AN_INTERRUPT){j++;} if(i>=NUM_DIGITAL_PINS-1){Serial.println((String) j + " pins");}} for(uint8_t i=0; i<NUM_DIGITAL_PINS; i++){if(digitalPinToInterrupt(i)!=NOT_AN_INTERRUPT){Serial.println((String) "\tD" + i + (i<10?" ":"") + " = int_" + digitalPinToInterrupt(i));}}
}
void loop(){
}

В мониторе последовательного порта будут выведены номера выводов шин SPI и I2C, количество цифровых выводов, количество и нумерация аналоговых входов, количество и нумерация выводов с ШИМ, количество и нумерация выводов аппаратного прерывания, для Вашей arduino.

Пример монитора последовательного порта для arduino Uno:

Определение аппаратных выводов Arduino

  • В разделе "SPI BUS" указаны номера выводов шины SPI
  • В разделе "I2C BUS" указаны номера выводов шины I2C
  • В разделе "DIGITAL PINS" указано общее количество цифровых выводов (с учётом выводов поддерживающих аналоговый вход) и количество выводов I/0 (не поддерживающих аналоговый вход)
  • В разделе "ANALOG INPUTS" указаны номера всех аналоговых входов. Аналоговые входы могут работать с функциями: pinMode(), digitalWrite(), digitalRead(), как цифровые выводы, по этому напротив каждого аналогового номера указан соответствующий ему цифровой номер вывода.
  • В разделе "PWM OUTPUTS" указаны номера цифровых выводов, которые поддерживают выход ШИМ
  • В разделе "INTERRUPT INPUTS" указаны номера цифровых выводов, которые могут быть использованы в качестве внешнего аппаратного прерывания

Обсуждение

Присоединяйся

На главную