Провожу эксперименты с Arduino и решил замучать цикл while (вместо loop). Задал условие, при котором должен срабатывать цикл, но вместо срабатывания светодиод просто загорается и всё. Вот код:
int main() {
int i = 0;
DDRB = B00100000;
while (i < 200)
{
PORTB |= B00100000;
delay(1000);
PORTB &= B00000000;
delay(1000);
i++;
}
}
Может я туплю, или у компилятора мозги поплыли?
Цикл while()
работает, в данном случае не работает delay()
, а чтобы оный заработал (как и прочие подобные arduino'вские функции) надо сначала инициализировать саму arduino'вскую библиотеку с помощью init()
.
int main() {
int i = 0;
init();
DDRB = B00100000;
while (i < 200)
{
PORTB |= B00100000;
delay(1000);
PORTB &= ~B00100000;
delay(1000);
i++;
}
}
Альтернативой будет написать свою реализацию delay()
с использованием активного ожидания или же таймера.
ЗЫ: К данной проблеме не относится, но если уж чисто включаешь пин, то стоит его так же чисто и выключать:
PORTB &= ~B00100000;
Работать напрямую с регистрами порта - не очень хорошая идея.
Попробуйте сделать через функции: pinMode, digitalWrite
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как записать даные из значения переменной в файл txt?
Пытаюсь сделать возведение матрицы в степеньЗнаю, как выглядит умножение матриц (возведение в квадрат):
Создаю AlertDialog следующим способом: