Ошибка в коде или аппаратная?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Вчера на занятии, один продвинутый дитенок решил улучшить моргалку светодиодом. Код примерно такой (на память):


void setup(){
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
}

void loop(){
  for( int pin=3; pin<6; pin++)
  {
    for(int val=0; val<251; val++){
      digitalWrite(pin, val);
      delay(15);
    }
    digitalWrite(pin, LOW);
  }
}

Результат: два светодиода из трех нормально плавно включаются и гаснут. А третий (№4) - вспыхивает только в самом конце ярко и сразу тухнет. В чем может быть дело?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

P.S. Было в конце занятия, проверить и что-то поменять сам не успел, а он сказал что пробовал переносить светодиоды на другие пины - результат оказался тем же самым, соответственно он решил что проблема в коде. Я - не вижу, может кто подскажет?

Клапауций 555
Offline
Зарегистрирован: 10.03.2018
10     for(int val=0; val<251; val++){
11       digitalWrite(pin, val);

прекращай употреблять вещества, изменяющие сознание. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Видать, память подводит. Нет у светодиодов никаких причин плавно включаться.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Нет, это у меня уже контроль четности плохо срабатывает. Конечно же там analogWrite() стоял в 11 строке. :)

sadman41
Offline
Зарегистрирован: 19.10.2016

А когда астрологи объявили неделю доступности PWM на D4? Я так надолго моргнул что ли...

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

sadman41 пишет:

А когда астрологи объявили неделю доступности PWM на D4? Я так надолго моргнул что ли...

у меня доступно на D4. О_О а, шо такое?


 LCD                   MK    +---\/---+
|RS(04)|  [-----(D  8) PB0  1|        |40 PA0 (D 24) (A0)-] matrix_x[0]-\
|RW(05)|  [-----(D  9) PB1  2|        |39 PA1 (D 25) (A1)-] matrix_x[1]  \
|E (06)|  [-----(D 10) PB2  3|        |38 PA2 (D 26) (A2)-] matrix_x[2]   \
|D4(11)|  [--PWM(D 11) PB3  4|        |37 PA3 (D 27) (A3)-] matrix_x[3]    \_matrix 5x4
|D5(12)|  [-----(D 12) PB4  5|        |36 PA4 (D 28) (A4)-] matrix_y[0]    /|
|D6(13)|  [-----(D 13) PB5  6|        |35 PA5 (D 29) (A5)-] matrix_y[1]   / |
|D7(14)|  [-----(D 14) PB6  7|        |34 PA6 (D 30) (A6)-] matrix_y[2]  /  |
GND       [-----(D 15) PB7  8|        |33 PA7 (D 31) (A7)-] matrix_y[3]-/   |
                     RESET  9|        |32 AREF                              |
                       VCC 10|        |31 GND                               |
                       GND 11|        |30 AVCC                              |
             12MHz_/-XTAL2 12|        |29 PC7 (D 23)------] TOSC2-\_32768Hz |
                   \-XTAL1 13|        |28 PC6 (D 22)------] TOSC1-/        /
        * [->-RX(D  0) PD0 14|        |27 PC5 (D 21)------] matrix_x[4]---/
        * [-<-TX(D  1) PD1 15|        |26 PC4 (D 20)------] matrix_x[*]
USB D+SYNC[-INT0(D  2) PD2 16|        |25 PC3 (D 19)------] *
SHIFT     [-INT1(D  3) PD3 17|        |24 PC2 (D 18)------] AD
LED_01    [--PWM(D  4) PD4 18|        |23 PC1 (D 17)SDA---] *
LED_03    [--PWM(D  5) PD5 19|        |22 PC0 (D 16)SCL---] *
USB D-    [-----(D  6) PD6 20|        |21 PD7 (D  7)PWM-T2] BUTTON_00 (no PWM or 32768Hz)
                             +--------+

 

sadman41
Offline
Зарегистрирован: 19.10.2016

У тебя вообще вон кварц 12мГц на подделке какой-то, так что не умничай ))

https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/ -> On most Arduino boards (those with the ATmega168 or ATmega328P), this function works on pins 3, 5, 6, 9, 10, and 11. 

Подозреваю, что речь идет о какой-то стандартной Arduino board.

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

sadman41 пишет:

У тебя вообще вон кварц на 12мГц, так что не умничай ))

у меня, вообще-то, там переключается и на 24 мегагерца. О_О

*от подделки слышу - честный USBaspLoader

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

sadman41 пишет:

А когда астрологи объявили неделю доступности PWM на D4? Я так надолго моргнул что ли...

Точно, спасибо. Был самый конец занятия, особо вникать было некогда.