Приветствую! Столкнулся недавно с такой проблемой - не работают элементарнейшие функции PWM для включения двух и более светодиодов одновременно. Не понимаю в чём дело и как заставить Ардуино работать нормально. Ранее все выходы PWM работали нормально и каждому отдельному светодиоду можно было назначить разную яркость одновременно. А сейчас если я обозначаю в программе два светодиода, независимо от порта, по факту включается только один.
Если обоим задать одинаковую яркость, тогда включатся оба. А если поменять значение на одном из них на единицу больше или меньше, то всё, этот один перестанет работать. Код прикреплю ниже, он реально элементарнейший, но не работает. Если задавать нижнему (LED_white) светодиоду яркость выше, чем верхнему (LED_blue), то почему-то LED_blue начинает работать на той яркости, которая была задана LED_white. А этот самый LED_white в свою очередь не работает совсем. Это ну очень странно...
Однажды мне при загрузке скетча выдало вот такую ошибку:
java.io.IOException: jssc.SerialPortException: Port name - COM5; Method name - setEventsMask(); Exception type - Can't set mask.
at processing.app.Serial.dispose(Serial.java:166)
at processing.app.SerialMonitor.close(SerialMonitor.java:145)
at processing.app.AbstractMonitor.suspend(AbstractMonitor.java:113)
at processing.app.Editor$UploadHandler.run(Editor.java:2041)
at java.lang.Thread.run(Thread.java:748)
Caused by: jssc.SerialPortException: Port name - COM5; Method name - setEventsMask(); Exception type - Can't set mask.
at jssc.SerialPort.setEventsMask(SerialPort.java:279)
at jssc.SerialPort.removeEventListener(SerialPort.java:1064)
at jssc.SerialPort.closePort(SerialPort.java:1090)
at processing.app.Serial.dispose(Serial.java:163)
... 4 more
Также возможно этому предшествовало то, что раньше я подключал дисплей Nextion через порт Serial2. Именно при работе с ним, в коде, я заметил, что функция analogWrite() не работает. А когда написал код для светодиодов отдельно, то и вовсе в этом убедился. То есть если в коде используется более одной команды analogWrite(), вторая и последующие не работают. Ещё хочу заметить, что через функцию digitalWrite() все PWM порты работают. В чём может быть проблема? Может плата физически как-то подпортилась?
код:
Если обоим задать одинаковую яркость, тогда включатся оба. А если поменять значение на одном из них на единицу больше или меньше, то всё, этот один перестанет работать. Код прикреплю ниже, он реально элементарнейший, но не работает. Если задавать нижнему (LED_white) светодиоду яркость выше, чем верхнему (LED_blue), то почему-то LED_blue начинает работать на той яркости, которая была задана LED_white. А этот самый LED_white в свою очередь не работает совсем. Это ну очень странно...
Однажды мне при загрузке скетча выдало вот такую ошибку:
java.io.IOException: jssc.SerialPortException: Port name - COM5; Method name - setEventsMask(); Exception type - Can't set mask.
at processing.app.Serial.dispose(Serial.java:166)
at processing.app.SerialMonitor.close(SerialMonitor.java:145)
at processing.app.AbstractMonitor.suspend(AbstractMonitor.java:113)
at processing.app.Editor$UploadHandler.run(Editor.java:2041)
at java.lang.Thread.run(Thread.java:748)
Caused by: jssc.SerialPortException: Port name - COM5; Method name - setEventsMask(); Exception type - Can't set mask.
at jssc.SerialPort.setEventsMask(SerialPort.java:279)
at jssc.SerialPort.removeEventListener(SerialPort.java:1064)
at jssc.SerialPort.closePort(SerialPort.java:1090)
at processing.app.Serial.dispose(Serial.java:163)
... 4 more
Также возможно этому предшествовало то, что раньше я подключал дисплей Nextion через порт Serial2. Именно при работе с ним, в коде, я заметил, что функция analogWrite() не работает. А когда написал код для светодиодов отдельно, то и вовсе в этом убедился. То есть если в коде используется более одной команды analogWrite(), вторая и последующие не работают. Ещё хочу заметить, что через функцию digitalWrite() все PWM порты работают. В чём может быть проблема? Может плата физически как-то подпортилась?
код:
C++:
int LED_blue = 2; //синий
int LED_white = 3;//белый
void setup() {
pinMode(LED_blue, OUTPUT);
pinMode(LED_white, OUTPUT);
}
void loop() {
analogWrite(LED_blue, 10);
analogWrite(LED_white, 2);
}