Почему этот код не работает?
Поэтому я пытаюсь использовать манипулирование портом, чтобы включить светодиоды, но мне нужно использовать манипулирование портом по определенным причинам.
//22-29PORTA (0x01-0x80)
//30-37PORTC (0x80-0x01)
//38-45PORTD (0x80-0x01)
void setup(){
PORTA = B0000000; //29--->22
PORTC = B0000000; //37--->30
PORTD = B0000000; //45--->38
}
void loop(){
PORTA = B1000100;
PORTC = B0101000;
PORTD = B0000010;
delay(1000);
PORTA = B1010000;
PORTC = B0001010;
PORTD = B0100000;
delay(1000);
PORTA = B0010100;
PORTC = B0100010;
PORTD = B0001000;
delay(1000);
}```
Heres the code for Arduino Mega 2560
@Hamza, 👍0
1 ответ
▲ 2
Сначала необходимо настроить порты на вывод, прежде чем вы сможете их использовать.
Для этого используются регистры DDRx (направление данных). Ваш код должен выглядеть так:
//22-29PORTA (0x01-0x80)
//30-37PORTC (0x80-0x01)
//38-45PORTD (0x80-0x01)
void setup(){
// Set the pins all to output
DDRA = 0xFF;
DDRC = 0xFF;
DDRD = 0xFF;
PORTA = B0000000; //29--->22
PORTC = B0000000; //37--->30
PORTD = B0000000; //45--->38
}
void loop(){
PORTA = B1000100;
PORTC = B0101000;
PORTD = B0000010;
delay(1000);
PORTA = B1010000;
PORTC = B0001010;
PORTD = B0100000;
delay(1000);
PORTA = B0010100;
PORTC = B0100010;
PORTD = B0001000;
delay(1000);
}
Подробнее о прямом управлении портами можно прочитать здесь.
,
@Majenko
Смотрите также:
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора