Народ! нужна ваша помощь. Осваиваю порты ввода/вывода. Написал программку для проверки: void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: Serial.begin(115200); long val = Serial.parseInt(); if ( val < 4) { DDRB = B00000000; //устанавливаем 13 и 12 пин на вход PORTB = B00000000; // z состояние } if(val >= 4){ DDRB = B11000000; //устанавливаем 13 на вход и 12 пин на выход PORTB = B11000000; //1 на выходе } } Не понимаю, можно ли в программе переключать DDRB с входа на выход по условию? И если залить эту программу в ардуинку, то при посылки значения больше 4 светодиод L (pin 13) горит пару секунду и гаснет,а задумывал чтобы он горел постоянно или гас при значении меньше 4.
Может вам рановато в такой низкий уровень лезть? Научитесь хоть просто ардуино программировать. В таком маленьком коде две логические ошибки, и оформлено криво. А проблема в том, что parseInt возвращает 0 по таймауту.
Рано это точно. Разобрался как зажигать светодиод и теперь хочу разобраться с портами, так как нужно переключать одну ножку в z состояние. А какие логические ошибки?
Вообще правильным направлением идет автор. Вот только поспешил не изучив синтаксис. DDRB = 0b00000000; //устанавливаем 13 и 12 пин на вход так правильно... и в этом случае ты управляешь не пином а всем портом, что порой чревато DDRB&=~(1<<6|1<<7); так ты обнуляешь 7и8 пин. http://microsin.net/programming/avr/accessing-avr-ports-with-winavr-gcc.html тут читай.