Ардуино висит. Не уверен, что проблема с программным или аппаратным обеспечением
Я пытаюсь запустить очень простую программу, чтобы свечение светодиодов определенным образом, я подключил 9 светодиодов, чтобы аналогичным образом или цифровой выводы, 2 до 10, через 220 Ом резисторы; когда я бегу программа висит в Arduino через некоторое время интервала и светодиодов гаснет, не уверен, что это аппаратная проблема или какая-то ошибка в программе/коде.
Вот код:
int outGPIOsarr[9] = {2,3,4,5,6,7,8,9,10};
void setup() {
for(int i=0; i<10; i++)
pinMode(outGPIOsarr[i], OUTPUT);
}
void loop() {
for(int i=0; i<10; i++)
{
digitalWrite(outGPIOsarr[i],HIGH);
delay(10);
}
for(int i=0; i<10; i++)
{
digitalWrite(outGPIOsarr[i],LOW);
delay(10);
}
}
@Ashish Jog, 👍2
Обсуждение1 ответ
Лучший ответ:
Это UB!
Индексы в массиве в C++
отсчитываются от 0
;
Итак, последний индекс в вашем массиве из 9
элементов равен 8
.
Все циклы должны заканчиваться на 8
. Ваши остановки в 9
.
Доступ за пределы существующего элемента в массиве является неопределенным поведением - он зависает на микроконтроллере.
Ну что ж, это была досадная ошибка, спасибо, что указали >_<, @Ashish Jog
и OP не может удалить вопрос, если на него есть ответ, поддержанный голосованием, @Juraj
Но почему эта тема должна быть удалена?, @gbg
поскольку вопрос не касается arduino, это общий вопрос программирования, поэтому здесь он не по теме ... любые ответы также не по теме здесь, @jsotola
Я не согласен. Причина в том, что ОП не знает, что вызывает зависание - неправильная прошивка или неправильное оборудование. Итак, чтобы отметить вопрос как не относящийся к теме, вы должны буквально ответить на вопрос., @gbg
https://arduino.meta.stackexchange.com/questions/2667/trivial-questions-must-be-off-topic, @Juraj
OP хотел бы удалить этот вопрос, потому что это "досадная ошибка", и если бы она не была закрыта, при таком подсчете голосов это был бы "Горячий сетевой вопрос", представляющий Arduino SE в правой части каждой страницы SE., @Juraj
- Несколько условий оператора if
- Светодиоды: разница между общим анодом и общим катодом
- Остановить мигание светодиодов
- Интеграция 2 кнопок для включения и выключения светодиода.
- Управление цифровой адресной светодиодной лентой RGB 12 В с помощью Arduino
- Код Arduino для управления 4 светодиодами с 4 кнопок
- Нужен ли подтягивающий/понижающий резистор для цепи светодиода кнопки?
- Мигните светодиодом 5 раз с помощью цикла for
Что-нибудь горячее? Попробуйте использовать более высокие значения резисторов (470 или даже 1 К), вы получаете больше допустимых усилителей от 328P (IIRC 200 мА)., @Mat
@Mat , ничего не становится жарче , я проверил это, я заметил одну вещь: когда я меняю первый аргумент digitalwrite с outGPIOsarr[i] на соответствующий контакт и меняю цикл с 2 на 10, код работает нормально без проблем ! Но я не могу найти за этим веских доводов !?, @Ashish Jog